From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 4F8FC385661F for ; Thu, 8 Jun 2023 18:57:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4F8FC385661F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1686250677; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type; bh=ChLPfc1ulCrVljqwB94nmcV9MhDDK7RdwYOYqGH8MC8=; b=bQyfu8ZbILetXrgAQDE3IGxQAYrUaxEUR8xcacQ6/M3LG84G08NJ9y4abV8Mvi+5Eb0Ny0 s7ATbL7PIDgkcIfUSp+AHG+RKIMyjWFfO3SfZrsAJyYO1oW+Njee1W4WKWCvVET3ljEId7 sTZdk/1BbLTjF4lH1LdN1zNQ3lckQq0= Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-519-KlmDDcQFOLOrW-1VJfmTgw-1; Thu, 08 Jun 2023 14:57:53 -0400 X-MC-Unique: KlmDDcQFOLOrW-1VJfmTgw-1 Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-3f80f8e5eb1so12208311cf.1 for ; Thu, 08 Jun 2023 11:57:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686250672; x=1688842672; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=EG4bjqXvtjK+cACk8f8WyqAO2LSSg+gdTi0JFbN0Vw4=; b=fN/W7nGrzr2q8LirlbcAU1+NTLbEqq4npP4Sq6TN6qHhPrqsQVlzw2+ON13H35XR/u 9ktOmx7MCoap1vuV3KapmlI4LeEWe1Q9S+XXpGG47Sbl9HYdBSBRS3rCFRtITPvuZLxr cEmULoj+ipnm4owX4jcyGrgHN0RiMJLS5IRrzLonZ2OKe8+NTAehsIL1IYWbc7eAM/CS 0FguakGbYKikVBqtwTXfw/tbYyGGgExrjw7L4x6nmP6bVhxhYO03OJA218Tw5RRAshTZ 950W5a/pC8k4+WyBJvFy3vmkHLfkkrK3hogQiarDaNlzlSKn8Kv8vDBY9gOl7Ai2vfp2 2+hQ== X-Gm-Message-State: AC+VfDzVfZybF+F7w3e5Jm+txPonquaAta+s7U3aPLeIM7Gsdw95TmIi jlLTo7XjVmsrB9YYlc2x/GE8gN3z4FQfxGgL0i44ETraNUb4BXVKMDv5/4KS38oWldhBowyKvnW gEa8qQP8vaDRFAF903McMAookm8R4BbpcU+IKgP+O+rKuOg5xXuOGA6ENGKO3USN1Eby7OKf8LX U0Wg== X-Received: by 2002:ac8:5c05:0:b0:3f9:adc9:4785 with SMTP id i5-20020ac85c05000000b003f9adc94785mr8170670qti.51.1686250672479; Thu, 08 Jun 2023 11:57:52 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6+dPZi1rn22pL+k4b6R/JlRxRcY4sLad86Z0rE8L8hvUf9OO/6wn41zogvqts4sXXQTUHVTw== X-Received: by 2002:ac8:5c05:0:b0:3f9:adc9:4785 with SMTP id i5-20020ac85c05000000b003f9adc94785mr8170651qti.51.1686250672142; Thu, 08 Jun 2023 11:57:52 -0700 (PDT) Received: from ?IPV6:2607:fea8:51df:4200::ca58? ([2607:fea8:51df:4200::ca58]) by smtp.gmail.com with ESMTPSA id o16-20020a05622a009000b003ef2c959d1bsm548861qtw.67.2023.06.08.11.57.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 08 Jun 2023 11:57:51 -0700 (PDT) Message-ID: Date: Thu, 8 Jun 2023 14:57:50 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 To: gcc-patches Cc: "hernandez, aldy" From: Andrew MacLeod Subject: [COMMITTED 3/4] Unify range_operators to one class. X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------F2j0ZCWF5aftqZ2rD94dkqfr" Content-Language: en-US X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------F2j0ZCWF5aftqZ2rD94dkqfr Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Range_operator and range_operator_float are 2 different classes, which was not the original intent. This makes generalized dispatch to the appropriate function more difficult.  The distinction between what is a float operator and what is an integral operator also blurs when some methods have multiple types.  ie, casts : INT = FLOAT and FLOAT = INT, or other mixed operations like INT = FLOAT < FLOAT This patch unifies all possible invocation patterns in one range_operator class. All the float operators now inherit from range_operator, and this allows the float table to use the general range_op_table class instead of re-implementing another kind of table.  THis paves the way for the next patch which provides generalized dispatch for the various routines from a VRANGE. There is little functional difference after this patch. Bootstraps on x86_64-pc-linux-gnu with no regressions.  Pushed. Andrew --------------F2j0ZCWF5aftqZ2rD94dkqfr Content-Type: text/x-patch; charset=UTF-8; name="0003-Unify-range_operators-to-one-class.patch" Content-Disposition: attachment; filename="0003-Unify-range_operators-to-one-class.patch" Content-Transfer-Encoding: base64 RnJvbSBlOTI1MTE5ZDUyMGFjMTA2NzRlZDQyZmFmMTQ5NTVhYWYxMzBjMDNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgTWFjTGVvZCA8YW1hY2xlb2RAcmVkaGF0LmNvbT4K RGF0ZTogV2VkLCAzMSBNYXkgMjAyMyAxMjozMTo1MyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMy80 XSBVbmlmeSByYW5nZV9vcGVyYXRvcnMgdG8gb25lIGNsYXNzLgoKUmFuZ2Vfb3BlcmF0b3IgYW5k IHJhbmdlX29wZXJhdG9yX2Zsb2F0IGFyZSAyIGRpZmZlcmVudCBjbGFzc2VzLCBtYWtpbmcKZ2Vu ZXJhbGl6ZWQgZGlzcGF0Y2ggZGlmZmljdWx0LiAgVGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gd2hh dCBpcyBhIGZsb2F0Cm9wZXJhdG9yIGFuZCB3aGF0IGlzIGFuIGludGVncmFsIG9wZXJhdG9yIGFs c28gYmx1cnMgd2hlbiBzb21lIG1ldGhvZHMKaGF2ZSBtdWx0aXBsZSB0eXBlcy4gIGllLCBjYXN0 cyA6IElOVCA9IEZMT0FUIGFuZCBGTE9BVCA9IElOVAoKVGhpcyBwYXRjaCB1bmlmaWVzIGFsbCBw b3NzaWJsZSBpbnZvY2F0aW9uIHBhdHRlcm5zIGluIG9uZSBjbGFzcywgYW5kCnN3aXRjaGVzIHRo ZSBmbG9hdCB0YWJsZSB0byB1c2UgdGhlIGdlbmVyYWwgcmFuZ2Vfb3BfdGFibGUuCgoJKiBnaW1w bGUtcmFuZ2Utb3AuY2MgKGNmbl9jb25zdGFudF9mbG9hdF9wKTogQ2hhbmdlIGJhc2UgY2xhc3Mu CgkoY2ZuX3Bhc3NfdGhyb3VnaF9hcmcxKTogQWRqdXN0IHVzaW5nIHN0YXRlbWVubXQuCgkoY2Zu X3NpZ25iaXQpOiBDaGFuZ2UgYmFzZSBjbGFzcywgYWRqdXN0IHVzaW5nIHN0YXRlbWVudC4KCShj Zm5fY29weXNpZ24pOiBEaXR0by4KCShjZm5fc3FydCk6IERpdHRvLgoJKGNmbl9zaW5jb3MpOiBE aXR0by4KCSogcmFuZ2Utb3AtZmxvYXQuY2MgKGZvbGRfcmFuZ2UpOiBDaGFuZ2UgY2xhc3MgdG8g cmFuZ2Vfb3BlcmF0b3IuCgkocnZfZm9sZCk6IERpdHRvLgoJKG9wMV9yYW5nZSk6IERpdHRvCgko b3AyX3JhbmdlKTogRGl0dG8KCShsaHNfb3AxX3JlbGF0aW9uKTogRGl0dG8uCgkobGhzX29wMl9y ZWxhdGlvbik6IERpdHRvLgoJKG9wMV9vcDJfcmVsYXRpb24pOiBEaXR0by4KCShmb3BlcmF0b3Jf Kik6IERpdHRvLgoJKGNsYXNzIGZsb2F0X3RhYmxlKTogTmV3LiAgSW5oZXJpdCBmcm9tIHJhbmdl X29wX3RhYmxlLgoJKGZsb2F0aW5nX3RyZWVfdGFibGUpIENoYW5nZSB0byByYW5nZV9vcF90YWJs ZSBwb2ludGVyLgoJKGNsYXNzIGZsb2F0aW5nX29wX3RhYmxlKTogRGVsZXRlLgoJKiByYW5nZS1v cC5jYyAob3BlcmF0b3JfZXF1YWwpOiBBZGp1c3QgdXNpbmcgc3RhdGVtZW50LgoJKG9wZXJhdG9y X25vdF9lcXVhbCk6IERpdHRvLgoJKG9wZXJhdG9yX2x0LCBvcGVyYXRvcl9sZSwgb3BlcmF0b3Jf Z3QsIG9wZXJhdG9yX2dlKTogRGl0dG8uCgkob3BlcmF0b3JfbWludXMsIG9wZXJhdG9yX2Nhc3Qp OiBEaXR0by4KCShvcGVyYXRvcl9iaXR3aXNlX2FuZCwgcG9pbnRlcl9wbHVzX29wZXJhdG9yKTog RGl0dG8uCgkoZ2V0X2Zsb2F0X2hhbmRsZSk6IENoYW5nZSByZXR1cm4gdHlwZS4KCSogcmFuZ2Ut b3AuaCAocmFuZ2Vfb3BlcmF0b3JfZmxvYXQpOiBEZWxldGUuICBSZWxvY2F0ZSBhbGwgbWV0aG9k cwoJaW50byBjbGFzcyByYW5nZV9vcGVyYXRvci4KCShyYW5nZV9vcF9oYW5kbGVyOjptX2Zsb2F0 KTogQ2hhbmdlIHR5cGUgdG8gcmFuZ2Vfb3BlcmF0b3IuCgkoZmxvYXRpbmdfb3BfdGFibGUpOiBE ZWxldGUuCgkoZmxvYXRpbmdfdHJlZV90YWJsZSk6IENoYW5nZSB0eXBlLgotLS0KIGdjYy9naW1w bGUtcmFuZ2Utb3AuY2MgfCAgMjcgKystLS0KIGdjYy9yYW5nZS1vcC1mbG9hdC5jYyAgfCAyMjIg KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGdjYy9yYW5nZS1vcC5j YyAgICAgICAgfCAgMTIgKystCiBnY2MvcmFuZ2Utb3AuaCAgICAgICAgIHwgMTI0ICsrKysrKysr KysrLS0tLS0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDE4MyBpbnNlcnRpb25zKCspLCAyMDIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2NjL2dpbXBsZS1yYW5nZS1vcC5jYyBiL2djYy9n aW1wbGUtcmFuZ2Utb3AuY2MKaW5kZXggNTljNDdlMjA3NGQuLjI5M2Q3NjQwMmUxIDEwMDY0NAot LS0gYS9nY2MvZ2ltcGxlLXJhbmdlLW9wLmNjCisrKyBiL2djYy9naW1wbGUtcmFuZ2Utb3AuY2MK QEAgLTI2OCwxMCArMjY4LDEwIEBAIGdpbXBsZV9yYW5nZV9vcF9oYW5kbGVyOjpjYWxjX29wMiAo dnJhbmdlICZyLCBjb25zdCB2cmFuZ2UgJmxoc19yYW5nZSwKIC8vIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8v IEltcGxlbWVudCByYW5nZSBvcGVyYXRvciBmb3IgZmxvYXQgQ0ZOX0JVSUxUX0lOX0NPTlNUQU5U X1AuCi1jbGFzcyBjZm5fY29uc3RhbnRfZmxvYXRfcCA6IHB1YmxpYyByYW5nZV9vcGVyYXRvcl9m bG9hdAorY2xhc3MgY2ZuX2NvbnN0YW50X2Zsb2F0X3AgOiBwdWJsaWMgcmFuZ2Vfb3BlcmF0b3IK IHsKIHB1YmxpYzoKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6OmZvbGRfcmFuZ2U7Cisg IHVzaW5nIHJhbmdlX29wZXJhdG9yOjpmb2xkX3JhbmdlOwogICB2aXJ0dWFsIGJvb2wgZm9sZF9y YW5nZSAoaXJhbmdlICZyLCB0cmVlIHR5cGUsIGNvbnN0IGZyYW5nZSAmbGgsCiAJCQkgICBjb25z dCBpcmFuZ2UgJiwgcmVsYXRpb25fdHJpbykgY29uc3QKICAgewpAQCAtMzE5LDYgKzMxOSw3IEBA IGNsYXNzIGNmbl9wYXNzX3Rocm91Z2hfYXJnMSA6IHB1YmxpYyByYW5nZV9vcGVyYXRvcgogewog cHVibGljOgogICB1c2luZyByYW5nZV9vcGVyYXRvcjo6Zm9sZF9yYW5nZTsKKyAgdXNpbmcgcmFu Z2Vfb3BlcmF0b3I6Om9wMV9yYW5nZTsKICAgdmlydHVhbCBib29sIGZvbGRfcmFuZ2UgKGlyYW5n ZSAmciwgdHJlZSwgY29uc3QgaXJhbmdlICZsaCwKIAkJCSAgIGNvbnN0IGlyYW5nZSAmLCByZWxh dGlvbl90cmlvKSBjb25zdAogICB7CkBAIC0zMzQsMTEgKzMzNSwxMSBAQCBwdWJsaWM6CiB9IG9w X2Nmbl9wYXNzX3Rocm91Z2hfYXJnMTsKIAogLy8gSW1wbGVtZW50IHJhbmdlIG9wZXJhdG9yIGZv ciBDRk5fQlVJTFRfSU5fU0lHTkJJVC4KLWNsYXNzIGNmbl9zaWduYml0IDogcHVibGljIHJhbmdl X29wZXJhdG9yX2Zsb2F0CitjbGFzcyBjZm5fc2lnbmJpdCA6IHB1YmxpYyByYW5nZV9vcGVyYXRv cgogewogcHVibGljOgotICB1c2luZyByYW5nZV9vcGVyYXRvcl9mbG9hdDo6Zm9sZF9yYW5nZTsK LSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6Om9wMV9yYW5nZTsKKyAgdXNpbmcgcmFuZ2Vf b3BlcmF0b3I6OmZvbGRfcmFuZ2U7CisgIHVzaW5nIHJhbmdlX29wZXJhdG9yOjpvcDFfcmFuZ2U7 CiAgIHZpcnR1YWwgYm9vbCBmb2xkX3JhbmdlIChpcmFuZ2UgJnIsIHRyZWUgdHlwZSwgY29uc3Qg ZnJhbmdlICZsaCwKIAkJCSAgIGNvbnN0IGlyYW5nZSAmLCByZWxhdGlvbl90cmlvKSBjb25zdCBv dmVycmlkZQogICB7CkBAIC0zNzMsMTAgKzM3NCwxMCBAQCBwdWJsaWM6CiB9IG9wX2Nmbl9zaWdu Yml0OwogCiAvLyBJbXBsZW1lbnQgcmFuZ2Ugb3BlcmF0b3IgZm9yIENGTl9CVUlMVF9JTl9DT1BZ U0lHTgotY2xhc3MgY2ZuX2NvcHlzaWduIDogcHVibGljIHJhbmdlX29wZXJhdG9yX2Zsb2F0Citj bGFzcyBjZm5fY29weXNpZ24gOiBwdWJsaWMgcmFuZ2Vfb3BlcmF0b3IKIHsKIHB1YmxpYzoKLSAg dXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6OmZvbGRfcmFuZ2U7CisgIHVzaW5nIHJhbmdlX29w ZXJhdG9yOjpmb2xkX3JhbmdlOwogICB2aXJ0dWFsIGJvb2wgZm9sZF9yYW5nZSAoZnJhbmdlICZy LCB0cmVlIHR5cGUsIGNvbnN0IGZyYW5nZSAmbGgsCiAJCQkgICBjb25zdCBmcmFuZ2UgJnJoLCBy ZWxhdGlvbl90cmlvKSBjb25zdCBvdmVycmlkZQogICB7CkBAIC00NjQsMTEgKzQ2NSwxMSBAQCBm cmFuZ2VfbXBmcl9hcmcxIChSRUFMX1ZBTFVFX1RZUEUgKnJlc19sb3csIFJFQUxfVkFMVUVfVFlQ RSAqcmVzX2hpZ2gsCiAgIHJldHVybiB0cnVlOwogfQogCi1jbGFzcyBjZm5fc3FydCA6IHB1Ymxp YyByYW5nZV9vcGVyYXRvcl9mbG9hdAorY2xhc3MgY2ZuX3NxcnQgOiBwdWJsaWMgcmFuZ2Vfb3Bl cmF0b3IKIHsKIHB1YmxpYzoKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6OmZvbGRfcmFu Z2U7Ci0gIHVzaW5nIHJhbmdlX29wZXJhdG9yX2Zsb2F0OjpvcDFfcmFuZ2U7CisgIHVzaW5nIHJh bmdlX29wZXJhdG9yOjpmb2xkX3JhbmdlOworICB1c2luZyByYW5nZV9vcGVyYXRvcjo6b3AxX3Jh bmdlOwogICB2aXJ0dWFsIGJvb2wgZm9sZF9yYW5nZSAoZnJhbmdlICZyLCB0cmVlIHR5cGUsCiAJ CQkgICBjb25zdCBmcmFuZ2UgJmxoLCBjb25zdCBmcmFuZ2UgJiwKIAkJCSAgIHJlbGF0aW9uX3Ry aW8pIGNvbnN0IGZpbmFsIG92ZXJyaWRlCkBAIC01OTksMTEgKzYwMCwxMSBAQCBwdWJsaWM6CiAg IH0KIH0gb3BfY2ZuX3NxcnQ7CiAKLWNsYXNzIGNmbl9zaW5jb3MgOiBwdWJsaWMgcmFuZ2Vfb3Bl cmF0b3JfZmxvYXQKK2NsYXNzIGNmbl9zaW5jb3MgOiBwdWJsaWMgcmFuZ2Vfb3BlcmF0b3IKIHsK IHB1YmxpYzoKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6OmZvbGRfcmFuZ2U7Ci0gIHVz aW5nIHJhbmdlX29wZXJhdG9yX2Zsb2F0OjpvcDFfcmFuZ2U7CisgIHVzaW5nIHJhbmdlX29wZXJh dG9yOjpmb2xkX3JhbmdlOworICB1c2luZyByYW5nZV9vcGVyYXRvcjo6b3AxX3JhbmdlOwogICBj Zm5fc2luY29zIChjb21iaW5lZF9mbiBjZm4pIHsgbV9jZm4gPSBjZm47IH0KICAgdmlydHVhbCBi b29sIGZvbGRfcmFuZ2UgKGZyYW5nZSAmciwgdHJlZSB0eXBlLAogCQkJICAgY29uc3QgZnJhbmdl ICZsaCwgY29uc3QgZnJhbmdlICYsCmRpZmYgLS1naXQgYS9nY2MvcmFuZ2Utb3AtZmxvYXQuY2Mg Yi9nY2MvcmFuZ2Utb3AtZmxvYXQuY2MKaW5kZXggYWY1OThiNjBhNzkuLmJiMTBhY2NkNzhmIDEw MDY0NAotLS0gYS9nY2MvcmFuZ2Utb3AtZmxvYXQuY2MKKysrIGIvZ2NjL3JhbmdlLW9wLWZsb2F0 LmNjCkBAIC00OSw3ICs0OSw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlO RzMuICBJZiBub3Qgc2VlCiAvLyBEZWZhdWx0IGRlZmluaXRpb25zIGZvciBmbG9hdGluZyBwb2lu dCBvcGVyYXRvcnMuCiAKIGJvb2wKLXJhbmdlX29wZXJhdG9yX2Zsb2F0Ojpmb2xkX3JhbmdlIChm cmFuZ2UgJnIsIHRyZWUgdHlwZSwKK3JhbmdlX29wZXJhdG9yOjpmb2xkX3JhbmdlIChmcmFuZ2Ug JnIsIHRyZWUgdHlwZSwKIAkJCQkgIGNvbnN0IGZyYW5nZSAmb3AxLCBjb25zdCBmcmFuZ2UgJm9w MiwKIAkJCQkgIHJlbGF0aW9uX3RyaW8gdHJpbykgY29uc3QKIHsKQEAgLTEyMSw3ICsxMjEsNyBA QCByYW5nZV9vcGVyYXRvcl9mbG9hdDo6Zm9sZF9yYW5nZSAoZnJhbmdlICZyLCB0cmVlIHR5cGUs CiAvLyBNQVlCRV9OQU4gaXMgc2V0IHRvIFRSVUUgaWYsIGluIGFkZGl0aW9uIHRvIGFueSByZXN1 bHQgaW4gTEIgb3IKIC8vIFVCLCB0aGUgZmluYWwgcmFuZ2UgaGFzIHRoZSBwb3NzaWJpbGl0eSBv ZiBhIE5BTi4KIHZvaWQKLXJhbmdlX29wZXJhdG9yX2Zsb2F0Ojpydl9mb2xkIChSRUFMX1ZBTFVF X1RZUEUgJmxiLAorcmFuZ2Vfb3BlcmF0b3I6OnJ2X2ZvbGQgKFJFQUxfVkFMVUVfVFlQRSAmbGIs CiAJCQkgICAgICAgUkVBTF9WQUxVRV9UWVBFICZ1YiwKIAkJCSAgICAgICBib29sICZtYXliZV9u YW4sCiAJCQkgICAgICAgdHJlZSB0eXBlIEFUVFJJQlVURV9VTlVTRUQsCkBAIC0xMzcsNyArMTM3 LDcgQEAgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6OnJ2X2ZvbGQgKFJFQUxfVkFMVUVfVFlQRSAmbGIs CiB9CiAKIGJvb2wKLXJhbmdlX29wZXJhdG9yX2Zsb2F0Ojpmb2xkX3JhbmdlIChpcmFuZ2UgJnIg QVRUUklCVVRFX1VOVVNFRCwKK3JhbmdlX29wZXJhdG9yOjpmb2xkX3JhbmdlIChpcmFuZ2UgJnIg QVRUUklCVVRFX1VOVVNFRCwKIAkJCQkgIHRyZWUgdHlwZSBBVFRSSUJVVEVfVU5VU0VELAogCQkJ CSAgY29uc3QgZnJhbmdlICZsaCBBVFRSSUJVVEVfVU5VU0VELAogCQkJCSAgY29uc3QgaXJhbmdl ICZyaCBBVFRSSUJVVEVfVU5VU0VELApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHJhbmdlX29wZXJhdG9y X2Zsb2F0Ojpmb2xkX3JhbmdlIChpcmFuZ2UgJnIgQVRUUklCVVRFX1VOVVNFRCwKIH0KIAogYm9v bAotcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6OmZvbGRfcmFuZ2UgKGlyYW5nZSAmciBBVFRSSUJVVEVf VU5VU0VELAorcmFuZ2Vfb3BlcmF0b3I6OmZvbGRfcmFuZ2UgKGlyYW5nZSAmciBBVFRSSUJVVEVf VU5VU0VELAogCQkJCSAgdHJlZSB0eXBlIEFUVFJJQlVURV9VTlVTRUQsCiAJCQkJICBjb25zdCBm cmFuZ2UgJmxoIEFUVFJJQlVURV9VTlVTRUQsCiAJCQkJICBjb25zdCBmcmFuZ2UgJnJoIEFUVFJJ QlVURV9VTlVTRUQsCkBAIC0xNTcsNyArMTU3LDcgQEAgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6OmZv bGRfcmFuZ2UgKGlyYW5nZSAmciBBVFRSSUJVVEVfVU5VU0VELAogfQogCiBib29sCi1yYW5nZV9v cGVyYXRvcl9mbG9hdDo6b3AxX3JhbmdlIChmcmFuZ2UgJnIgQVRUUklCVVRFX1VOVVNFRCwKK3Jh bmdlX29wZXJhdG9yOjpvcDFfcmFuZ2UgKGZyYW5nZSAmciBBVFRSSUJVVEVfVU5VU0VELAogCQkJ CSB0cmVlIHR5cGUgQVRUUklCVVRFX1VOVVNFRCwKIAkJCQkgY29uc3QgZnJhbmdlICZsaHMgQVRU UklCVVRFX1VOVVNFRCwKIAkJCQkgY29uc3QgZnJhbmdlICZvcDIgQVRUUklCVVRFX1VOVVNFRCwK QEAgLTE2Nyw3ICsxNjcsNyBAQCByYW5nZV9vcGVyYXRvcl9mbG9hdDo6b3AxX3JhbmdlIChmcmFu Z2UgJnIgQVRUUklCVVRFX1VOVVNFRCwKIH0KIAogYm9vbAotcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6 Om9wMV9yYW5nZSAoZnJhbmdlICZyIEFUVFJJQlVURV9VTlVTRUQsCityYW5nZV9vcGVyYXRvcjo6 b3AxX3JhbmdlIChmcmFuZ2UgJnIgQVRUUklCVVRFX1VOVVNFRCwKIAkJCQkgdHJlZSB0eXBlIEFU VFJJQlVURV9VTlVTRUQsCiAJCQkJIGNvbnN0IGlyYW5nZSAmbGhzIEFUVFJJQlVURV9VTlVTRUQs CiAJCQkJIGNvbnN0IGZyYW5nZSAmb3AyIEFUVFJJQlVURV9VTlVTRUQsCkBAIC0xNzcsNyArMTc3 LDcgQEAgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6Om9wMV9yYW5nZSAoZnJhbmdlICZyIEFUVFJJQlVU RV9VTlVTRUQsCiB9CiAKIGJvb2wKLXJhbmdlX29wZXJhdG9yX2Zsb2F0OjpvcDJfcmFuZ2UgKGZy YW5nZSAmciBBVFRSSUJVVEVfVU5VU0VELAorcmFuZ2Vfb3BlcmF0b3I6Om9wMl9yYW5nZSAoZnJh bmdlICZyIEFUVFJJQlVURV9VTlVTRUQsCiAJCQkJIHRyZWUgdHlwZSBBVFRSSUJVVEVfVU5VU0VE LAogCQkJCSBjb25zdCBmcmFuZ2UgJmxocyBBVFRSSUJVVEVfVU5VU0VELAogCQkJCSBjb25zdCBm cmFuZ2UgJm9wMSBBVFRSSUJVVEVfVU5VU0VELApAQCAtMTg3LDcgKzE4Nyw3IEBAIHJhbmdlX29w ZXJhdG9yX2Zsb2F0OjpvcDJfcmFuZ2UgKGZyYW5nZSAmciBBVFRSSUJVVEVfVU5VU0VELAogfQog CiBib29sCi1yYW5nZV9vcGVyYXRvcl9mbG9hdDo6b3AyX3JhbmdlIChmcmFuZ2UgJnIgQVRUUklC VVRFX1VOVVNFRCwKK3JhbmdlX29wZXJhdG9yOjpvcDJfcmFuZ2UgKGZyYW5nZSAmciBBVFRSSUJV VEVfVU5VU0VELAogCQkJCSB0cmVlIHR5cGUgQVRUUklCVVRFX1VOVVNFRCwKIAkJCQkgY29uc3Qg aXJhbmdlICZsaHMgQVRUUklCVVRFX1VOVVNFRCwKIAkJCQkgY29uc3QgZnJhbmdlICZvcDEgQVRU UklCVVRFX1VOVVNFRCwKQEAgLTE5Nyw3ICsxOTcsNyBAQCByYW5nZV9vcGVyYXRvcl9mbG9hdDo6 b3AyX3JhbmdlIChmcmFuZ2UgJnIgQVRUUklCVVRFX1VOVVNFRCwKIH0KIAogcmVsYXRpb25fa2lu ZAotcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6Omxoc19vcDFfcmVsYXRpb24gKGNvbnN0IGZyYW5nZSAm bGhzIEFUVFJJQlVURV9VTlVTRUQsCityYW5nZV9vcGVyYXRvcjo6bGhzX29wMV9yZWxhdGlvbiAo Y29uc3QgZnJhbmdlICZsaHMgQVRUUklCVVRFX1VOVVNFRCwKIAkJCQkJY29uc3QgZnJhbmdlICZv cDEgQVRUUklCVVRFX1VOVVNFRCwKIAkJCQkJY29uc3QgZnJhbmdlICZvcDIgQVRUUklCVVRFX1VO VVNFRCwKIAkJCQkJcmVsYXRpb25fa2luZCkgY29uc3QKQEAgLTIwNiw3ICsyMDYsNyBAQCByYW5n ZV9vcGVyYXRvcl9mbG9hdDo6bGhzX29wMV9yZWxhdGlvbiAoY29uc3QgZnJhbmdlICZsaHMgQVRU UklCVVRFX1VOVVNFRCwKIH0KIAogcmVsYXRpb25fa2luZAotcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6 Omxoc19vcDFfcmVsYXRpb24gKGNvbnN0IGlyYW5nZSAmbGhzIEFUVFJJQlVURV9VTlVTRUQsCity YW5nZV9vcGVyYXRvcjo6bGhzX29wMV9yZWxhdGlvbiAoY29uc3QgaXJhbmdlICZsaHMgQVRUUklC VVRFX1VOVVNFRCwKIAkJCQkJY29uc3QgZnJhbmdlICZvcDEgQVRUUklCVVRFX1VOVVNFRCwKIAkJ CQkJY29uc3QgZnJhbmdlICZvcDIgQVRUUklCVVRFX1VOVVNFRCwKIAkJCQkJcmVsYXRpb25fa2lu ZCkgY29uc3QKQEAgLTIxNSw3ICsyMTUsNyBAQCByYW5nZV9vcGVyYXRvcl9mbG9hdDo6bGhzX29w MV9yZWxhdGlvbiAoY29uc3QgaXJhbmdlICZsaHMgQVRUUklCVVRFX1VOVVNFRCwKIH0KIAogcmVs YXRpb25fa2luZAotcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6Omxoc19vcDJfcmVsYXRpb24gKGNvbnN0 IGlyYW5nZSAmbGhzIEFUVFJJQlVURV9VTlVTRUQsCityYW5nZV9vcGVyYXRvcjo6bGhzX29wMl9y ZWxhdGlvbiAoY29uc3QgaXJhbmdlICZsaHMgQVRUUklCVVRFX1VOVVNFRCwKIAkJCQkJY29uc3Qg ZnJhbmdlICZvcDEgQVRUUklCVVRFX1VOVVNFRCwKIAkJCQkJY29uc3QgZnJhbmdlICZvcDIgQVRU UklCVVRFX1VOVVNFRCwKIAkJCQkJcmVsYXRpb25fa2luZCkgY29uc3QKQEAgLTIyNCw3ICsyMjQs NyBAQCByYW5nZV9vcGVyYXRvcl9mbG9hdDo6bGhzX29wMl9yZWxhdGlvbiAoY29uc3QgaXJhbmdl ICZsaHMgQVRUUklCVVRFX1VOVVNFRCwKIH0KIAogcmVsYXRpb25fa2luZAotcmFuZ2Vfb3BlcmF0 b3JfZmxvYXQ6Omxoc19vcDJfcmVsYXRpb24gKGNvbnN0IGZyYW5nZSAmbGhzIEFUVFJJQlVURV9V TlVTRUQsCityYW5nZV9vcGVyYXRvcjo6bGhzX29wMl9yZWxhdGlvbiAoY29uc3QgZnJhbmdlICZs aHMgQVRUUklCVVRFX1VOVVNFRCwKIAkJCQkJY29uc3QgZnJhbmdlICZvcDEgQVRUUklCVVRFX1VO VVNFRCwKIAkJCQkJY29uc3QgZnJhbmdlICZvcDIgQVRUUklCVVRFX1VOVVNFRCwKIAkJCQkJcmVs YXRpb25fa2luZCkgY29uc3QKQEAgLTIzMywxMyArMjMzLDcgQEAgcmFuZ2Vfb3BlcmF0b3JfZmxv YXQ6Omxoc19vcDJfcmVsYXRpb24gKGNvbnN0IGZyYW5nZSAmbGhzIEFUVFJJQlVURV9VTlVTRUQs CiB9CiAKIHJlbGF0aW9uX2tpbmQKLXJhbmdlX29wZXJhdG9yX2Zsb2F0OjpvcDFfb3AyX3JlbGF0 aW9uIChjb25zdCBpcmFuZ2UgJmxocyBBVFRSSUJVVEVfVU5VU0VEKSBjb25zdAotewotICByZXR1 cm4gVlJFTF9WQVJZSU5HOwotfQotCi1yZWxhdGlvbl9raW5kCi1yYW5nZV9vcGVyYXRvcl9mbG9h dDo6b3AxX29wMl9yZWxhdGlvbiAoY29uc3QgZnJhbmdlICZsaHMgQVRUUklCVVRFX1VOVVNFRCkg Y29uc3QKK3JhbmdlX29wZXJhdG9yOjpvcDFfb3AyX3JlbGF0aW9uIChjb25zdCBmcmFuZ2UgJmxo cyBBVFRSSUJVVEVfVU5VU0VEKSBjb25zdAogewogICByZXR1cm4gVlJFTF9WQVJZSU5HOwogfQpA QCAtNTQ2LDEwICs1NDAsMTAgQEAgYnVpbGRfZ3QgKGZyYW5nZSAmciwgdHJlZSB0eXBlLCBjb25z dCBmcmFuZ2UgJnZhbCkKIH0KIAogCi1jbGFzcyBmb3BlcmF0b3JfaWRlbnRpdHkgOiBwdWJsaWMg cmFuZ2Vfb3BlcmF0b3JfZmxvYXQKK2NsYXNzIGZvcGVyYXRvcl9pZGVudGl0eSA6IHB1YmxpYyBy YW5nZV9vcGVyYXRvcgogewotICB1c2luZyByYW5nZV9vcGVyYXRvcl9mbG9hdDo6Zm9sZF9yYW5n ZTsKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6Om9wMV9yYW5nZTsKKyAgdXNpbmcgcmFu Z2Vfb3BlcmF0b3I6OmZvbGRfcmFuZ2U7CisgIHVzaW5nIHJhbmdlX29wZXJhdG9yOjpvcDFfcmFu Z2U7CiBwdWJsaWM6CiAgIGJvb2wgZm9sZF9yYW5nZSAoZnJhbmdlICZyLCB0cmVlIHR5cGUgQVRU UklCVVRFX1VOVVNFRCwKIAkJICAgY29uc3QgZnJhbmdlICZvcDEsIGNvbnN0IGZyYW5nZSAmb3Ay IEFUVFJJQlVURV9VTlVTRUQsCkBAIC01NjgsMTIgKzU2MiwxMiBAQCBwdWJsaWM6CiBwdWJsaWM6 CiB9IGZvcF9pZGVudGl0eTsKIAotY2xhc3MgZm9wZXJhdG9yX2VxdWFsIDogcHVibGljIHJhbmdl X29wZXJhdG9yX2Zsb2F0CitjbGFzcyBmb3BlcmF0b3JfZXF1YWwgOiBwdWJsaWMgcmFuZ2Vfb3Bl cmF0b3IKIHsKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6OmZvbGRfcmFuZ2U7Ci0gIHVz aW5nIHJhbmdlX29wZXJhdG9yX2Zsb2F0OjpvcDFfcmFuZ2U7Ci0gIHVzaW5nIHJhbmdlX29wZXJh dG9yX2Zsb2F0OjpvcDJfcmFuZ2U7Ci0gIHVzaW5nIHJhbmdlX29wZXJhdG9yX2Zsb2F0OjpvcDFf b3AyX3JlbGF0aW9uOworICB1c2luZyByYW5nZV9vcGVyYXRvcjo6Zm9sZF9yYW5nZTsKKyAgdXNp bmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMV9yYW5nZTsKKyAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9w Ml9yYW5nZTsKKyAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMV9vcDJfcmVsYXRpb247CiBwdWJs aWM6CiAgIGJvb2wgZm9sZF9yYW5nZSAoaXJhbmdlICZyLCB0cmVlIHR5cGUsCiAJCSAgIGNvbnN0 IGZyYW5nZSAmb3AxLCBjb25zdCBmcmFuZ2UgJm9wMiwKQEAgLTY5NywxMSArNjkxLDExIEBAIGZv cGVyYXRvcl9lcXVhbDo6b3AxX3JhbmdlIChmcmFuZ2UgJnIsIHRyZWUgdHlwZSwKICAgcmV0dXJu IHRydWU7CiB9CiAKLWNsYXNzIGZvcGVyYXRvcl9ub3RfZXF1YWwgOiBwdWJsaWMgcmFuZ2Vfb3Bl cmF0b3JfZmxvYXQKK2NsYXNzIGZvcGVyYXRvcl9ub3RfZXF1YWwgOiBwdWJsaWMgcmFuZ2Vfb3Bl cmF0b3IKIHsKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6OmZvbGRfcmFuZ2U7Ci0gIHVz aW5nIHJhbmdlX29wZXJhdG9yX2Zsb2F0OjpvcDFfcmFuZ2U7Ci0gIHVzaW5nIHJhbmdlX29wZXJh dG9yX2Zsb2F0OjpvcDFfb3AyX3JlbGF0aW9uOworICB1c2luZyByYW5nZV9vcGVyYXRvcjo6Zm9s ZF9yYW5nZTsKKyAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMV9yYW5nZTsKKyAgdXNpbmcgcmFu Z2Vfb3BlcmF0b3I6Om9wMV9vcDJfcmVsYXRpb247CiBwdWJsaWM6CiAgIGJvb2wgZm9sZF9yYW5n ZSAoaXJhbmdlICZyLCB0cmVlIHR5cGUsCiAJCSAgIGNvbnN0IGZyYW5nZSAmb3AxLCBjb25zdCBm cmFuZ2UgJm9wMiwKQEAgLTgxOSwxMiArODEzLDEyIEBAIGZvcGVyYXRvcl9ub3RfZXF1YWw6Om9w MV9yYW5nZSAoZnJhbmdlICZyLCB0cmVlIHR5cGUsCiAgIHJldHVybiB0cnVlOwogfQogCi1jbGFz cyBmb3BlcmF0b3JfbHQgOiBwdWJsaWMgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQKK2NsYXNzIGZvcGVy YXRvcl9sdCA6IHB1YmxpYyByYW5nZV9vcGVyYXRvcgogewotICB1c2luZyByYW5nZV9vcGVyYXRv cl9mbG9hdDo6Zm9sZF9yYW5nZTsKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6Om9wMV9y YW5nZTsKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6Om9wMl9yYW5nZTsKLSAgdXNpbmcg cmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6Om9wMV9vcDJfcmVsYXRpb247CisgIHVzaW5nIHJhbmdlX29w ZXJhdG9yOjpmb2xkX3JhbmdlOworICB1c2luZyByYW5nZV9vcGVyYXRvcjo6b3AxX3JhbmdlOwor ICB1c2luZyByYW5nZV9vcGVyYXRvcjo6b3AyX3JhbmdlOworICB1c2luZyByYW5nZV9vcGVyYXRv cjo6b3AxX29wMl9yZWxhdGlvbjsKIHB1YmxpYzoKICAgYm9vbCBmb2xkX3JhbmdlIChpcmFuZ2Ug JnIsIHRyZWUgdHlwZSwKIAkJICAgY29uc3QgZnJhbmdlICZvcDEsIGNvbnN0IGZyYW5nZSAmb3Ay LApAQCAtOTM1LDEyICs5MjksMTIgQEAgZm9wZXJhdG9yX2x0OjpvcDJfcmFuZ2UgKGZyYW5nZSAm ciwKICAgcmV0dXJuIHRydWU7CiB9CiAKLWNsYXNzIGZvcGVyYXRvcl9sZSA6IHB1YmxpYyByYW5n ZV9vcGVyYXRvcl9mbG9hdAorY2xhc3MgZm9wZXJhdG9yX2xlIDogcHVibGljIHJhbmdlX29wZXJh dG9yCiB7Ci0gIHVzaW5nIHJhbmdlX29wZXJhdG9yX2Zsb2F0Ojpmb2xkX3JhbmdlOwotICB1c2lu ZyByYW5nZV9vcGVyYXRvcl9mbG9hdDo6b3AxX3JhbmdlOwotICB1c2luZyByYW5nZV9vcGVyYXRv cl9mbG9hdDo6b3AyX3JhbmdlOwotICB1c2luZyByYW5nZV9vcGVyYXRvcl9mbG9hdDo6b3AxX29w Ml9yZWxhdGlvbjsKKyAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6OmZvbGRfcmFuZ2U7CisgIHVzaW5n IHJhbmdlX29wZXJhdG9yOjpvcDFfcmFuZ2U7CisgIHVzaW5nIHJhbmdlX29wZXJhdG9yOjpvcDJf cmFuZ2U7CisgIHVzaW5nIHJhbmdlX29wZXJhdG9yOjpvcDFfb3AyX3JlbGF0aW9uOwogcHVibGlj OgogICBib29sIGZvbGRfcmFuZ2UgKGlyYW5nZSAmciwgdHJlZSB0eXBlLAogCQkgICBjb25zdCBm cmFuZ2UgJm9wMSwgY29uc3QgZnJhbmdlICZvcDIsCkBAIC0xMDQ1LDEyICsxMDM5LDEyIEBAIGZv cGVyYXRvcl9sZTo6b3AyX3JhbmdlIChmcmFuZ2UgJnIsCiAgIHJldHVybiB0cnVlOwogfQogCi1j bGFzcyBmb3BlcmF0b3JfZ3QgOiBwdWJsaWMgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQKK2NsYXNzIGZv cGVyYXRvcl9ndCA6IHB1YmxpYyByYW5nZV9vcGVyYXRvcgogewotICB1c2luZyByYW5nZV9vcGVy YXRvcl9mbG9hdDo6Zm9sZF9yYW5nZTsKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6Om9w MV9yYW5nZTsKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6Om9wMl9yYW5nZTsKLSAgdXNp bmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6Om9wMV9vcDJfcmVsYXRpb247CisgIHVzaW5nIHJhbmdl X29wZXJhdG9yOjpmb2xkX3JhbmdlOworICB1c2luZyByYW5nZV9vcGVyYXRvcjo6b3AxX3Jhbmdl OworICB1c2luZyByYW5nZV9vcGVyYXRvcjo6b3AyX3JhbmdlOworICB1c2luZyByYW5nZV9vcGVy YXRvcjo6b3AxX29wMl9yZWxhdGlvbjsKIHB1YmxpYzoKICAgYm9vbCBmb2xkX3JhbmdlIChpcmFu Z2UgJnIsIHRyZWUgdHlwZSwKIAkJICAgY29uc3QgZnJhbmdlICZvcDEsIGNvbnN0IGZyYW5nZSAm b3AyLApAQCAtMTE2NSwxMiArMTE1OSwxMiBAQCBmb3BlcmF0b3JfZ3Q6Om9wMl9yYW5nZSAoZnJh bmdlICZyLAogICByZXR1cm4gdHJ1ZTsKIH0KIAotY2xhc3MgZm9wZXJhdG9yX2dlIDogcHVibGlj IHJhbmdlX29wZXJhdG9yX2Zsb2F0CitjbGFzcyBmb3BlcmF0b3JfZ2UgOiBwdWJsaWMgcmFuZ2Vf b3BlcmF0b3IKIHsKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6OmZvbGRfcmFuZ2U7Ci0g IHVzaW5nIHJhbmdlX29wZXJhdG9yX2Zsb2F0OjpvcDFfcmFuZ2U7Ci0gIHVzaW5nIHJhbmdlX29w ZXJhdG9yX2Zsb2F0OjpvcDJfcmFuZ2U7Ci0gIHVzaW5nIHJhbmdlX29wZXJhdG9yX2Zsb2F0Ojpv cDFfb3AyX3JlbGF0aW9uOworICB1c2luZyByYW5nZV9vcGVyYXRvcjo6Zm9sZF9yYW5nZTsKKyAg dXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMV9yYW5nZTsKKyAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6 Om9wMl9yYW5nZTsKKyAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMV9vcDJfcmVsYXRpb247CiBw dWJsaWM6CiAgIGJvb2wgZm9sZF9yYW5nZSAoaXJhbmdlICZyLCB0cmVlIHR5cGUsCiAJCSAgIGNv bnN0IGZyYW5nZSAmb3AxLCBjb25zdCBmcmFuZ2UgJm9wMiwKQEAgLTEyNzgsMTEgKzEyNzIsMTEg QEAgZm9wZXJhdG9yX2dlOjpvcDJfcmFuZ2UgKGZyYW5nZSAmciwgdHJlZSB0eXBlLAogCiAvLyBV Tk9SREVSRURfRVhQUiBjb21wYXJpc29uLgogCi1jbGFzcyBmb3BlcmF0b3JfdW5vcmRlcmVkIDog cHVibGljIHJhbmdlX29wZXJhdG9yX2Zsb2F0CitjbGFzcyBmb3BlcmF0b3JfdW5vcmRlcmVkIDog cHVibGljIHJhbmdlX29wZXJhdG9yCiB7Ci0gIHVzaW5nIHJhbmdlX29wZXJhdG9yX2Zsb2F0Ojpm b2xkX3JhbmdlOwotICB1c2luZyByYW5nZV9vcGVyYXRvcl9mbG9hdDo6b3AxX3JhbmdlOwotICB1 c2luZyByYW5nZV9vcGVyYXRvcl9mbG9hdDo6b3AyX3JhbmdlOworICB1c2luZyByYW5nZV9vcGVy YXRvcjo6Zm9sZF9yYW5nZTsKKyAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMV9yYW5nZTsKKyAg dXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMl9yYW5nZTsKIHB1YmxpYzoKICAgYm9vbCBmb2xkX3Jh bmdlIChpcmFuZ2UgJnIsIHRyZWUgdHlwZSwKIAkJICAgY29uc3QgZnJhbmdlICZvcDEsIGNvbnN0 IGZyYW5nZSAmb3AyLApAQCAtMTM1MiwxMSArMTM0NiwxMSBAQCBmb3BlcmF0b3JfdW5vcmRlcmVk OjpvcDFfcmFuZ2UgKGZyYW5nZSAmciwgdHJlZSB0eXBlLAogCiAvLyBPUkRFUkVEX0VYUFIgY29t cGFyaXNvbi4KIAotY2xhc3MgZm9wZXJhdG9yX29yZGVyZWQgOiBwdWJsaWMgcmFuZ2Vfb3BlcmF0 b3JfZmxvYXQKK2NsYXNzIGZvcGVyYXRvcl9vcmRlcmVkIDogcHVibGljIHJhbmdlX29wZXJhdG9y CiB7Ci0gIHVzaW5nIHJhbmdlX29wZXJhdG9yX2Zsb2F0Ojpmb2xkX3JhbmdlOwotICB1c2luZyBy YW5nZV9vcGVyYXRvcl9mbG9hdDo6b3AxX3JhbmdlOwotICB1c2luZyByYW5nZV9vcGVyYXRvcl9m bG9hdDo6b3AyX3JhbmdlOworICB1c2luZyByYW5nZV9vcGVyYXRvcjo6Zm9sZF9yYW5nZTsKKyAg dXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMV9yYW5nZTsKKyAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6 Om9wMl9yYW5nZTsKIHB1YmxpYzoKICAgYm9vbCBmb2xkX3JhbmdlIChpcmFuZ2UgJnIsIHRyZWUg dHlwZSwKIAkJICAgY29uc3QgZnJhbmdlICZvcDEsIGNvbnN0IGZyYW5nZSAmb3AyLApAQCAtMTQy MSwxMCArMTQxNSwxMCBAQCBmb3BlcmF0b3Jfb3JkZXJlZDo6b3AxX3JhbmdlIChmcmFuZ2UgJnIs IHRyZWUgdHlwZSwKICAgcmV0dXJuIHRydWU7CiB9CiAKLWNsYXNzIGZvcGVyYXRvcl9uZWdhdGUg OiBwdWJsaWMgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQKK2NsYXNzIGZvcGVyYXRvcl9uZWdhdGUgOiBw dWJsaWMgcmFuZ2Vfb3BlcmF0b3IKIHsKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6OmZv bGRfcmFuZ2U7Ci0gIHVzaW5nIHJhbmdlX29wZXJhdG9yX2Zsb2F0OjpvcDFfcmFuZ2U7CisgIHVz aW5nIHJhbmdlX29wZXJhdG9yOjpmb2xkX3JhbmdlOworICB1c2luZyByYW5nZV9vcGVyYXRvcjo6 b3AxX3JhbmdlOwogcHVibGljOgogICBib29sIGZvbGRfcmFuZ2UgKGZyYW5nZSAmciwgdHJlZSB0 eXBlLAogCQkgICBjb25zdCBmcmFuZ2UgJm9wMSwgY29uc3QgZnJhbmdlICZvcDIsCkBAIC0xNDY3 LDEwICsxNDYxLDEwIEBAIHB1YmxpYzoKICAgfQogfSBmb3BfbmVnYXRlOwogCi1jbGFzcyBmb3Bl cmF0b3JfYWJzIDogcHVibGljIHJhbmdlX29wZXJhdG9yX2Zsb2F0CitjbGFzcyBmb3BlcmF0b3Jf YWJzIDogcHVibGljIHJhbmdlX29wZXJhdG9yCiB7Ci0gIHVzaW5nIHJhbmdlX29wZXJhdG9yX2Zs b2F0Ojpmb2xkX3JhbmdlOwotICB1c2luZyByYW5nZV9vcGVyYXRvcl9mbG9hdDo6b3AxX3Jhbmdl OworICB1c2luZyByYW5nZV9vcGVyYXRvcjo6Zm9sZF9yYW5nZTsKKyAgdXNpbmcgcmFuZ2Vfb3Bl cmF0b3I6Om9wMV9yYW5nZTsKIHB1YmxpYzoKICAgYm9vbCBmb2xkX3JhbmdlIChmcmFuZ2UgJnIs IHRyZWUgdHlwZSwKIAkJICAgY29uc3QgZnJhbmdlICZvcDEsIGNvbnN0IGZyYW5nZSAmLApAQCAt MTU2NiwxMSArMTU2MCwxMSBAQCBmb3BlcmF0b3JfYWJzOjpvcDFfcmFuZ2UgKGZyYW5nZSAmciwg dHJlZSB0eXBlLAogICByZXR1cm4gdHJ1ZTsKIH0KIAotY2xhc3MgZm9wZXJhdG9yX3Vub3JkZXJl ZF9sdCA6IHB1YmxpYyByYW5nZV9vcGVyYXRvcl9mbG9hdAorY2xhc3MgZm9wZXJhdG9yX3Vub3Jk ZXJlZF9sdCA6IHB1YmxpYyByYW5nZV9vcGVyYXRvcgogewotICB1c2luZyByYW5nZV9vcGVyYXRv cl9mbG9hdDo6Zm9sZF9yYW5nZTsKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6Om9wMV9y YW5nZTsKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6Om9wMl9yYW5nZTsKKyAgdXNpbmcg cmFuZ2Vfb3BlcmF0b3I6OmZvbGRfcmFuZ2U7CisgIHVzaW5nIHJhbmdlX29wZXJhdG9yOjpvcDFf cmFuZ2U7CisgIHVzaW5nIHJhbmdlX29wZXJhdG9yOjpvcDJfcmFuZ2U7CiBwdWJsaWM6CiAgIGJv b2wgZm9sZF9yYW5nZSAoaXJhbmdlICZyLCB0cmVlIHR5cGUsCiAJCSAgIGNvbnN0IGZyYW5nZSAm b3AxLCBjb25zdCBmcmFuZ2UgJm9wMiwKQEAgLTE2NzcsMTEgKzE2NzEsMTEgQEAgZm9wZXJhdG9y X3Vub3JkZXJlZF9sdDo6b3AyX3JhbmdlIChmcmFuZ2UgJnIsIHRyZWUgdHlwZSwKICAgcmV0dXJu IHRydWU7CiB9CiAKLWNsYXNzIGZvcGVyYXRvcl91bm9yZGVyZWRfbGUgOiBwdWJsaWMgcmFuZ2Vf b3BlcmF0b3JfZmxvYXQKK2NsYXNzIGZvcGVyYXRvcl91bm9yZGVyZWRfbGUgOiBwdWJsaWMgcmFu Z2Vfb3BlcmF0b3IKIHsKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6OmZvbGRfcmFuZ2U7 Ci0gIHVzaW5nIHJhbmdlX29wZXJhdG9yX2Zsb2F0OjpvcDFfcmFuZ2U7Ci0gIHVzaW5nIHJhbmdl X29wZXJhdG9yX2Zsb2F0OjpvcDJfcmFuZ2U7CisgIHVzaW5nIHJhbmdlX29wZXJhdG9yOjpmb2xk X3JhbmdlOworICB1c2luZyByYW5nZV9vcGVyYXRvcjo6b3AxX3JhbmdlOworICB1c2luZyByYW5n ZV9vcGVyYXRvcjo6b3AyX3JhbmdlOwogcHVibGljOgogICBib29sIGZvbGRfcmFuZ2UgKGlyYW5n ZSAmciwgdHJlZSB0eXBlLAogCQkgICBjb25zdCBmcmFuZ2UgJm9wMSwgY29uc3QgZnJhbmdlICZv cDIsCkBAIC0xNzg0LDExICsxNzc4LDExIEBAIGZvcGVyYXRvcl91bm9yZGVyZWRfbGU6Om9wMl9y YW5nZSAoZnJhbmdlICZyLAogICByZXR1cm4gdHJ1ZTsKIH0KIAotY2xhc3MgZm9wZXJhdG9yX3Vu b3JkZXJlZF9ndCA6IHB1YmxpYyByYW5nZV9vcGVyYXRvcl9mbG9hdAorY2xhc3MgZm9wZXJhdG9y X3Vub3JkZXJlZF9ndCA6IHB1YmxpYyByYW5nZV9vcGVyYXRvcgogewotICB1c2luZyByYW5nZV9v cGVyYXRvcl9mbG9hdDo6Zm9sZF9yYW5nZTsKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6 Om9wMV9yYW5nZTsKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6Om9wMl9yYW5nZTsKKyAg dXNpbmcgcmFuZ2Vfb3BlcmF0b3I6OmZvbGRfcmFuZ2U7CisgIHVzaW5nIHJhbmdlX29wZXJhdG9y OjpvcDFfcmFuZ2U7CisgIHVzaW5nIHJhbmdlX29wZXJhdG9yOjpvcDJfcmFuZ2U7CiBwdWJsaWM6 CiAgIGJvb2wgZm9sZF9yYW5nZSAoaXJhbmdlICZyLCB0cmVlIHR5cGUsCiAJCSAgIGNvbnN0IGZy YW5nZSAmb3AxLCBjb25zdCBmcmFuZ2UgJm9wMiwKQEAgLTE4OTUsMTEgKzE4ODksMTEgQEAgZm9w ZXJhdG9yX3Vub3JkZXJlZF9ndDo6b3AyX3JhbmdlIChmcmFuZ2UgJnIsCiAgIHJldHVybiB0cnVl OwogfQogCi1jbGFzcyBmb3BlcmF0b3JfdW5vcmRlcmVkX2dlIDogcHVibGljIHJhbmdlX29wZXJh dG9yX2Zsb2F0CitjbGFzcyBmb3BlcmF0b3JfdW5vcmRlcmVkX2dlIDogcHVibGljIHJhbmdlX29w ZXJhdG9yCiB7Ci0gIHVzaW5nIHJhbmdlX29wZXJhdG9yX2Zsb2F0Ojpmb2xkX3JhbmdlOwotICB1 c2luZyByYW5nZV9vcGVyYXRvcl9mbG9hdDo6b3AxX3JhbmdlOwotICB1c2luZyByYW5nZV9vcGVy YXRvcl9mbG9hdDo6b3AyX3JhbmdlOworICB1c2luZyByYW5nZV9vcGVyYXRvcjo6Zm9sZF9yYW5n ZTsKKyAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMV9yYW5nZTsKKyAgdXNpbmcgcmFuZ2Vfb3Bl cmF0b3I6Om9wMl9yYW5nZTsKIHB1YmxpYzoKICAgYm9vbCBmb2xkX3JhbmdlIChpcmFuZ2UgJnIs IHRyZWUgdHlwZSwKIAkJICAgY29uc3QgZnJhbmdlICZvcDEsIGNvbnN0IGZyYW5nZSAmb3AyLApA QCAtMjAwNSwxMSArMTk5OSwxMSBAQCBmb3BlcmF0b3JfdW5vcmRlcmVkX2dlOjpvcDJfcmFuZ2Ug KGZyYW5nZSAmciwgdHJlZSB0eXBlLAogICByZXR1cm4gdHJ1ZTsKIH0KIAotY2xhc3MgZm9wZXJh dG9yX3Vub3JkZXJlZF9lcXVhbCA6IHB1YmxpYyByYW5nZV9vcGVyYXRvcl9mbG9hdAorY2xhc3Mg Zm9wZXJhdG9yX3Vub3JkZXJlZF9lcXVhbCA6IHB1YmxpYyByYW5nZV9vcGVyYXRvcgogewotICB1 c2luZyByYW5nZV9vcGVyYXRvcl9mbG9hdDo6Zm9sZF9yYW5nZTsKLSAgdXNpbmcgcmFuZ2Vfb3Bl cmF0b3JfZmxvYXQ6Om9wMV9yYW5nZTsKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6Om9w Ml9yYW5nZTsKKyAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6OmZvbGRfcmFuZ2U7CisgIHVzaW5nIHJh bmdlX29wZXJhdG9yOjpvcDFfcmFuZ2U7CisgIHVzaW5nIHJhbmdlX29wZXJhdG9yOjpvcDJfcmFu Z2U7CiBwdWJsaWM6CiAgIGJvb2wgZm9sZF9yYW5nZSAoaXJhbmdlICZyLCB0cmVlIHR5cGUsCiAJ CSAgIGNvbnN0IGZyYW5nZSAmb3AxLCBjb25zdCBmcmFuZ2UgJm9wMiwKQEAgLTIwODYsMTEgKzIw ODAsMTEgQEAgZm9wZXJhdG9yX3Vub3JkZXJlZF9lcXVhbDo6b3AxX3JhbmdlIChmcmFuZ2UgJnIs IHRyZWUgdHlwZSwKICAgcmV0dXJuIHRydWU7CiB9CiAKLWNsYXNzIGZvcGVyYXRvcl9sdGd0IDog cHVibGljIHJhbmdlX29wZXJhdG9yX2Zsb2F0CitjbGFzcyBmb3BlcmF0b3JfbHRndCA6IHB1Ymxp YyByYW5nZV9vcGVyYXRvcgogewotICB1c2luZyByYW5nZV9vcGVyYXRvcl9mbG9hdDo6Zm9sZF9y YW5nZTsKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6Om9wMV9yYW5nZTsKLSAgdXNpbmcg cmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6Om9wMl9yYW5nZTsKKyAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6 OmZvbGRfcmFuZ2U7CisgIHVzaW5nIHJhbmdlX29wZXJhdG9yOjpvcDFfcmFuZ2U7CisgIHVzaW5n IHJhbmdlX29wZXJhdG9yOjpvcDJfcmFuZ2U7CiBwdWJsaWM6CiAgIGJvb2wgZm9sZF9yYW5nZSAo aXJhbmdlICZyLCB0cmVlIHR5cGUsCiAJCSAgIGNvbnN0IGZyYW5nZSAmb3AxLCBjb25zdCBmcmFu Z2UgJm9wMiwKQEAgLTIzNzQsMTAgKzIzNjgsMTAgQEAgZmxvYXRfd2lkZW5fbGhzX3JhbmdlICh0 cmVlIHR5cGUsIGNvbnN0IGZyYW5nZSAmbGhzKQogICByZXR1cm4gcmV0OwogfQogCi1jbGFzcyBm b3BlcmF0b3JfcGx1cyA6IHB1YmxpYyByYW5nZV9vcGVyYXRvcl9mbG9hdAorY2xhc3MgZm9wZXJh dG9yX3BsdXMgOiBwdWJsaWMgcmFuZ2Vfb3BlcmF0b3IKIHsKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0 b3JfZmxvYXQ6Om9wMV9yYW5nZTsKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6Om9wMl9y YW5nZTsKKyAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMV9yYW5nZTsKKyAgdXNpbmcgcmFuZ2Vf b3BlcmF0b3I6Om9wMl9yYW5nZTsKIHB1YmxpYzoKICAgdmlydHVhbCBib29sIG9wMV9yYW5nZSAo ZnJhbmdlICZyLCB0cmVlIHR5cGUsCiAJCQkgIGNvbnN0IGZyYW5nZSAmbGhzLApAQCAtMjQyNCwx MCArMjQxOCwxMCBAQCBwcml2YXRlOgogfSBmb3BfcGx1czsKIAogCi1jbGFzcyBmb3BlcmF0b3Jf bWludXMgOiBwdWJsaWMgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQKK2NsYXNzIGZvcGVyYXRvcl9taW51 cyA6IHB1YmxpYyByYW5nZV9vcGVyYXRvcgogewotICB1c2luZyByYW5nZV9vcGVyYXRvcl9mbG9h dDo6b3AxX3JhbmdlOwotICB1c2luZyByYW5nZV9vcGVyYXRvcl9mbG9hdDo6b3AyX3JhbmdlOwor ICB1c2luZyByYW5nZV9vcGVyYXRvcjo6b3AxX3JhbmdlOworICB1c2luZyByYW5nZV9vcGVyYXRv cjo6b3AyX3JhbmdlOwogcHVibGljOgogICB2aXJ0dWFsIGJvb2wgb3AxX3JhbmdlIChmcmFuZ2Ug JnIsIHRyZWUgdHlwZSwKIAkJCSAgY29uc3QgZnJhbmdlICZsaHMsCkBAIC0yNDc2LDcgKzI0NzAs NyBAQCBwcml2YXRlOgogfSBmb3BfbWludXM7CiAKIAotY2xhc3MgZm9wZXJhdG9yX211bHRfZGl2 X2Jhc2UgOiBwdWJsaWMgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQKK2NsYXNzIGZvcGVyYXRvcl9tdWx0 X2Rpdl9iYXNlIDogcHVibGljIHJhbmdlX29wZXJhdG9yCiB7CiBwcm90ZWN0ZWQ6CiAgIC8vIEdp dmVuIENQWzBdIHRvIENQWzNdIGZsb2F0aW5nIHBvaW50IHZhbHVlcyByb3VuZGVkIHRvIC1JTkYs CkBAIC0yNTAzLDggKzI0OTcsOCBAQCBwcm90ZWN0ZWQ6CiAKIGNsYXNzIGZvcGVyYXRvcl9tdWx0 IDogcHVibGljIGZvcGVyYXRvcl9tdWx0X2Rpdl9iYXNlCiB7Ci0gIHVzaW5nIHJhbmdlX29wZXJh dG9yX2Zsb2F0OjpvcDFfcmFuZ2U7Ci0gIHVzaW5nIHJhbmdlX29wZXJhdG9yX2Zsb2F0OjpvcDJf cmFuZ2U7CisgIHVzaW5nIHJhbmdlX29wZXJhdG9yOjpvcDFfcmFuZ2U7CisgIHVzaW5nIHJhbmdl X29wZXJhdG9yOjpvcDJfcmFuZ2U7CiBwdWJsaWM6CiAgIHZpcnR1YWwgYm9vbCBvcDFfcmFuZ2Ug KGZyYW5nZSAmciwgdHJlZSB0eXBlLAogCQkJICBjb25zdCBmcmFuZ2UgJmxocywKQEAgLTI2NTks OCArMjY1Myw4IEBAIHByaXZhdGU6CiAKIGNsYXNzIGZvcGVyYXRvcl9kaXYgOiBwdWJsaWMgZm9w ZXJhdG9yX211bHRfZGl2X2Jhc2UKIHsKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6Om9w MV9yYW5nZTsKLSAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQ6Om9wMl9yYW5nZTsKKyAgdXNp bmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMV9yYW5nZTsKKyAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9w Ml9yYW5nZTsKIHB1YmxpYzoKICAgdmlydHVhbCBib29sIG9wMV9yYW5nZSAoZnJhbmdlICZyLCB0 cmVlIHR5cGUsCiAJCQkgIGNvbnN0IGZyYW5nZSAmbGhzLApAQCAtMjgxNCwxMiArMjgwOCwxNiBA QCBwcml2YXRlOgogfSBmb3BfZGl2OwogCiAvLyBJbnN0YW50aWF0ZSBhIHJhbmdlX29wX3RhYmxl IGZvciBmbG9hdGluZyBwb2ludCBvcGVyYXRpb25zLgotc3RhdGljIGZsb2F0aW5nX29wX3RhYmxl IGdsb2JhbF9mbG9hdGluZ190YWJsZTsKK2NsYXNzIGZsb2F0X3RhYmxlIDogcHVibGljIHJhbmdl X29wX3RhYmxlCit7CisgIHB1YmxpYzoKKyAgICBmbG9hdF90YWJsZSAoKTsKK30gZ2xvYmFsX2Zs b2F0aW5nX3RhYmxlOwogCiAvLyBQb2ludGVyIHRvIHRoZSBmbG9hdCB0YWJsZSBzbyB0aGUgZGlz cGF0Y2ggY29kZSBjYW4gYWNjZXNzIGl0LgotZmxvYXRpbmdfb3BfdGFibGUgKmZsb2F0aW5nX3Ry ZWVfdGFibGUgPSAmZ2xvYmFsX2Zsb2F0aW5nX3RhYmxlOworcmFuZ2Vfb3BfdGFibGUgKmZsb2F0 aW5nX3RyZWVfdGFibGUgPSAmZ2xvYmFsX2Zsb2F0aW5nX3RhYmxlOwogCi1mbG9hdGluZ19vcF90 YWJsZTo6ZmxvYXRpbmdfb3BfdGFibGUgKCkKK2Zsb2F0X3RhYmxlOjpmbG9hdF90YWJsZSAoKQog ewogICBzZXQgKFNTQV9OQU1FLCBmb3BfaWRlbnRpdHkpOwogICBzZXQgKFBBUkVOX0VYUFIsIGZv cF9pZGVudGl0eSk7CkBAIC0yODUyLDI0ICsyODUwLDYgQEAgZmxvYXRpbmdfb3BfdGFibGU6OmZs b2F0aW5nX29wX3RhYmxlICgpCiAgIHNldCAoUkRJVl9FWFBSLCBmb3BfZGl2KTsKIH0KIAotLy8g UmV0dXJuIGEgcG9pbnRlciB0byB0aGUgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQgaW5zdGFuY2UsIGlm IHRoZXJlIGlzCi0vLyBvbmUgYXNzb2NpYXRlZCB3aXRoIHRyZWVfY29kZSBDT0RFLgotCi1yYW5n ZV9vcGVyYXRvcl9mbG9hdCAqCi1mbG9hdGluZ19vcF90YWJsZTo6b3BlcmF0b3JbXSAoZW51bSB0 cmVlX2NvZGUgY29kZSkKLXsKLSAgcmV0dXJuIG1fcmFuZ2VfdHJlZVtjb2RlXTsKLX0KLQotLy8g QWRkIE9QIHRvIHRoZSBoYW5kbGVyIHRhYmxlIGZvciBDT0RFLgotCi12b2lkCi1mbG9hdGluZ19v cF90YWJsZTo6c2V0IChlbnVtIHRyZWVfY29kZSBjb2RlLCByYW5nZV9vcGVyYXRvcl9mbG9hdCAm b3ApCi17Ci0gIGdjY19jaGVja2luZ19hc3NlcnQgKG1fcmFuZ2VfdHJlZVtjb2RlXSA9PSBOVUxM KTsKLSAgbV9yYW5nZV90cmVlW2NvZGVdID0gJm9wOwotfQotCiAjaWYgQ0hFQ0tJTkdfUAogI2lu Y2x1ZGUgInNlbGZ0ZXN0LmgiCiAKZGlmZiAtLWdpdCBhL2djYy9yYW5nZS1vcC5jYyBiL2djYy9y YW5nZS1vcC5jYwppbmRleCAyZGVjYTNiYWM5My4uMjAzYzMwZjZlOTQgMTAwNjQ0Ci0tLSBhL2dj Yy9yYW5nZS1vcC5jYworKysgYi9nY2MvcmFuZ2Utb3AuY2MKQEAgLTU1Niw2ICs1NTYsNyBAQCBj bGFzcyBvcGVyYXRvcl9lcXVhbCA6IHB1YmxpYyByYW5nZV9vcGVyYXRvcgogICB1c2luZyByYW5n ZV9vcGVyYXRvcjo6Zm9sZF9yYW5nZTsKICAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMV9yYW5n ZTsKICAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMl9yYW5nZTsKKyAgdXNpbmcgcmFuZ2Vfb3Bl cmF0b3I6Om9wMV9vcDJfcmVsYXRpb247CiBwdWJsaWM6CiAgIHZpcnR1YWwgYm9vbCBmb2xkX3Jh bmdlIChpcmFuZ2UgJnIsIHRyZWUgdHlwZSwKIAkJCSAgIGNvbnN0IGlyYW5nZSAmb3AxLApAQCAt Njc4LDYgKzY3OSw3IEBAIGNsYXNzIG9wZXJhdG9yX25vdF9lcXVhbCA6IHB1YmxpYyByYW5nZV9v cGVyYXRvcgogICB1c2luZyByYW5nZV9vcGVyYXRvcjo6Zm9sZF9yYW5nZTsKICAgdXNpbmcgcmFu Z2Vfb3BlcmF0b3I6Om9wMV9yYW5nZTsKICAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMl9yYW5n ZTsKKyAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMV9vcDJfcmVsYXRpb247CiBwdWJsaWM6CiAg IHZpcnR1YWwgYm9vbCBmb2xkX3JhbmdlIChpcmFuZ2UgJnIsIHRyZWUgdHlwZSwKIAkJCSAgIGNv bnN0IGlyYW5nZSAmb3AxLApAQCAtODYwLDYgKzg2Miw3IEBAIGNsYXNzIG9wZXJhdG9yX2x0IDog IHB1YmxpYyByYW5nZV9vcGVyYXRvcgogICB1c2luZyByYW5nZV9vcGVyYXRvcjo6Zm9sZF9yYW5n ZTsKICAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMV9yYW5nZTsKICAgdXNpbmcgcmFuZ2Vfb3Bl cmF0b3I6Om9wMl9yYW5nZTsKKyAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMV9vcDJfcmVsYXRp b247CiBwdWJsaWM6CiAgIHZpcnR1YWwgYm9vbCBmb2xkX3JhbmdlIChpcmFuZ2UgJnIsIHRyZWUg dHlwZSwKIAkJCSAgIGNvbnN0IGlyYW5nZSAmb3AxLApAQCAtOTgyLDYgKzk4NSw3IEBAIGNsYXNz IG9wZXJhdG9yX2xlIDogIHB1YmxpYyByYW5nZV9vcGVyYXRvcgogICB1c2luZyByYW5nZV9vcGVy YXRvcjo6Zm9sZF9yYW5nZTsKICAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMV9yYW5nZTsKICAg dXNpbmcgcmFuZ2Vfb3BlcmF0b3I6Om9wMl9yYW5nZTsKKyAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6 Om9wMV9vcDJfcmVsYXRpb247CiBwdWJsaWM6CiAgIHZpcnR1YWwgYm9vbCBmb2xkX3JhbmdlIChp cmFuZ2UgJnIsIHRyZWUgdHlwZSwKIAkJCSAgIGNvbnN0IGlyYW5nZSAmb3AxLApAQCAtMTEwMSw2 ICsxMTA1LDcgQEAgY2xhc3Mgb3BlcmF0b3JfZ3QgOiAgcHVibGljIHJhbmdlX29wZXJhdG9yCiAg IHVzaW5nIHJhbmdlX29wZXJhdG9yOjpmb2xkX3JhbmdlOwogICB1c2luZyByYW5nZV9vcGVyYXRv cjo6b3AxX3JhbmdlOwogICB1c2luZyByYW5nZV9vcGVyYXRvcjo6b3AyX3JhbmdlOworICB1c2lu ZyByYW5nZV9vcGVyYXRvcjo6b3AxX29wMl9yZWxhdGlvbjsKIHB1YmxpYzoKICAgdmlydHVhbCBi b29sIGZvbGRfcmFuZ2UgKGlyYW5nZSAmciwgdHJlZSB0eXBlLAogCQkJICAgY29uc3QgaXJhbmdl ICZvcDEsCkBAIC0xMjE5LDYgKzEyMjQsNyBAQCBjbGFzcyBvcGVyYXRvcl9nZSA6ICBwdWJsaWMg cmFuZ2Vfb3BlcmF0b3IKICAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6OmZvbGRfcmFuZ2U7CiAgIHVz aW5nIHJhbmdlX29wZXJhdG9yOjpvcDFfcmFuZ2U7CiAgIHVzaW5nIHJhbmdlX29wZXJhdG9yOjpv cDJfcmFuZ2U7CisgIHVzaW5nIHJhbmdlX29wZXJhdG9yOjpvcDFfb3AyX3JlbGF0aW9uOwogcHVi bGljOgogICB2aXJ0dWFsIGJvb2wgZm9sZF9yYW5nZSAoaXJhbmdlICZyLCB0cmVlIHR5cGUsCiAJ CQkgICBjb25zdCBpcmFuZ2UgJm9wMSwKQEAgLTE2NDcsNiArMTY1Myw3IEBAIGNsYXNzIG9wZXJh dG9yX21pbnVzIDogcHVibGljIHJhbmdlX29wZXJhdG9yCiAgIHVzaW5nIHJhbmdlX29wZXJhdG9y Ojpmb2xkX3JhbmdlOwogICB1c2luZyByYW5nZV9vcGVyYXRvcjo6b3AxX3JhbmdlOwogICB1c2lu ZyByYW5nZV9vcGVyYXRvcjo6b3AyX3JhbmdlOworICB1c2luZyByYW5nZV9vcGVyYXRvcjo6bGhz X29wMV9yZWxhdGlvbjsKIHB1YmxpYzoKICAgdmlydHVhbCBib29sIG9wMV9yYW5nZSAoaXJhbmdl ICZyLCB0cmVlIHR5cGUsCiAJCQkgIGNvbnN0IGlyYW5nZSAmbGhzLApAQCAtMjcxMCw2ICsyNzE3 LDcgQEAgY2xhc3Mgb3BlcmF0b3JfY2FzdDogcHVibGljIHJhbmdlX29wZXJhdG9yCiB7CiAgIHVz aW5nIHJhbmdlX29wZXJhdG9yOjpmb2xkX3JhbmdlOwogICB1c2luZyByYW5nZV9vcGVyYXRvcjo6 b3AxX3JhbmdlOworICB1c2luZyByYW5nZV9vcGVyYXRvcjo6bGhzX29wMV9yZWxhdGlvbjsKIHB1 YmxpYzoKICAgdmlydHVhbCBib29sIGZvbGRfcmFuZ2UgKGlyYW5nZSAmciwgdHJlZSB0eXBlLAog CQkJICAgY29uc3QgaXJhbmdlICZvcDEsCkBAIC0zMDU1LDYgKzMwNjMsNyBAQCBjbGFzcyBvcGVy YXRvcl9iaXR3aXNlX2FuZCA6IHB1YmxpYyByYW5nZV9vcGVyYXRvcgogewogICB1c2luZyByYW5n ZV9vcGVyYXRvcjo6b3AxX3JhbmdlOwogICB1c2luZyByYW5nZV9vcGVyYXRvcjo6b3AyX3Jhbmdl OworICB1c2luZyByYW5nZV9vcGVyYXRvcjo6bGhzX29wMV9yZWxhdGlvbjsKIHB1YmxpYzoKICAg dmlydHVhbCBib29sIG9wMV9yYW5nZSAoaXJhbmdlICZyLCB0cmVlIHR5cGUsCiAJCQkgIGNvbnN0 IGlyYW5nZSAmbGhzLApAQCAtNDQxMCw2ICs0NDE5LDcgQEAgb3BlcmF0b3JfYWRkcl9leHByOjpv cDFfcmFuZ2UgKGlyYW5nZSAmciwgdHJlZSB0eXBlLAogCiBjbGFzcyBwb2ludGVyX3BsdXNfb3Bl cmF0b3IgOiBwdWJsaWMgcmFuZ2Vfb3BlcmF0b3IKIHsKKyAgdXNpbmcgcmFuZ2Vfb3BlcmF0b3I6 Om9wMl9yYW5nZTsKIHB1YmxpYzoKICAgdmlydHVhbCB2b2lkIHdpX2ZvbGQgKGlyYW5nZSAmciwg dHJlZSB0eXBlLAogCQkgICAgICAgIGNvbnN0IHdpZGVfaW50ICZsaF9sYiwKQEAgLTQ3MTksNyAr NDcyOSw3IEBAIGdldF9oYW5kbGVyIChlbnVtIHRyZWVfY29kZSBjb2RlLCB0cmVlIHR5cGUpCiAK IC8vIFJldHVybiB0aGUgZmxvYXRpbmcgcG9pbnQgb3BlcmF0b3IgZm9yIENPREUgb3IgTlVMTCBp ZiBub25lIGF2YWlsYWJsZS4KIAotc3RhdGljIGlubGluZSByYW5nZV9vcGVyYXRvcl9mbG9hdCAq CitzdGF0aWMgaW5saW5lIHJhbmdlX29wZXJhdG9yICoKIGdldF9mbG9hdF9oYW5kbGVyIChlbnVt IHRyZWVfY29kZSBjb2RlLCB0cmVlKQogewogICByZXR1cm4gKCpmbG9hdGluZ190cmVlX3RhYmxl KVtjb2RlXTsKZGlmZiAtLWdpdCBhL2djYy9yYW5nZS1vcC5oIGIvZ2NjL3JhbmdlLW9wLmgKaW5k ZXggNWJmYmM4OWRmNTIuLmNhZDE2ZjRjZDIwIDEwMDY0NAotLS0gYS9nY2MvcmFuZ2Utb3AuaAor KysgYi9nY2MvcmFuZ2Utb3AuaApAQCAtNDUsNiArNDUsMTEgQEAgYWxvbmcgd2l0aCBHQ0M7IHNl ZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKIC8vICAgICBub24temVyby4gIFRoaXMg aXMgbW9zdGx5IGZvciBsb2dpY2FsIHRydWUgZmFsc2UsIGJ1dCBjYW4gc2VydmUgb3RoZXIKIC8v ICAgICBwdXJwb3Nlcy4KIC8vICAgICAgIGllICAgMCA9IG9wMSAtIG9wMiBpbXBsaWVzIG9wMiBo YXMgdGhlIHNhbWUgcmFuZ2UgYXMgb3AxLgorLy8KKy8vIDQgLSBBbGwgc3VwcG9ydGVkIHJhbmdl IGNvbWJpbmF0aW9ucyBhcmUgZXhwbGljaXRseSBzcGVjaWZpZWQuCisvLyAgICAgQW55IGRlc2ly ZWQgY29tYmluYXRpb25zIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBmb3IgZWFjaCBvcGVyYXRvci4K Ky8vICAgICBXaGVuIG5ldyByYW5nZSBjbGFzc2VzIGFyZSBhZGRlZCwgbmV3IG1hdGNoaW5nIHBy b3RvdHlwZXMgc2hvdWxkIGJlCisvLyAgICAgYWRkZWQuCiAKIGNsYXNzIHJhbmdlX29wZXJhdG9y CiB7CkBAIC01NSw2ICs2MCwxOCBAQCBwdWJsaWM6CiAJCQkgICBjb25zdCBpcmFuZ2UgJmxoLAog CQkJICAgY29uc3QgaXJhbmdlICZyaCwKIAkJCSAgIHJlbGF0aW9uX3RyaW8gPSBUUklPX1ZBUllJ TkcpIGNvbnN0OworICB2aXJ0dWFsIGJvb2wgZm9sZF9yYW5nZSAoZnJhbmdlICZyLCB0cmVlIHR5 cGUsCisJCQkgICBjb25zdCBmcmFuZ2UgJmxoLAorCQkJICAgY29uc3QgZnJhbmdlICZyaCwKKwkJ CSAgIHJlbGF0aW9uX3RyaW8gPSBUUklPX1ZBUllJTkcpIGNvbnN0OworICB2aXJ0dWFsIGJvb2wg Zm9sZF9yYW5nZSAoaXJhbmdlICZyLCB0cmVlIHR5cGUsCisJCQkgICBjb25zdCBmcmFuZ2UgJmxo LAorCQkJICAgY29uc3QgaXJhbmdlICZyaCwKKwkJCSAgIHJlbGF0aW9uX3RyaW8gPSBUUklPX1ZB UllJTkcpIGNvbnN0OworICB2aXJ0dWFsIGJvb2wgZm9sZF9yYW5nZSAoaXJhbmdlICZyLCB0cmVl IHR5cGUsCisJCQkgICBjb25zdCBmcmFuZ2UgJmxoLAorCQkJICAgY29uc3QgZnJhbmdlICZyaCwK KwkJCSAgIHJlbGF0aW9uX3RyaW8gPSBUUklPX1ZBUllJTkcpIGNvbnN0OwogCiAgIC8vIFJldHVy biB0aGUgcmFuZ2UgZm9yIG9wWzEyXSBpbiB0aGUgZ2VuZXJhbCBjYXNlLiAgTEhTIGlzIHRoZSBy YW5nZSBmb3IKICAgLy8gdGhlIExIUyBvZiB0aGUgZXhwcmVzc2lvbiwgT1BbMTJdaXMgdGhlIHJh bmdlIGZvciB0aGUgb3RoZXIKQEAgLTcxLDEwICs4OCwyOCBAQCBwdWJsaWM6CiAJCQkgIGNvbnN0 IGlyYW5nZSAmbGhzLAogCQkJICBjb25zdCBpcmFuZ2UgJm9wMiwKIAkJCSAgcmVsYXRpb25fdHJp byA9IFRSSU9fVkFSWUlORykgY29uc3Q7CisgIHZpcnR1YWwgYm9vbCBvcDFfcmFuZ2UgKGZyYW5n ZSAmciwgdHJlZSB0eXBlLAorCQkJICBjb25zdCBmcmFuZ2UgJmxocywKKwkJCSAgY29uc3QgZnJh bmdlICZvcDIsCisJCQkgIHJlbGF0aW9uX3RyaW8gPSBUUklPX1ZBUllJTkcpIGNvbnN0OworICB2 aXJ0dWFsIGJvb2wgb3AxX3JhbmdlIChmcmFuZ2UgJnIsIHRyZWUgdHlwZSwKKwkJCSAgY29uc3Qg aXJhbmdlICZsaHMsCisJCQkgIGNvbnN0IGZyYW5nZSAmb3AyLAorCQkJICByZWxhdGlvbl90cmlv ID0gVFJJT19WQVJZSU5HKSBjb25zdDsKKworCiAgIHZpcnR1YWwgYm9vbCBvcDJfcmFuZ2UgKGly YW5nZSAmciwgdHJlZSB0eXBlLAogCQkJICBjb25zdCBpcmFuZ2UgJmxocywKIAkJCSAgY29uc3Qg aXJhbmdlICZvcDEsCiAJCQkgIHJlbGF0aW9uX3RyaW8gPSBUUklPX1ZBUllJTkcpIGNvbnN0Owor ICB2aXJ0dWFsIGJvb2wgb3AyX3JhbmdlIChmcmFuZ2UgJnIsIHRyZWUgdHlwZSwKKwkJCSAgY29u c3QgZnJhbmdlICZsaHMsCisJCQkgIGNvbnN0IGZyYW5nZSAmb3AxLAorCQkJICByZWxhdGlvbl90 cmlvID0gVFJJT19WQVJZSU5HKSBjb25zdDsKKyAgdmlydHVhbCBib29sIG9wMl9yYW5nZSAoZnJh bmdlICZyLCB0cmVlIHR5cGUsCisJCQkgIGNvbnN0IGlyYW5nZSAmbGhzLAorCQkJICBjb25zdCBm cmFuZ2UgJm9wMSwKKwkJCSAgcmVsYXRpb25fdHJpbyA9IFRSSU9fVkFSWUlORykgY29uc3Q7CiAK ICAgLy8gVGhlIGZvbGxvd2luZyByb3V0aW5lcyBhcmUgdXNlZCB0byByZXByZXNlbnQgcmVsYXRp b25zIGJldHdlZW4gdGhlCiAgIC8vIHZhcmlvdXMgb3BlcmF0aW9ucy4gIElmIHRoZSBjYWxsZXIg a25vd3Mgd2hlcmUgdGhlIHN5bWJvbGljcyBhcmUsCkBAIC04NCwxMSArMTE5LDMwIEBAIHB1Ymxp YzoKIAkJCQkJICBjb25zdCBpcmFuZ2UgJm9wMSwKIAkJCQkJICBjb25zdCBpcmFuZ2UgJm9wMiwK IAkJCQkJICByZWxhdGlvbl9raW5kID0gVlJFTF9WQVJZSU5HKSBjb25zdDsKKyAgdmlydHVhbCBy ZWxhdGlvbl9raW5kIGxoc19vcDFfcmVsYXRpb24gKGNvbnN0IGZyYW5nZSAmbGhzLAorCQkJCQkg IGNvbnN0IGZyYW5nZSAmb3AxLAorCQkJCQkgIGNvbnN0IGZyYW5nZSAmb3AyLAorCQkJCQkgIHJl bGF0aW9uX2tpbmQgPSBWUkVMX1ZBUllJTkcpIGNvbnN0OworICB2aXJ0dWFsIHJlbGF0aW9uX2tp bmQgbGhzX29wMV9yZWxhdGlvbiAoY29uc3QgaXJhbmdlICZsaHMsCisJCQkJCSAgY29uc3QgZnJh bmdlICZvcDEsCisJCQkJCSAgY29uc3QgZnJhbmdlICZvcDIsCisJCQkJCSAgcmVsYXRpb25fa2lu ZCA9IFZSRUxfVkFSWUlORykgY29uc3Q7CisKICAgdmlydHVhbCByZWxhdGlvbl9raW5kIGxoc19v cDJfcmVsYXRpb24gKGNvbnN0IGlyYW5nZSAmbGhzLAogCQkJCQkgIGNvbnN0IGlyYW5nZSAmb3Ax LAogCQkJCQkgIGNvbnN0IGlyYW5nZSAmb3AyLAogCQkJCQkgIHJlbGF0aW9uX2tpbmQgPSBWUkVM X1ZBUllJTkcpIGNvbnN0OworICB2aXJ0dWFsIHJlbGF0aW9uX2tpbmQgbGhzX29wMl9yZWxhdGlv biAoY29uc3QgZnJhbmdlICZsaHMsCisJCQkJCSAgY29uc3QgZnJhbmdlICZvcDEsCisJCQkJCSAg Y29uc3QgZnJhbmdlICZvcDIsCisJCQkJCSAgcmVsYXRpb25fa2luZCA9IFZSRUxfVkFSWUlORykg Y29uc3Q7CisgIHZpcnR1YWwgcmVsYXRpb25fa2luZCBsaHNfb3AyX3JlbGF0aW9uIChjb25zdCBp cmFuZ2UgJmxocywKKwkJCQkJICBjb25zdCBmcmFuZ2UgJm9wMSwKKwkJCQkJICBjb25zdCBmcmFu Z2UgJm9wMiwKKwkJCQkJICByZWxhdGlvbl9raW5kID0gVlJFTF9WQVJZSU5HKSBjb25zdDsKKwog ICB2aXJ0dWFsIHJlbGF0aW9uX2tpbmQgb3AxX29wMl9yZWxhdGlvbiAoY29uc3QgaXJhbmdlICZs aHMpIGNvbnN0OworICB2aXJ0dWFsIHJlbGF0aW9uX2tpbmQgb3AxX29wMl9yZWxhdGlvbiAoY29u c3QgZnJhbmdlICZsaHMpIGNvbnN0OwogcHJvdGVjdGVkOgogICAvLyBQZXJmb3JtIGFuIGludGVn cmFsIG9wZXJhdGlvbiBiZXR3ZWVuIDIgc3ViLXJhbmdlcyBhbmQgcmV0dXJuIGl0LgogICB2aXJ0 dWFsIHZvaWQgd2lfZm9sZCAoaXJhbmdlICZyLCB0cmVlIHR5cGUsCkBAIC0xMTUsMTcgKzE2OSw4 IEBAIHByb3RlY3RlZDoKIAkJCSAgICAgICB1bnNpZ25lZCBsaW1pdCkgY29uc3Q7CiAgIC8vIEFw cGx5IGFueSBiaXRtYXNrcyBpbXBsaWVkIGJ5IHRoZXNlIHJhbmdlcy4KICAgdmlydHVhbCB2b2lk IHVwZGF0ZV9iaXRtYXNrIChpcmFuZ2UgJiwgY29uc3QgaXJhbmdlICYsIGNvbnN0IGlyYW5nZSAm KSBjb25zdDsKLX07Ci0KLS8vIExpa2UgcmFuZ2Vfb3BlcmF0b3IgYWJvdmUsIGJ1dCBmb3IgZmxv YXRpbmcgcG9pbnQgb3BlcmF0b3JzLgogCi1jbGFzcyByYW5nZV9vcGVyYXRvcl9mbG9hdAotewot cHVibGljOgotICB2aXJ0dWFsIGJvb2wgZm9sZF9yYW5nZSAoZnJhbmdlICZyLCB0cmVlIHR5cGUs Ci0JCQkgICBjb25zdCBmcmFuZ2UgJmxoLAotCQkJICAgY29uc3QgZnJhbmdlICZyaCwKLQkJCSAg IHJlbGF0aW9uX3RyaW8gPSBUUklPX1ZBUllJTkcpIGNvbnN0OworICAvLyBQZXJmb3JtIGFuIGZs b2F0IG9wZXJhdGlvbiBiZXR3ZWVuIDIgcmFuZ2VzIGFuZCByZXR1cm4gaXQuCiAgIHZpcnR1YWwg dm9pZCBydl9mb2xkIChSRUFMX1ZBTFVFX1RZUEUgJmxiLCBSRUFMX1ZBTFVFX1RZUEUgJnViLAog CQkJYm9vbCAmbWF5YmVfbmFuLAogCQkJdHJlZSB0eXBlLApAQCAtMTM0LDUwICsxNzksNiBAQCBw dWJsaWM6CiAJCQljb25zdCBSRUFMX1ZBTFVFX1RZUEUgJnJoX2xiLAogCQkJY29uc3QgUkVBTF9W QUxVRV9UWVBFICZyaF91YiwKIAkJCXJlbGF0aW9uX2tpbmQpIGNvbnN0OwotICAvLyBVbmFyeSBv cGVyYXRpb25zIGhhdmUgdGhlIHJhbmdlIG9mIHRoZSBMSFMgYXMgb3AyLgotICB2aXJ0dWFsIGJv b2wgZm9sZF9yYW5nZSAoaXJhbmdlICZyLCB0cmVlIHR5cGUsCi0JCQkgICBjb25zdCBmcmFuZ2Ug JmxoLAotCQkJICAgY29uc3QgaXJhbmdlICZyaCwKLQkJCSAgIHJlbGF0aW9uX3RyaW8gPSBUUklP X1ZBUllJTkcpIGNvbnN0OwotICB2aXJ0dWFsIGJvb2wgZm9sZF9yYW5nZSAoaXJhbmdlICZyLCB0 cmVlIHR5cGUsCi0JCQkgICBjb25zdCBmcmFuZ2UgJmxoLAotCQkJICAgY29uc3QgZnJhbmdlICZy aCwKLQkJCSAgIHJlbGF0aW9uX3RyaW8gPSBUUklPX1ZBUllJTkcpIGNvbnN0OwotICB2aXJ0dWFs IGJvb2wgb3AxX3JhbmdlIChmcmFuZ2UgJnIsIHRyZWUgdHlwZSwKLQkJCSAgY29uc3QgZnJhbmdl ICZsaHMsCi0JCQkgIGNvbnN0IGZyYW5nZSAmb3AyLAotCQkJICByZWxhdGlvbl90cmlvID0gVFJJ T19WQVJZSU5HKSBjb25zdDsKLSAgdmlydHVhbCBib29sIG9wMV9yYW5nZSAoZnJhbmdlICZyLCB0 cmVlIHR5cGUsCi0JCQkgIGNvbnN0IGlyYW5nZSAmbGhzLAotCQkJICBjb25zdCBmcmFuZ2UgJm9w MiwKLQkJCSAgcmVsYXRpb25fdHJpbyA9IFRSSU9fVkFSWUlORykgY29uc3Q7Ci0gIHZpcnR1YWwg Ym9vbCBvcDJfcmFuZ2UgKGZyYW5nZSAmciwgdHJlZSB0eXBlLAotCQkJICBjb25zdCBmcmFuZ2Ug JmxocywKLQkJCSAgY29uc3QgZnJhbmdlICZvcDEsCi0JCQkgIHJlbGF0aW9uX3RyaW8gPSBUUklP X1ZBUllJTkcpIGNvbnN0OwotICB2aXJ0dWFsIGJvb2wgb3AyX3JhbmdlIChmcmFuZ2UgJnIsIHRy ZWUgdHlwZSwKLQkJCSAgY29uc3QgaXJhbmdlICZsaHMsCi0JCQkgIGNvbnN0IGZyYW5nZSAmb3Ax LAotCQkJICByZWxhdGlvbl90cmlvID0gVFJJT19WQVJZSU5HKSBjb25zdDsKLQotICB2aXJ0dWFs IHJlbGF0aW9uX2tpbmQgbGhzX29wMV9yZWxhdGlvbiAoY29uc3QgZnJhbmdlICZsaHMsCi0JCQkJ CSAgY29uc3QgZnJhbmdlICZvcDEsCi0JCQkJCSAgY29uc3QgZnJhbmdlICZvcDIsCi0JCQkJCSAg cmVsYXRpb25fa2luZCA9IFZSRUxfVkFSWUlORykgY29uc3Q7Ci0gIHZpcnR1YWwgcmVsYXRpb25f a2luZCBsaHNfb3AxX3JlbGF0aW9uIChjb25zdCBpcmFuZ2UgJmxocywKLQkJCQkJICBjb25zdCBm cmFuZ2UgJm9wMSwKLQkJCQkJICBjb25zdCBmcmFuZ2UgJm9wMiwKLQkJCQkJICByZWxhdGlvbl9r aW5kID0gVlJFTF9WQVJZSU5HKSBjb25zdDsKLSAgdmlydHVhbCByZWxhdGlvbl9raW5kIGxoc19v cDJfcmVsYXRpb24gKGNvbnN0IGZyYW5nZSAmbGhzLAotCQkJCQkgIGNvbnN0IGZyYW5nZSAmb3Ax LAotCQkJCQkgIGNvbnN0IGZyYW5nZSAmb3AyLAotCQkJCQkgIHJlbGF0aW9uX2tpbmQgPSBWUkVM X1ZBUllJTkcpIGNvbnN0OwotICB2aXJ0dWFsIHJlbGF0aW9uX2tpbmQgbGhzX29wMl9yZWxhdGlv biAoY29uc3QgaXJhbmdlICZsaHMsCi0JCQkJCSAgY29uc3QgZnJhbmdlICZvcDEsCi0JCQkJCSAg Y29uc3QgZnJhbmdlICZvcDIsCi0JCQkJCSAgcmVsYXRpb25fa2luZCA9IFZSRUxfVkFSWUlORykg Y29uc3Q7Ci0gIHZpcnR1YWwgcmVsYXRpb25fa2luZCBvcDFfb3AyX3JlbGF0aW9uIChjb25zdCBp cmFuZ2UgJmxocykgY29uc3Q7Ci0gIHZpcnR1YWwgcmVsYXRpb25fa2luZCBvcDFfb3AyX3JlbGF0 aW9uIChjb25zdCBmcmFuZ2UgJmxocykgY29uc3Q7CiB9OwogCiBjbGFzcyByYW5nZV9vcF9oYW5k bGVyCkBAIC0yMTIsNyArMjEzLDcgQEAgcHJvdGVjdGVkOgogICB2b2lkIHNldF9vcF9oYW5kbGVy IChlbnVtIHRyZWVfY29kZSBjb2RlLCB0cmVlIHR5cGUpOwogICBib29sIG1fdmFsaWQ7CiAgIHJh bmdlX29wZXJhdG9yICptX2ludDsKLSAgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQgKm1fZmxvYXQ7Cisg IHJhbmdlX29wZXJhdG9yICptX2Zsb2F0OwogfTsKIAogZXh0ZXJuIGJvb2wgcmFuZ2VfY2FzdCAo dnJhbmdlICYsIHRyZWUgdHlwZSk7CkBAIC0yOTQsMjAgKzI5NSw5IEBAIHByaXZhdGU6CiAgIHJh bmdlX29wZXJhdG9yICptX3JhbmdlX3RyZWVbTUFYX1RSRUVfQ09ERVNdOwogfTsKIAotLy8gTGlr ZSBhYm92ZSwgYnV0IGZvciBmbG9hdGluZyBwb2ludCBvcGVyYXRvcnMuCi0KLWNsYXNzIGZsb2F0 aW5nX29wX3RhYmxlCi17Ci1wdWJsaWM6Ci0gIGZsb2F0aW5nX29wX3RhYmxlICgpOwotICByYW5n ZV9vcGVyYXRvcl9mbG9hdCAqb3BlcmF0b3JbXSAoZW51bSB0cmVlX2NvZGUgY29kZSk7Ci1wcml2 YXRlOgotICB2b2lkIHNldCAoZW51bSB0cmVlX2NvZGUgY29kZSwgcmFuZ2Vfb3BlcmF0b3JfZmxv YXQgJm9wKTsKLSAgcmFuZ2Vfb3BlcmF0b3JfZmxvYXQgKm1fcmFuZ2VfdHJlZVtNQVhfVFJFRV9D T0RFU107Ci19OwogCiAvLyBUaGlzIGhvbGRzIHRoZSByYW5nZSBvcCB0YWJsZSBmb3IgZmxvYXRp bmcgcG9pbnQgb3BlcmF0aW9ucy4KLWV4dGVybiBmbG9hdGluZ19vcF90YWJsZSAqZmxvYXRpbmdf dHJlZV90YWJsZTsKK2V4dGVybiByYW5nZV9vcF90YWJsZSAqZmxvYXRpbmdfdHJlZV90YWJsZTsK IAogZXh0ZXJuIHJhbmdlX29wZXJhdG9yICpwdHJfb3Bfd2lkZW5fbXVsdF9zaWduZWQ7CiBleHRl cm4gcmFuZ2Vfb3BlcmF0b3IgKnB0cl9vcF93aWRlbl9tdWx0X3Vuc2lnbmVkOwotLSAKMi40MC4x Cgo= --------------F2j0ZCWF5aftqZ2rD94dkqfr--