<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>159005</bug_id>
          
          <creation_ts>2016-06-21 17:25:13 -0700</creation_ts>
          <short_desc>Move the last Apple Pay WebCore files to the open source repository</short_desc>
          <delta_ts>2016-06-21 18:05:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mkwst</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1204363</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-06-21 17:25:13 -0700</bug_when>
    <thetext>Move the last Apple Pay WebCore files to the open source repository</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204367</commentid>
    <comment_count>1</comment_count>
      <attachid>281798</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-06-21 17:33:28 -0700</bug_when>
    <thetext>Created attachment 281798
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204369</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-21 17:34:56 -0700</bug_when>
    <thetext>Attachment 281798 did not pass style-queue:


ERROR: Source/WebCore/Modules/applepay/ApplePaySession.h:55:  STATUS_SUCCESS is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/Modules/applepay/ApplePaySession.h:56:  STATUS_FAILURE is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/Modules/applepay/ApplePaySession.h:57:  STATUS_INVALID_BILLING_POSTAL_ADDRESS is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/Modules/applepay/ApplePaySession.h:58:  STATUS_INVALID_SHIPPING_POSTAL_ADDRESS is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/Modules/applepay/ApplePaySession.h:59:  STATUS_INVALID_SHIPPING_CONTACT is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/Modules/applepay/ApplePaySession.h:60:  STATUS_PIN_REQUIRED is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/Modules/applepay/ApplePaySession.h:61:  STATUS_PIN_INCORRECT is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/Modules/applepay/ApplePaySession.h:62:  STATUS_PIN_LOCKOUT is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/Modules/applepay/ApplePaySession.h:130:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/applepay/ApplePaySession.h:136:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 10 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204376</commentid>
    <comment_count>3</comment_count>
      <attachid>281798</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-06-21 18:04:03 -0700</bug_when>
    <thetext>Comment on attachment 281798
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204377</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-06-21 18:05:44 -0700</bug_when>
    <thetext>Committed r202309: &lt;http://trac.webkit.org/changeset/202309&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281798</attachid>
            <date>2016-06-21 17:33:28 -0700</date>
            <delta_ts>2016-06-21 18:04:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159005-20160621173321.patch</filename>
            <type>text/plain</type>
            <size>221637</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQyNzIwNjg4ZDU1NGEx
MmNmN2Q1OGZmODFhMzNlY2ViMjU3ZWExYi4uZTM2ODgwODM4NjZmYTYyNGE2ZmE1NWRjODJhOGMy
OTI3ZGVlNTRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ5IEBACiAyMDE2LTA2LTIxICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSB0aGUgbGFz
dCBBcHBsZSBQYXkgV2ViQ29yZSBmaWxlcyB0byB0aGUgb3BlbiBzb3VyY2UgcmVwb3NpdG9yeQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MDA1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5tYWtlOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50
QXV0aG9yaXplZEV2ZW50LmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVBheW1lbnRBdXRob3JpemVkRXZlbnQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRBdXRob3JpemVkRXZlbnQuaWRsOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZl
bnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVu
dE1ldGhvZFNlbGVjdGVkRXZlbnQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50LmlkbDogQWRkZWQuCisgICAgICAg
ICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5pZGw6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmNwcDog
QWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFj
dFNlbGVjdGVkRXZlbnQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50LmNwcDog
QWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9k
U2VsZWN0ZWRFdmVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50LmlkbDogQWRkZWQuCisgICAgICAgICogTW9k
dWxlcy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5jcHA6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQu
aDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVy
Y2hhbnRFdmVudC5pZGw6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVu
dC5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENv
bnRhY3QuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hh
bnRTZXNzaW9uLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1l
dGhvZC5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRSZXF1ZXN0
VmFsaWRhdG9yLmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
UmVxdWVzdFZhbGlkYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L2Nv
Y29hL1BheW1lbnRDb250YWN0Q29jb2EubW06IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvYXBw
bGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNB
cHBsZVBheVBheW1lbnRBdXRob3JpemVkRXZlbnRDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnRDdXN0b20u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0FwcGxlUGF5U2Vzc2lvbkN1c3Rv
bS5jcHA6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXBwbGVQYXlTaGlwcGluZ0Nv
bnRhY3RTZWxlY3RlZEV2ZW50Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudEN1c3RvbS5jcHA6IEFkZGVk
LgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmluOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdl
dEZhY3RvcnkuaW46CisKKzIwMTYtMDYtMjEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KKwogICAgICAgICBCZWdpbiBtb3ZpbmcgdGhlIEFwcGxlIFBheSBjb2RlIHRvIHRo
ZSBvcGVuIHNvdXJjZSByZXBvc2l0b3J5CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTg5OTgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5k
ZXggYjA3MzgxZWM3ZmY2NTQzY2E3Mjk0NDAwOTE5NDMwYzNhNGRiZmI2My4uY2ExYjA3ODcxM2Vj
N2MwMTRlMDM3NzQwODZkOWJhN2UzMzI0ZDgxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC0yOSw2ICsyOSw3IEBACiBWUEFUSCA9IFwKICAgICAkKFdlYkNvcmUpIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvYWlycGxheSBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxl
cGF5IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9mZXRjaCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2dhbWVwYWQgXApA
QCAtNzYsNiArNzcsMTIgQEAgVlBBVEggPSBcCiAKIE5PTl9TVkdfQklORElOR19JRExTID0gXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9haXJwbGF5L1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxh
YmlsaXR5RXZlbnQuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQ
YXltZW50QXV0aG9yaXplZEV2ZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuaWRsIFwKKyAgICAkKFdlYkNv
cmUpL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmlkbCBcCisgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5p
ZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0
aG9kU2VsZWN0ZWRFdmVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmlkbCBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5pZGwgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRBdXRob3JpemVkRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVBheW1lbnRBdXRob3JpemVkRXZlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZGFkMWI1ZWEw
M2VlYTY1ZTZiNDc4N2U5YTZmYjEwYjY3MzY2MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudC5j
cHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBcHBsZVBheVBheW1lbnRBdXRob3JpemVkRXZlbnQuaCIKKworI2lmIEVOQUJMRShB
UFBMRV9QQVkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXBwbGVQYXlQYXltZW50QXV0aG9y
aXplZEV2ZW50OjpBcHBsZVBheVBheW1lbnRBdXRob3JpemVkRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBjb25zdCBQYXltZW50JiBwYXltZW50KQorICAgIDogRXZlbnQodHlwZSwgZmFs
c2UsIGZhbHNlKQorICAgICwgbV9wYXltZW50KHBheW1lbnQpCit7Cit9CisKK0FwcGxlUGF5UGF5
bWVudEF1dGhvcml6ZWRFdmVudDo6fkFwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudCgpCit7
Cit9CisKK0V2ZW50SW50ZXJmYWNlIEFwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudDo6ZXZl
bnRJbnRlcmZhY2UoKSBjb25zdAoreworICAgIHJldHVybiBBcHBsZVBheVBheW1lbnRBdXRob3Jp
emVkRXZlbnRJbnRlcmZhY2VUeXBlOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRBdXRob3JpemVkRXZl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50QXV0
aG9yaXplZEV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY1N2JjMDJkMWI3OGE3NGE3NTQzMDMyNmFiMGZj
NjA0OTA2OWY1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50LmgKQEAgLTAsMCArMSw1NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKworI2lu
Y2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiUGF5bWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEFwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudCBmaW5hbCA6IHB1Ymxp
YyBFdmVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxBcHBsZVBheVBheW1lbnRBdXRob3Jp
emVkRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFBheW1lbnQm
IHBheW1lbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcHBsZVBheVBh
eW1lbnRBdXRob3JpemVkRXZlbnQodHlwZSwgcGF5bWVudCkpOworICAgIH0KKworICAgIHZpcnR1
YWwgfkFwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudCgpOworCisgICAgY29uc3QgUGF5bWVu
dCYgcGF5bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bWVudDsgfQorCitwcml2YXRlOgorICAg
IEFwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGNvbnN0IFBheW1lbnQmKTsKKworICAgIC8vIEV2ZW50LgorICAgIEV2ZW50SW50ZXJmYWNlIGV2
ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBjb25zdCBQYXltZW50IG1fcGF5
bWVudDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudC5p
ZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTQ4MDRiYTZkZmU5YmRlNmRkOGQ0NWUyYjkxZGMyMzA2N2MyOTEzZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlQYXltZW50QXV0aG9yaXplZEV2ZW50LmlkbApAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworWworICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWSwKKyAgICBOb0ludGVyZmFjZU9i
amVjdCwKK10gaW50ZXJmYWNlIEFwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudCA6IEV2ZW50
IHsKKyAgICBbQ2FjaGVkQXR0cmlidXRlLCBDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBPYmplY3QgcGF5bWVudDsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2
ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iODI4ZmY2ZTJmNjQ0MGUyMWE3YTlmMTQ2NzI0YWViMzFhNmFh
NjM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50LmNwcApAQCAtMCwwICsxLDUyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFwcGxlUGF5UGF5bWVu
dE1ldGhvZFNlbGVjdGVkRXZlbnQuaCIKKworI2lmIEVOQUJMRShBUFBMRV9QQVkpCisKKyNpbmNs
dWRlICJQYXltZW50TWV0aG9kLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQXBwbGVQYXlQ
YXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudDo6QXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFBheW1lbnRNZXRob2QmIHBheW1l
bnRNZXRob2QpCisgICAgOiBFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UpCisgICAgLCBtX3BheW1l
bnRNZXRob2QocGF5bWVudE1ldGhvZCkKK3sKK30KKworQXBwbGVQYXlQYXltZW50TWV0aG9kU2Vs
ZWN0ZWRFdmVudDo6fkFwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQoKQoreworfQor
CitFdmVudEludGVyZmFjZSBBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50OjpldmVu
dEludGVyZmFjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEFwcGxlUGF5UGF5bWVudE1ldGhvZFNl
bGVjdGVkRXZlbnRJbnRlcmZhY2VUeXBlOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RTZWxl
Y3RlZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5
bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjBjZGIxZGIzNDg5MTMyMjJm
NTM0Yjc5MjJiMzBlZTYwMmFiODg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50LmgKQEAg
LTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQ
UExFX1BBWSkKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiUGF5bWVudE1ldGhvZC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBheW1lbnRNZXRob2Q7CisKK2NsYXNz
IEFwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQg
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRF
dmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgUGF5bWVudE1ldGhv
ZCYgcGF5bWVudE1ldGhvZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFw
cGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQodHlwZSwgcGF5bWVudE1ldGhvZCkpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgfkFwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQo
KTsKKworICAgIGNvbnN0IFBheW1lbnRNZXRob2QmIHBheW1lbnRNZXRob2QoKSB7IHJldHVybiBt
X3BheW1lbnRNZXRob2Q7IH0KKworcHJpdmF0ZToKKyAgICBBcHBsZVBheVBheW1lbnRNZXRob2RT
ZWxlY3RlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgUGF5bWVudE1ldGhv
ZCYpOworCisgICAgLy8gRXZlbnQuCisgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2Uo
KSBjb25zdCBvdmVycmlkZTsKKworICAgIGNvbnN0IFBheW1lbnRNZXRob2QgbV9wYXltZW50TWV0
aG9kOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVk
RXZlbnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiYTU3MmFmMDEyOTI4YjY3MjE4OWZiN2UwMGRiM2QzNmM5
NDg1YjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuaWRsCkBAIC0wLDAgKzEsMzEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9QVBQTEVfUEFZLAorICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAorXSBpbnRlcmZhY2UgQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0
ZWRFdmVudCA6IEV2ZW50IHsKKyAgICBbQ2FjaGVkQXR0cmlidXRlLCBDdXN0b21HZXR0ZXJdIHJl
YWRvbmx5IGF0dHJpYnV0ZSBPYmplY3QgcGF5bWVudE1ldGhvZDsKK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjY2NzcwMDI0MDA0OTgxMDFhY2U1Y2RlYjg0NWY2NTcxOTliZTVjYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNw
cApAQCAtMCwwICsxLDEzMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQXBwbGVQYXlTZXNzaW9uLmgiCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZ
KQorCisjaW5jbHVkZSAiQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50LmgiCisjaW5jbHVk
ZSAiQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudC5oIgorI2luY2x1ZGUgIkFwcGxl
UGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5oIgorI2luY2x1ZGUgIkFwcGxlUGF5U2hp
cHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50LmgiCisjaW5jbHVkZSAiQXBwbGVQYXlWYWxpZGF0ZU1l
cmNoYW50RXZlbnQuaCIKKyNpbmNsdWRlICJBcnJheVZhbHVlLmgiCisjaW5jbHVkZSAiRE9NV2lu
ZG93LmgiCisjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5j
bHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgi
CisjaW5jbHVkZSAiTGlua0ljb25Db2xsZWN0b3IuaCIKKyNpbmNsdWRlICJMaW5rSWNvblR5cGUu
aCIKKyNpbmNsdWRlICJNYWluRnJhbWUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAi
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaCIKKyNpbmNsdWRlICJQYXltZW50Q29udGFjdC5o
IgorI2luY2x1ZGUgIlBheW1lbnRDb29yZGluYXRvci5oIgorI2luY2x1ZGUgIlBheW1lbnRNZXJj
aGFudFNlc3Npb24uaCIKKyNpbmNsdWRlICJQYXltZW50TWV0aG9kLmgiCisjaW5jbHVkZSAiUGF5
bWVudFJlcXVlc3RWYWxpZGF0b3IuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBib29sIHBhcnNlRGlnaXQoVUNoYXIgZGlnaXQsIGJv
b2wgaXNOZWdhdGl2ZSwgaW50NjRfdCYgYW1vdW50KQoreworICAgIGlmICghaXNBU0NJSURpZ2l0
KGRpZ2l0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50NjRfdCBkaWdpdFZhbHVl
ID0gKGRpZ2l0IC0gJzAnKTsKKworICAgIGNvbnN0IGludDY0X3QgbWF4TXVsdGlwbGllciA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpIC8gMTA7CisKKyAgICAvLyBDaGVjayBv
dmVyZmxvdy4KKyAgICBpZiAoYW1vdW50ID4gbWF4TXVsdGlwbGllciB8fCAoYW1vdW50ID09IG1h
eE11bHRpcGxpZXIgJiYgZGlnaXRWYWx1ZSA+IChzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptYXgoKSAlIDEwKSArIGlzTmVnYXRpdmUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBhbW91bnQgPSBhbW91bnQgKiAxMCArIGRpZ2l0VmFsdWU7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKKy8vIFRoZSBhbW91bnQgZm9sbG93cyB0aGUgcmVndWxhciBleHByZXNzaW9uIC0/WzAtOV0r
KFwuWzAtOV1bMC05XSk/Lgorc3RhdGljIE9wdGlvbmFsPGludDY0X3Q+IHBhcnNlQW1vdW50KGNv
bnN0IFN0cmluZyYgYW1vdW50U3RyaW5nKQoreworICAgIGludDY0X3QgYW1vdW50ID0gMDsKKwor
ICAgIGJvb2wgaXNOZWdhdGl2ZSA9IGZhbHNlOworCisgICAgZW51bSBjbGFzcyBTdGF0ZSB7Cisg
ICAgICAgIFN0YXJ0LAorICAgICAgICBTaWduLAorICAgICAgICBEaWdpdCwKKyAgICAgICAgRG90
LAorICAgICAgICBEb3REaWdpdCwKKyAgICAgICAgRW5kLAorICAgIH07CisKKyAgICBTdGF0ZSBz
dGF0ZSA9IFN0YXRlOjpTdGFydDsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhbW91
bnRTdHJpbmcubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBVQ2hhciBjID0gYW1vdW50U3RyaW5n
W2ldOworCisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBTdGF0ZTo6U3Rh
cnQ6CisgICAgICAgICAgICBpZiAoYyA9PSAnLScpIHsKKyAgICAgICAgICAgICAgICBpc05lZ2F0
aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpTaWduOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXBhcnNl
RGlnaXQoYywgaXNOZWdhdGl2ZSwgYW1vdW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkRpZ2l0OworICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSBTdGF0ZTo6U2lnbjoKKyAgICAgICAgICAgIGlmICghcGFyc2VE
aWdpdChjLCBpc05lZ2F0aXZlLCBhbW91bnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBOdWxs
b3B0OworICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RGlnaXQ7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBjYXNlIFN0YXRlOjpEaWdpdDoKKyAgICAgICAgICAgIGlmIChjID09ICcu
JykgeworICAgICAgICAgICAgICAgIHN0YXRlID0gU3RhdGU6OkRvdDsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFwYXJzZURpZ2l0KGMs
IGlzTmVnYXRpdmUsIGFtb3VudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFN0YXRlOjpEb3Q6CisgICAgICAgICAg
ICBpZiAoIXBhcnNlRGlnaXQoYywgaXNOZWdhdGl2ZSwgYW1vdW50KSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gTnVsbG9wdDsKKworICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZTo6RG90RGlnaXQ7
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFN0YXRlOjpEb3REaWdpdDoKKyAg
ICAgICAgICAgIGlmICghcGFyc2VEaWdpdChjLCBpc05lZ2F0aXZlLCBhbW91bnQpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBOdWxsb3B0OworCisgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlOjpF
bmQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFN0YXRl
OjpFbmQ6CisgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKKyAgICBpZiAoc3RhdGUgIT0gU3RhdGU6OkRpZ2l0ICYmIHN0YXRlICE9IFN0YXRlOjpEb3RE
aWdpdCAmJiBzdGF0ZSAhPSBTdGF0ZTo6RW5kKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKwor
ICAgIGlmIChzdGF0ZSA9PSBTdGF0ZTo6RG90RGlnaXQpIHsKKyAgICAgICAgLy8gVGhlcmUgd2Fz
IGEgc2luZ2xlIGRpZ2l0IGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LgorICAgICAgICAvLyBGSVhN
RTogSGFuZGxlIHRoaXMgb3ZlcmZsb3dpbmcuCisgICAgICAgIGFtb3VudCAqPSAxMDsKKyAgICB9
IGVsc2UgaWYgKHN0YXRlID09IFN0YXRlOjpEaWdpdCkgeworICAgICAgICAvLyBUaGVyZSB3YXMg
bm8gZGVjaW1hbCBwb2ludC4KKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSB0aGlzIG92ZXJmbG93
aW5nLgorICAgICAgICBhbW91bnQgKj0gMTAwOworICAgIH0KKworICAgIGlmIChpc05lZ2F0aXZl
KQorICAgICAgICBhbW91bnQgPSAtYW1vdW50OworCisgICAgcmV0dXJuIGFtb3VudDsKK30KKwor
c3RhdGljIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpBZGRyZXNzRmllbGRzPiBjcmVhdGVBZGRy
ZXNzRmllbGRzKERPTVdpbmRvdyYgd2luZG93LCBjb25zdCBBcnJheVZhbHVlJiBhZGRyZXNzRmll
bGRzQXJyYXkpCit7CisgICAgUGF5bWVudFJlcXVlc3Q6OkFkZHJlc3NGaWVsZHMgcmVzdWx0Owor
CisgICAgc2l6ZV90IGFkZHJlc3NGaWVsZHNDb3VudDsKKyAgICBpZiAoIWFkZHJlc3NGaWVsZHNB
cnJheS5sZW5ndGgoYWRkcmVzc0ZpZWxkc0NvdW50KSkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFkZHJlc3NGaWVsZHNDb3VudDsgKytpKSB7
CisgICAgICAgIFN0cmluZyBhZGRyZXNzRmllbGQ7CisgICAgICAgIGlmICghYWRkcmVzc0ZpZWxk
c0FycmF5LmdldChpLCBhZGRyZXNzRmllbGQpKQorICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisKKyAgICAgICAgaWYgKGFkZHJlc3NGaWVsZCA9PSAicG9zdGFsQWRkcmVzcyIpCisgICAgICAg
ICAgICByZXN1bHQucG9zdGFsQWRkcmVzcyA9IHRydWU7CisgICAgICAgIGVsc2UgaWYgKGFkZHJl
c3NGaWVsZCA9PSAicGhvbmUiKQorICAgICAgICAgICAgcmVzdWx0LnBob25lID0gdHJ1ZTsKKyAg
ICAgICAgZWxzZSBpZiAoYWRkcmVzc0ZpZWxkID09ICJlbWFpbCIpCisgICAgICAgICAgICByZXN1
bHQuZW1haWwgPSB0cnVlOworICAgICAgICBlbHNlIGlmIChhZGRyZXNzRmllbGQgPT0gIm5hbWUi
KQorICAgICAgICAgICAgcmVzdWx0Lm5hbWUgPSB0cnVlOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlwiIiArIGFkZHJlc3NGaWVsZCwgIlwi
IGlzIG5vdCBhIHZhbGlkIGFkZHJlc3MgZmllbGQuIik7CisgICAgICAgICAgICB3aW5kb3cucHJp
bnRFcnJvck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBPcHRpb25h
bDxQYXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGU+IHRvTGluZUl0ZW1UeXBlKGNvbnN0IFN0
cmluZyYgdHlwZSkKK3sKKyAgICBpZiAodHlwZSA9PSAicGVuZGluZyIpCisgICAgICAgIHJldHVy
biBQYXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGU6OlBlbmRpbmc7CisgICAgaWYgKHR5cGUg
PT0gImZpbmFsIikKKyAgICAgICAgcmV0dXJuIFBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlw
ZTo6RmluYWw7CisKKyAgICByZXR1cm4gTnVsbG9wdDsKK30KKworc3RhdGljIGJvb2wgaXNWYWxp
ZExpbmVJdGVtUHJvcGVydHlOYW1lKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQoreworICAg
IGNvbnN0IGNoYXIqIHZhbGlkUHJvcGVydHlOYW1lc1tdID0geworICAgICAgICAidHlwZSIsCisg
ICAgICAgICJsYWJlbCIsCisgICAgICAgICJhbW91bnQiLAorICAgIH07CisKKyAgICBmb3IgKGF1
dG8mIHZhbGlkUHJvcGVydHlOYW1lIDogdmFsaWRQcm9wZXJ0eU5hbWVzKSB7CisgICAgICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gdmFsaWRQcm9wZXJ0eU5hbWUpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBPcHRpb25hbDxQ
YXltZW50UmVxdWVzdDo6TGluZUl0ZW0+IGNyZWF0ZUxpbmVJdGVtKERPTVdpbmRvdyYgd2luZG93
LCBjb25zdCBEaWN0aW9uYXJ5JiB0b3RhbCkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBwcm9wZXJ0
eU5hbWVzOworICAgIHRvdGFsLmdldE93blByb3BlcnR5TmFtZXMocHJvcGVydHlOYW1lcyk7CisK
KyAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6IHByb3BlcnR5TmFtZXMpIHsKKyAgICAgICAg
aWYgKCFpc1ZhbGlkTGluZUl0ZW1Qcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkgeworICAgICAg
ICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiXCIiICsgcHJvcGVydHlOYW1lLCAiXCIg
aXMgbm90IGEgdmFsaWQgbGluZSBpdGVtIHByb3BlcnR5IG5hbWUuIik7CisgICAgICAgICAgICB3
aW5kb3cucHJpbnRFcnJvck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIExpbmUgaXRlbSB0eXBlIGRlZmF1bHRz
IHRvIEZpbmFsLgorICAgIFBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSByZXN1bHQ7CisKKyAgICBp
ZiAoYXV0byB0eXBlU3RyaW5nID0gdG90YWwuZ2V0PFN0cmluZz4oInR5cGUiKSkgeworICAgICAg
ICBhdXRvIHR5cGUgPSB0b0xpbmVJdGVtVHlwZSgqdHlwZVN0cmluZyk7CisgICAgICAgIGlmICgh
dHlwZSkgeworICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiXCIiICsgKnR5
cGVTdHJpbmcsICJcIiBpcyBub3QgYSB2YWxpZCBsaW5lIGl0ZW0gdHlwZS4iKTsKKyAgICAgICAg
ICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0LnR5cGUgPSAqdHlwZTsKKyAg
ICB9CisKKyAgICBpZiAoYXV0byBsYWJlbCA9IHRvdGFsLmdldDxTdHJpbmc+KCJsYWJlbCIpKQor
ICAgICAgICByZXN1bHQubGFiZWwgPSAqbGFiZWw7CisgICAgaWYgKGF1dG8gYW1vdW50U3RyaW5n
ID0gdG90YWwuZ2V0PFN0cmluZz4oImFtb3VudCIpKSB7CisgICAgICAgIGlmIChhdXRvIGFtb3Vu
dCA9IHBhcnNlQW1vdW50KCphbW91bnRTdHJpbmcpKQorICAgICAgICAgICAgcmVzdWx0LmFtb3Vu
dCA9ICphbW91bnQ7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXV0byBtZXNzYWdlID0g
bWFrZVN0cmluZygiXCIiICsgKmFtb3VudFN0cmluZywgIlwiIGlzIG5vdCBhIHZhbGlkIGFtb3Vu
dC4iKTsKKyAgICAgICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZShtZXNzYWdlKTsKKyAg
ICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxQYXltZW50UmVxdWVzdDo6TGlu
ZUl0ZW0+PiBjcmVhdGVMaW5lSXRlbXMoRE9NV2luZG93JiB3aW5kb3csIGNvbnN0IEFycmF5VmFs
dWUmIGxpbmVJdGVtc0FycmF5KQoreworICAgIFZlY3RvcjxQYXltZW50UmVxdWVzdDo6TGluZUl0
ZW0+IHJlc3VsdDsKKworICAgIHNpemVfdCBsaW5lSXRlbUNvdW50OworICAgIGlmICghbGluZUl0
ZW1zQXJyYXkubGVuZ3RoKGxpbmVJdGVtQ291bnQpKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGluZUl0ZW1Db3VudDsgKytpKSB7CisgICAg
ICAgIERpY3Rpb25hcnkgbGluZUl0ZW1EaWN0aW9uYXJ5OworICAgICAgICBpZiAoIWxpbmVJdGVt
c0FycmF5LmdldChpLCBsaW5lSXRlbURpY3Rpb25hcnkpKQorICAgICAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisKKyAgICAgICAgaWYgKGF1dG8gbGluZUl0ZW0gPSBjcmVhdGVMaW5lSXRlbSh3aW5k
b3csIGxpbmVJdGVtRGljdGlvbmFyeSkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCpsaW5l
SXRlbSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIE9wdGlvbmFs
PFBheW1lbnRSZXF1ZXN0OjpNZXJjaGFudENhcGFiaWxpdGllcz4gY3JlYXRlTWVyY2hhbnRDYXBh
YmlsaXRpZXMoRE9NV2luZG93JiB3aW5kb3csIGNvbnN0IEFycmF5VmFsdWUmIG1lcmNoYW50Q2Fw
YWJpbGl0aWVzQXJyYXkpCit7CisgICAgUGF5bWVudFJlcXVlc3Q6Ok1lcmNoYW50Q2FwYWJpbGl0
aWVzIHJlc3VsdDsKKworICAgIHNpemVfdCBtZXJjaGFudENhcGFiaWxpdGllc0NvdW50OworICAg
IGlmICghbWVyY2hhbnRDYXBhYmlsaXRpZXNBcnJheS5sZW5ndGgobWVyY2hhbnRDYXBhYmlsaXRp
ZXNDb3VudCkpCisgICAgICAgIHJldHVybiBOdWxsb3B0OworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtZXJjaGFudENhcGFiaWxpdGllc0NvdW50OyArK2kpIHsKKyAgICAgICAgU3RyaW5n
IG1lcmNoYW50Q2FwYWJpbGl0eTsKKyAgICAgICAgaWYgKCFtZXJjaGFudENhcGFiaWxpdGllc0Fy
cmF5LmdldChpLCBtZXJjaGFudENhcGFiaWxpdHkpKQorICAgICAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisKKyAgICAgICAgaWYgKG1lcmNoYW50Q2FwYWJpbGl0eSA9PSAic3VwcG9ydHMzRFMiKQor
ICAgICAgICAgICAgcmVzdWx0LnN1cHBvcnRzM0RTID0gdHJ1ZTsKKyAgICAgICAgZWxzZSBpZiAo
bWVyY2hhbnRDYXBhYmlsaXR5ID09ICJzdXBwb3J0c0VNViIpCisgICAgICAgICAgICByZXN1bHQu
c3VwcG9ydHNFTVYgPSB0cnVlOworICAgICAgICBlbHNlIGlmIChtZXJjaGFudENhcGFiaWxpdHkg
PT0gInN1cHBvcnRzQ3JlZGl0IikKKyAgICAgICAgICAgIHJlc3VsdC5zdXBwb3J0c0NyZWRpdCA9
IHRydWU7CisgICAgICAgIGVsc2UgaWYgKG1lcmNoYW50Q2FwYWJpbGl0eSA9PSAic3VwcG9ydHNE
ZWJpdCIpCisgICAgICAgICAgICByZXN1bHQuc3VwcG9ydHNEZWJpdCA9IHRydWU7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiXCIiICsgbWVy
Y2hhbnRDYXBhYmlsaXR5LCAiXCIgaXMgbm90IGEgdmFsaWQgbWVyY2hhbnQgY2FwYWJpbGl0eS4i
KTsKKyAgICAgICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZShtZXNzYWdlKTsKKyAgICAg
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworc3RhdGljIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpTdXBwb3J0ZWROZXR3
b3Jrcz4gY3JlYXRlU3VwcG9ydGVkTmV0d29ya3MoRE9NV2luZG93JiB3aW5kb3csIGNvbnN0IEFy
cmF5VmFsdWUmIHN1cHBvcnRlZE5ldHdvcmtzQXJyYXkpCit7CisgICAgUGF5bWVudFJlcXVlc3Q6
OlN1cHBvcnRlZE5ldHdvcmtzIHJlc3VsdDsKKworICAgIHNpemVfdCBzdXBwb3J0ZWROZXR3b3Jr
c0NvdW50OworICAgIGlmICghc3VwcG9ydGVkTmV0d29ya3NBcnJheS5sZW5ndGgoc3VwcG9ydGVk
TmV0d29ya3NDb3VudCkpCisgICAgICAgIHJldHVybiBOdWxsb3B0OworCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzdXBwb3J0ZWROZXR3b3Jrc0NvdW50OyArK2kpIHsKKyAgICAgICAgU3Ry
aW5nIHN1cHBvcnRlZE5ldHdvcms7CisgICAgICAgIGlmICghc3VwcG9ydGVkTmV0d29ya3NBcnJh
eS5nZXQoaSwgc3VwcG9ydGVkTmV0d29yaykpCisgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsK
KworICAgICAgICBpZiAoc3VwcG9ydGVkTmV0d29yayA9PSAiYW1leCIpCisgICAgICAgICAgICBy
ZXN1bHQuYW1leCA9IHRydWU7CisgICAgICAgIGVsc2UgaWYgKHN1cHBvcnRlZE5ldHdvcmsgPT0g
ImNoaW5hVW5pb25QYXkiKQorICAgICAgICAgICAgcmVzdWx0LmNoaW5hVW5pb25QYXkgPSB0cnVl
OworICAgICAgICBlbHNlIGlmIChzdXBwb3J0ZWROZXR3b3JrID09ICJkaXNjb3ZlciIpCisgICAg
ICAgICAgICByZXN1bHQuZGlzY292ZXIgPSB0cnVlOworICAgICAgICBlbHNlIGlmIChzdXBwb3J0
ZWROZXR3b3JrID09ICJpbnRlcmFjIikKKyAgICAgICAgICAgIHJlc3VsdC5pbnRlcmFjID0gdHJ1
ZTsKKyAgICAgICAgZWxzZSBpZiAoc3VwcG9ydGVkTmV0d29yayA9PSAibWFzdGVyQ2FyZCIpCisg
ICAgICAgICAgICByZXN1bHQubWFzdGVyQ2FyZCA9IHRydWU7CisgICAgICAgIGVsc2UgaWYgKHN1
cHBvcnRlZE5ldHdvcmsgPT0gInByaXZhdGVMYWJlbCIpCisgICAgICAgICAgICByZXN1bHQucHJp
dmF0ZUxhYmVsID0gdHJ1ZTsKKyAgICAgICAgZWxzZSBpZiAoc3VwcG9ydGVkTmV0d29yayA9PSAi
dmlzYSIpCisgICAgICAgICAgICByZXN1bHQudmlzYSA9IHRydWU7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiXCIiICsgc3VwcG9ydGVkTmV0
d29yaywgIlwiIGlzIG5vdCBhIHZhbGlkIHBheW1lbnQgbmV0d29yay4iKTsKKyAgICAgICAgICAg
IHdpbmRvdy5wcmludEVycm9yTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3Rh
dGljIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ1R5cGU+IHRvU2hpcHBpbmdUeXBl
KGNvbnN0IFN0cmluZyYgc2hpcHBpbmdUeXBlU3RyaW5nKQoreworICAgIGlmIChzaGlwcGluZ1R5
cGVTdHJpbmcgPT0gInNoaXBwaW5nIikKKyAgICAgICAgcmV0dXJuIFBheW1lbnRSZXF1ZXN0OjpT
aGlwcGluZ1R5cGU6OlNoaXBwaW5nOworICAgIGlmIChzaGlwcGluZ1R5cGVTdHJpbmcgPT0gImRl
bGl2ZXJ5IikKKyAgICAgICAgcmV0dXJuIFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ1R5cGU6OkRl
bGl2ZXJ5OworICAgIGlmIChzaGlwcGluZ1R5cGVTdHJpbmcgPT0gInN0b3JlUGlja3VwIikKKyAg
ICAgICAgcmV0dXJuIFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ1R5cGU6OlN0b3JlUGlja3VwOwor
ICAgIGlmIChzaGlwcGluZ1R5cGVTdHJpbmcgPT0gInNlcnZpY2VQaWNrdXAiKQorICAgICAgICBy
ZXR1cm4gUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nVHlwZTo6U2VydmljZVBpY2t1cDsKKworICAg
IHJldHVybiBOdWxsb3B0OworfQorCitzdGF0aWMgYm9vbCBpc1ZhbGlkU2hpcHBpbmdNZXRob2RQ
cm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCit7CisgICAgY29uc3QgY2hh
ciogdmFsaWRQcm9wZXJ0eU5hbWVzW10gPSB7CisgICAgICAgICJsYWJlbCIsCisgICAgICAgICJk
ZXRhaWwiLAorICAgICAgICAiYW1vdW50IiwKKyAgICAgICAgImlkZW50aWZpZXIiLAorICAgIH07
CisKKyAgICBmb3IgKGF1dG8mIHZhbGlkUHJvcGVydHlOYW1lIDogdmFsaWRQcm9wZXJ0eU5hbWVz
KSB7CisgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdmFsaWRQcm9wZXJ0eU5hbWUpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0
YXRpYyBPcHRpb25hbDxQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Q+IGNyZWF0ZVNoaXBw
aW5nTWV0aG9kKERPTVdpbmRvdyYgd2luZG93LCBjb25zdCBEaWN0aW9uYXJ5JiBzaGlwcGluZ01l
dGhvZERpY3Rpb25hcnkpCit7CisgICAgVmVjdG9yPFN0cmluZz4gcHJvcGVydHlOYW1lczsKKyAg
ICBzaGlwcGluZ01ldGhvZERpY3Rpb25hcnkuZ2V0T3duUHJvcGVydHlOYW1lcyhwcm9wZXJ0eU5h
bWVzKTsKKworICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1lIDogcHJvcGVydHlOYW1lcykgewor
ICAgICAgICBpZiAoIWlzVmFsaWRTaGlwcGluZ01ldGhvZFByb3BlcnR5TmFtZShwcm9wZXJ0eU5h
bWUpKSB7CisgICAgICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJcIiIgKyBwcm9w
ZXJ0eU5hbWUsICJcIiBpcyBub3QgYSB2YWxpZCBzaGlwcGluZyBtZXRob2QgcHJvcGVydHkgbmFt
ZS4iKTsKKyAgICAgICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZShtZXNzYWdlKTsKKyAg
ICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICB9CisgICAgfQorCisgICAgUGF5bWVu
dFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kIHJlc3VsdDsKKworICAgIGF1dG8gbGFiZWwgPSBzaGlw
cGluZ01ldGhvZERpY3Rpb25hcnkuZ2V0PFN0cmluZz4oImxhYmVsIik7CisgICAgaWYgKCFsYWJl
bCkgeworICAgICAgICB3aW5kb3cucHJpbnRFcnJvck1lc3NhZ2UoIk1pc3Npbmcgc2hpcHBpbmcg
bWV0aG9kIGxhYmVsLiIpOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICB9CisgICAgcmVz
dWx0LmxhYmVsID0gKmxhYmVsOworCisgICAgYXV0byBkZXRhaWwgPSBzaGlwcGluZ01ldGhvZERp
Y3Rpb25hcnkuZ2V0PFN0cmluZz4oImRldGFpbCIpOworICAgIGlmICghZGV0YWlsKSB7CisgICAg
ICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZSgiTWlzc2luZyBzaGlwcGluZyBtZXRob2QgZGV0
YWlsLiIpOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICB9CisgICAgcmVzdWx0LmRldGFp
bCA9ICpkZXRhaWw7CisKKyAgICBhdXRvIGFtb3VudFN0cmluZyA9IHNoaXBwaW5nTWV0aG9kRGlj
dGlvbmFyeS5nZXQ8U3RyaW5nPigiYW1vdW50Iik7CisgICAgaWYgKCFhbW91bnRTdHJpbmcpIHsK
KyAgICAgICAgd2luZG93LnByaW50RXJyb3JNZXNzYWdlKCJNaXNzaW5nIHNoaXBwaW5nIG1ldGhv
ZCBhbW91bnQuIik7CisgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIH0KKworICAgIGlmIChh
dXRvIGFtb3VudCA9IHBhcnNlQW1vdW50KCphbW91bnRTdHJpbmcpKQorICAgICAgICByZXN1bHQu
YW1vdW50ID0gKmFtb3VudDsKKyAgICBlbHNlIHsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gbWFr
ZVN0cmluZygiXCIiICsgKmFtb3VudFN0cmluZywgIlwiIGlzIG5vdCBhIHZhbGlkIGFtb3VudC4i
KTsKKyAgICAgICAgd2luZG93LnByaW50RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOworICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBzaGlwcGluZ01l
dGhvZERpY3Rpb25hcnkuZ2V0PFN0cmluZz4oImlkZW50aWZpZXIiKTsKKyAgICBpZiAoIWlkZW50
aWZpZXIpIHsKKyAgICAgICAgd2luZG93LnByaW50RXJyb3JNZXNzYWdlKCJNaXNzaW5nIHNoaXBw
aW5nIG1ldGhvZCBpZGVudGlmaWVyLiIpOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICB9
CisgICAgcmVzdWx0LmlkZW50aWZpZXIgPSAqaWRlbnRpZmllcjsKKworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3N0YXRpYyBPcHRpb25hbDxWZWN0b3I8UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5n
TWV0aG9kPj4gY3JlYXRlU2hpcHBpbmdNZXRob2RzKERPTVdpbmRvdyYgd2luZG93LCBjb25zdCBB
cnJheVZhbHVlJiBzaGlwcGluZ01ldGhvZHNBcnJheSkKK3sKKyAgICBWZWN0b3I8UGF5bWVudFJl
cXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiByZXN1bHQ7CisKKyAgICBzaXplX3Qgc2hpcHBpbmdNZXRo
b2RDb3VudDsKKyAgICBpZiAoIXNoaXBwaW5nTWV0aG9kc0FycmF5Lmxlbmd0aChzaGlwcGluZ01l
dGhvZENvdW50KSkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNoaXBwaW5nTWV0aG9kQ291bnQ7ICsraSkgeworICAgICAgICBEaWN0aW9uYXJ5
IHNoaXBwaW5nTWV0aG9kRGljdGlvbmFyeTsKKyAgICAgICAgaWYgKCFzaGlwcGluZ01ldGhvZHNB
cnJheS5nZXQoaSwgc2hpcHBpbmdNZXRob2REaWN0aW9uYXJ5KSkKKyAgICAgICAgICAgIHJldHVy
biBOdWxsb3B0OworCisgICAgICAgIGlmIChhdXRvIHNoaXBwaW5nTWV0aG9kID0gY3JlYXRlU2hp
cHBpbmdNZXRob2Qod2luZG93LCBzaGlwcGluZ01ldGhvZERpY3Rpb25hcnkpKQorICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgqc2hpcHBpbmdNZXRob2QpOworICAgIH0KKworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK3N0YXRpYyBib29sIGlzVmFsaWRQYXltZW50UmVxdWVzdFByb3BlcnR5TmFt
ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKK3sKKyAgICBjb25zdCBjaGFyKiB2YWxpZFBy
b3BlcnR5TmFtZXNbXSA9IHsKKyAgICAgICAgIm1lcmNoYW50Q2FwYWJpbGl0aWVzIiwKKyAgICAg
ICAgInN1cHBvcnRlZE5ldHdvcmtzIiwKKyAgICAgICAgImNvdW50cnlDb2RlIiwKKyAgICAgICAg
ImN1cnJlbmN5Q29kZSIsCisgICAgICAgICJyZXF1aXJlZEJpbGxpbmdBZGRyZXNzRmllbGRzIiwK
KyAgICAgICAgImJpbGxpbmdDb250YWN0IiwKKyAgICAgICAgInJlcXVpcmVkU2hpcHBpbmdBZGRy
ZXNzRmllbGRzIiwKKyAgICAgICAgInNoaXBwaW5nQ29udGFjdCIsCisgICAgICAgICJzaGlwcGlu
Z01ldGhvZHMiLAorICAgICAgICAidG90YWwiLAorICAgICAgICAibGluZUl0ZW1zIiwKKyAgICAg
ICAgImFwcGxpY2F0aW9uRGF0YSIsCisgICAgfTsKKworICAgIGZvciAoYXV0byYgdmFsaWRQcm9w
ZXJ0eU5hbWUgOiB2YWxpZFByb3BlcnR5TmFtZXMpIHsKKyAgICAgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSB2YWxpZFByb3BlcnR5TmFtZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0
PiBjcmVhdGVQYXltZW50UmVxdWVzdChET01XaW5kb3cmIHdpbmRvdywgY29uc3QgRGljdGlvbmFy
eSYgZGljdGlvbmFyeSkKK3sKKyAgICBQYXltZW50UmVxdWVzdCBwYXltZW50UmVxdWVzdDsKKwor
ICAgIFZlY3RvcjxTdHJpbmc+IHByb3BlcnR5TmFtZXM7CisgICAgZGljdGlvbmFyeS5nZXRPd25Q
cm9wZXJ0eU5hbWVzKHByb3BlcnR5TmFtZXMpOworCisgICAgZm9yIChhdXRvJiBwcm9wZXJ0eU5h
bWUgOiBwcm9wZXJ0eU5hbWVzKSB7CisgICAgICAgIGlmICghaXNWYWxpZFBheW1lbnRSZXF1ZXN0
UHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgICAgIGF1dG8gbWVzc2FnZSA9
IG1ha2VTdHJpbmcoIlwiIiArIHByb3BlcnR5TmFtZSwgIlwiIGlzIG5vdCBhIHZhbGlkIHBheW1l
bnQgcmVxdWVzdCBwcm9wZXJ0eSBuYW1lLiIpOworICAgICAgICAgICAgd2luZG93LnByaW50RXJy
b3JNZXNzYWdlKG1lc3NhZ2UpOworICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAoYXV0byBtZXJjaGFudENhcGFiaWxpdGllc0FycmF5ID0gZGlj
dGlvbmFyeS5nZXQ8QXJyYXlWYWx1ZT4oIm1lcmNoYW50Q2FwYWJpbGl0aWVzIikpIHsKKyAgICAg
ICAgYXV0byBtZXJjaGFudENhcGFiaWxpdGllcyA9IGNyZWF0ZU1lcmNoYW50Q2FwYWJpbGl0aWVz
KHdpbmRvdywgKm1lcmNoYW50Q2FwYWJpbGl0aWVzQXJyYXkpOworICAgICAgICBpZiAoIW1lcmNo
YW50Q2FwYWJpbGl0aWVzKQorICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisKKyAgICAgICAg
cGF5bWVudFJlcXVlc3Quc2V0TWVyY2hhbnRDYXBhYmlsaXRpZXMoKm1lcmNoYW50Q2FwYWJpbGl0
aWVzKTsKKyAgICB9CisKKyAgICBpZiAoYXV0byBzdXBwb3J0ZWROZXR3b3Jrc0FycmF5ID0gZGlj
dGlvbmFyeS5nZXQ8QXJyYXlWYWx1ZT4oInN1cHBvcnRlZE5ldHdvcmtzIikpIHsKKyAgICAgICAg
YXV0byBzdXBwb3J0ZWROZXR3b3JrcyA9IGNyZWF0ZVN1cHBvcnRlZE5ldHdvcmtzKHdpbmRvdywg
KnN1cHBvcnRlZE5ldHdvcmtzQXJyYXkpOworICAgICAgICBpZiAoIXN1cHBvcnRlZE5ldHdvcmtz
KQorICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisKKyAgICAgICAgcGF5bWVudFJlcXVlc3Qu
c2V0U3VwcG9ydGVkTmV0d29ya3MoKnN1cHBvcnRlZE5ldHdvcmtzKTsKKyAgICB9CisKKyAgICBp
ZiAoYXV0byBjb3VudHJ5Q29kZSA9IGRpY3Rpb25hcnkuZ2V0PFN0cmluZz4oImNvdW50cnlDb2Rl
IikpCisgICAgICAgIHBheW1lbnRSZXF1ZXN0LnNldENvdW50cnlDb2RlKCpjb3VudHJ5Q29kZSk7
CisgICAgaWYgKGF1dG8gY3VycmVuY3lDb2RlID0gZGljdGlvbmFyeS5nZXQ8U3RyaW5nPigiY3Vy
cmVuY3lDb2RlIikpCisgICAgICAgIHBheW1lbnRSZXF1ZXN0LnNldEN1cnJlbmN5Q29kZSgqY3Vy
cmVuY3lDb2RlKTsKKworICAgIGlmIChhdXRvIHJlcXVpcmVkQmlsbGluZ0FkZHJlc3NGaWVsZHNB
cnJheSA9IGRpY3Rpb25hcnkuZ2V0PEFycmF5VmFsdWU+KCJyZXF1aXJlZEJpbGxpbmdBZGRyZXNz
RmllbGRzIikpIHsKKyAgICAgICAgYXV0byByZXF1aXJlZEJpbGxpbmdBZGRyZXNzRmllbGRzID0g
Y3JlYXRlQWRkcmVzc0ZpZWxkcyh3aW5kb3csICpyZXF1aXJlZEJpbGxpbmdBZGRyZXNzRmllbGRz
QXJyYXkpOworICAgICAgICBpZiAoIXJlcXVpcmVkQmlsbGluZ0FkZHJlc3NGaWVsZHMpCisgICAg
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKKworICAgICAgICBwYXltZW50UmVxdWVzdC5zZXRSZXF1
aXJlZEJpbGxpbmdBZGRyZXNzRmllbGRzKCpyZXF1aXJlZEJpbGxpbmdBZGRyZXNzRmllbGRzKTsK
KyAgICB9CisKKyAgICBpZiAoYXV0byBiaWxsaW5nQ29udGFjdFZhbHVlID0gZGljdGlvbmFyeS5n
ZXQ8SlNDOjpKU1ZhbHVlPigiYmlsbGluZ0NvbnRhY3QiKSkgeworICAgICAgICBTdHJpbmcgZXJy
b3JNZXNzYWdlOworICAgICAgICBhdXRvIGJpbGxpbmdDb250YWN0ID0gUGF5bWVudENvbnRhY3Q6
OmZyb21KUygqSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgKmJpbGxpbmdD
b250YWN0VmFsdWUsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIGlmICghYmlsbGluZ0NvbnRhY3Qp
IHsKKyAgICAgICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOwor
ICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIH0KKworICAgICAgICBwYXltZW50
UmVxdWVzdC5zZXRCaWxsaW5nQ29udGFjdCgqYmlsbGluZ0NvbnRhY3QpOworICAgIH0KKworICAg
IGlmIChhdXRvIHJlcXVpcmVkU2hpcHBpbmdBZGRyZXNzRmllbGRzQXJyYXkgPSBkaWN0aW9uYXJ5
LmdldDxBcnJheVZhbHVlPigicmVxdWlyZWRTaGlwcGluZ0FkZHJlc3NGaWVsZHMiKSkgeworICAg
ICAgICBhdXRvIHJlcXVpcmVkU2hpcHBpbmdBZGRyZXNzRmllbGRzID0gY3JlYXRlQWRkcmVzc0Zp
ZWxkcyh3aW5kb3csICpyZXF1aXJlZFNoaXBwaW5nQWRkcmVzc0ZpZWxkc0FycmF5KTsKKyAgICAg
ICAgaWYgKCFyZXF1aXJlZFNoaXBwaW5nQWRkcmVzc0ZpZWxkcykKKyAgICAgICAgICAgIHJldHVy
biBOdWxsb3B0OworCisgICAgICAgIHBheW1lbnRSZXF1ZXN0LnNldFJlcXVpcmVkU2hpcHBpbmdB
ZGRyZXNzRmllbGRzKCpyZXF1aXJlZFNoaXBwaW5nQWRkcmVzc0ZpZWxkcyk7CisgICAgfQorCisg
ICAgaWYgKGF1dG8gc2hpcHBpbmdDb250YWN0VmFsdWUgPSBkaWN0aW9uYXJ5LmdldDxKU0M6OkpT
VmFsdWU+KCJzaGlwcGluZ0NvbnRhY3QiKSkgeworICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdl
OworICAgICAgICBhdXRvIHNoaXBwaW5nQ29udGFjdCA9IFBheW1lbnRDb250YWN0Ojpmcm9tSlMo
KkpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCksICpzaGlwcGluZ0NvbnRhY3RW
YWx1ZSwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgaWYgKCFzaGlwcGluZ0NvbnRhY3QpIHsKKyAg
ICAgICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOworICAgICAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIH0KKworICAgICAgICBwYXltZW50UmVxdWVz
dC5zZXRTaGlwcGluZ0NvbnRhY3QoKnNoaXBwaW5nQ29udGFjdCk7CisgICAgfQorCisgICAgaWYg
KGF1dG8gc2hpcHBpbmdUeXBlU3RyaW5nID0gZGljdGlvbmFyeS5nZXQ8U3RyaW5nPigic2hpcHBp
bmdUeXBlIikpIHsKKyAgICAgICAgYXV0byBzaGlwcGluZ1R5cGUgPSB0b1NoaXBwaW5nVHlwZSgq
c2hpcHBpbmdUeXBlU3RyaW5nKTsKKworICAgICAgICBpZiAoIXNoaXBwaW5nVHlwZSkgeworICAg
ICAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiXCIiICsgKnNoaXBwaW5nVHlwZVN0
cmluZywgIlwiIGlzIG5vdCBhIHZhbGlkIHNoaXBwaW5nIHR5cGUuIik7CisgICAgICAgICAgICB3
aW5kb3cucHJpbnRFcnJvck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKyAgICAgICAgfQorICAgICAgICBwYXltZW50UmVxdWVzdC5zZXRTaGlwcGluZ1R5cGUo
KnNoaXBwaW5nVHlwZSk7CisgICAgfQorCisgICAgaWYgKGF1dG8gc2hpcHBpbmdNZXRob2RzQXJy
YXkgPSBkaWN0aW9uYXJ5LmdldDxBcnJheVZhbHVlPigic2hpcHBpbmdNZXRob2RzIikpIHsKKyAg
ICAgICAgaWYgKGF1dG8gc2hpcHBpbmdNZXRob2RzID0gY3JlYXRlU2hpcHBpbmdNZXRob2RzKHdp
bmRvdywgKnNoaXBwaW5nTWV0aG9kc0FycmF5KSkKKyAgICAgICAgICAgIHBheW1lbnRSZXF1ZXN0
LnNldFNoaXBwaW5nTWV0aG9kcygqc2hpcHBpbmdNZXRob2RzKTsKKyAgICB9CisKKyAgICBpZiAo
YXV0byB0b3RhbERpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5LmdldDxEaWN0aW9uYXJ5PigidG90YWwi
KSkgeworICAgICAgICBhdXRvIHRvdGFsID0gY3JlYXRlTGluZUl0ZW0od2luZG93LCAqdG90YWxE
aWN0aW9uYXJ5KTsKKyAgICAgICAgaWYgKCF0b3RhbCkKKyAgICAgICAgICAgIHJldHVybiBOdWxs
b3B0OworCisgICAgICAgIHBheW1lbnRSZXF1ZXN0LnNldFRvdGFsKCp0b3RhbCk7CisgICAgfQor
CisgICAgaWYgKGF1dG8gbGluZUl0ZW1zQXJyYXkgPSBkaWN0aW9uYXJ5LmdldDxBcnJheVZhbHVl
PigibGluZUl0ZW1zIikpIHsKKyAgICAgICAgaWYgKGF1dG8gbGluZUl0ZW1zID0gY3JlYXRlTGlu
ZUl0ZW1zKHdpbmRvdywgKmxpbmVJdGVtc0FycmF5KSkKKyAgICAgICAgICAgIHBheW1lbnRSZXF1
ZXN0LnNldExpbmVJdGVtcygqbGluZUl0ZW1zKTsKKyAgICB9CisKKyAgICBpZiAoYXV0byBhcHBs
aWNhdGlvbkRhdGEgPSBkaWN0aW9uYXJ5LmdldDxTdHJpbmc+KCJhcHBsaWNhdGlvbkRhdGEiKSkK
KyAgICAgICAgcGF5bWVudFJlcXVlc3Quc2V0QXBwbGljYXRpb25EYXRhKCphcHBsaWNhdGlvbkRh
dGEpOworCisgICAgcmV0dXJuIHBheW1lbnRSZXF1ZXN0OworfQorCitzdGF0aWMgYm9vbCBpc1Nl
Y3VyZShEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIpCit7CisgICAgaWYgKCFkb2N1bWVu
dExvYWRlci5yZXNwb25zZSgpLnVybCgpLnByb3RvY29sSXMoImh0dHBzIikpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmICghZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5jZXJ0aWZp
Y2F0ZUluZm8oKSB8fCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygp
LT5jb250YWluc05vblJvb3RTSEExU2lnbmVkQ2VydGlmaWNhdGUoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGNhbkNhbGxBcHBs
ZVBheVNlc3Npb25BUElzKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nJiBlcnJvck1lc3NhZ2Up
Cit7CisgICAgaWYgKCFpc1NlY3VyZSgqZG9jdW1lbnQubG9hZGVyKCkpKSB7CisgICAgICAgIGVy
cm9yTWVzc2FnZSA9ICJUcnlpbmcgdG8gY2FsbCBhbiBBcHBsZVBheVNlc3Npb24gQVBJIGZyb20g
YW4gaW5zZWN1cmUgZG9jdW1lbnQuIjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGF1dG8mIHRvcERvY3VtZW50ID0gZG9jdW1lbnQudG9wRG9jdW1lbnQoKTsKKyAgICBpZiAo
JmRvY3VtZW50ICE9ICZ0b3BEb2N1bWVudCkgeworICAgICAgICBhdXRvJiB0b3BPcmlnaW4gPSAq
dG9wRG9jdW1lbnQudG9wT3JpZ2luKCk7CisKKyAgICAgICAgaWYgKCFkb2N1bWVudC5zZWN1cml0
eU9yaWdpbigpLT5pc1NhbWVTY2hlbWVIb3N0UG9ydCgmdG9wT3JpZ2luKSkgeworICAgICAgICAg
ICAgZXJyb3JNZXNzYWdlID0gIlRyeWluZyB0byBjYWxsIGFuIEFwcGxlUGF5U2Vzc2lvbiBBUEkg
ZnJvbSBhIGRvY3VtZW50IHdpdGggYW4gZGlmZmVyZW50IHNlY3VyaXR5IG9yaWdpbiB0aGFuIGl0
cyB0b3AtbGV2ZWwgZnJhbWUuIjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorCisgICAgICAgIGZvciAoYXV0byogYW5jZXN0b3JEb2N1bWVudCA9IGRvY3VtZW50LnBhcmVu
dERvY3VtZW50KCk7IGFuY2VzdG9yRG9jdW1lbnQgIT0gJnRvcERvY3VtZW50OyBhbmNlc3RvckRv
Y3VtZW50ID0gYW5jZXN0b3JEb2N1bWVudC0+cGFyZW50RG9jdW1lbnQoKSkgeworICAgICAgICAg
ICAgaWYgKCFpc1NlY3VyZSgqYW5jZXN0b3JEb2N1bWVudC0+bG9hZGVyKCkpKSB7CisgICAgICAg
ICAgICAgICAgZXJyb3JNZXNzYWdlID0gIlRyeWluZyB0byBjYWxsIGFuIEFwcGxlUGF5U2Vzc2lv
biBBUEkgZnJvbSBhIGRvY3VtZW50IHdpdGggYW4gaW5zZWN1cmUgcGFyZW50IGZyYW1lLiI7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoIWFuY2VzdG9yRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmlzU2FtZVNjaGVtZUhv
c3RQb3J0KCZ0b3BPcmlnaW4pKSB7CisgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gIlRy
eWluZyB0byBjYWxsIGFuIEFwcGxlUGF5U2Vzc2lvbiBBUEkgZnJvbSBhIGRvY3VtZW50IHdpdGgg
YW4gZGlmZmVyZW50IHNlY3VyaXR5IG9yaWdpbiB0aGFuIGl0cyB0b3AtbGV2ZWwgZnJhbWUuIjsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUmVmUHRyPEFwcGxlUGF5U2Vzc2lvbj4g
QXBwbGVQYXlTZXNzaW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCB2ZXJz
aW9uLCBjb25zdCBEaWN0aW9uYXJ5JiBkaWN0aW9uYXJ5LCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICBET01XaW5kb3cmIHdpbmRvdyA9ICpkb2N1bWVudC5kb21XaW5kb3coKTsKKworICAgIFN0
cmluZyBlcnJvck1lc3NhZ2U7CisgICAgaWYgKCFjYW5DYWxsQXBwbGVQYXlTZXNzaW9uQVBJcyhk
b2N1bWVudCwgZXJyb3JNZXNzYWdlKSkgeworICAgICAgICB3aW5kb3cucHJpbnRFcnJvck1lc3Nh
Z2UoZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGF1dG8mIHBheW1lbnRDb29yZGluYXRv
ciA9IGRvY3VtZW50LmZyYW1lKCktPm1haW5GcmFtZSgpLnBheW1lbnRDb29yZGluYXRvcigpOwor
CisgICAgaWYgKCFwYXltZW50Q29vcmRpbmF0b3Iuc3VwcG9ydHNWZXJzaW9uKHZlcnNpb24pKSB7
CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisKKyAgICBhdXRvIHBheW1lbnRSZXF1ZXN0ID0gY3JlYXRlUGF5bWVudFJlcXVl
c3Qod2luZG93LCBkaWN0aW9uYXJ5KTsKKyAgICBpZiAoIXBheW1lbnRSZXF1ZXN0KSB7CisgICAg
ICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIGlmICghUGF5bWVudFJlcXVlc3RWYWxpZGF0b3Iod2luZG93KS52YWxpZGF0ZSgq
cGF5bWVudFJlcXVlc3QpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFw
cGxlUGF5U2Vzc2lvbihkb2N1bWVudCwgV1RGTW92ZSgqcGF5bWVudFJlcXVlc3QpKSk7Cit9CisK
K0FwcGxlUGF5U2Vzc2lvbjo6QXBwbGVQYXlTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgUGF5
bWVudFJlcXVlc3QmJiBwYXltZW50UmVxdWVzdCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdCgmZG9j
dW1lbnQpCisgICAgLCBtX3N0YXRlKFN0YXRlOjpJZGxlKQorICAgICwgbV9tZXJjaGFudFZhbGlk
YXRpb25TdGF0ZShNZXJjaGFudFZhbGlkYXRpb25TdGF0ZTo6SWRsZSkKKyAgICAsIG1fcGF5bWVu
dFJlcXVlc3QoV1RGTW92ZShwYXltZW50UmVxdWVzdCkpCit7CisgICAgc3VzcGVuZElmTmVlZGVk
KCk7Cit9CisKK0FwcGxlUGF5U2Vzc2lvbjo6fkFwcGxlUGF5U2Vzc2lvbigpCit7Cit9CisKK2Jv
b2wgQXBwbGVQYXlTZXNzaW9uOjpzdXBwb3J0c1ZlcnNpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdW5zaWduZWQgdmVyc2lvbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgaWYgKCF2ZXJzaW9uKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NF
U1NfRVJSOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgYXV0byYgZG9jdW1l
bnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgRE9N
V2luZG93JiB3aW5kb3cgPSAqZG9jdW1lbnQuZG9tV2luZG93KCk7CisKKyAgICBTdHJpbmcgZXJy
b3JNZXNzYWdlOworICAgIGlmICghY2FuQ2FsbEFwcGxlUGF5U2Vzc2lvbkFQSXMoZG9jdW1lbnQs
IGVycm9yTWVzc2FnZSkpIHsKKyAgICAgICAgd2luZG93LnByaW50RXJyb3JNZXNzYWdlKGVycm9y
TWVzc2FnZSk7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgYXV0byYgcGF5bWVudENvb3JkaW5hdG9yID0gZG9jdW1l
bnQuZnJhbWUoKS0+bWFpbkZyYW1lKCkucGF5bWVudENvb3JkaW5hdG9yKCk7CisgICAgcmV0dXJu
IHBheW1lbnRDb29yZGluYXRvci5zdXBwb3J0c1ZlcnNpb24odmVyc2lvbik7Cit9CisKK3N0YXRp
YyBib29sIHNob3VsZERpc2Nsb3NlQXBwbGVQYXlDYXBhYmlsaXR5KERvY3VtZW50JiBkb2N1bWVu
dCkKK3sKKyAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpOworICAgIGlmICghcGFnZSB8
fCBwYWdlLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gZG9jdW1lbnQuZnJhbWUoKS0+c2V0dGluZ3MoKS5hcHBsZVBheUNhcGFiaWxp
dHlEaXNjbG9zdXJlQWxsb3dlZCgpOworfQorCitib29sIEFwcGxlUGF5U2Vzc2lvbjo6Y2FuTWFr
ZVBheW1lbnRzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9j
dW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIERPTVdpbmRvdyYgd2luZG93ID0g
KmRvY3VtZW50LmRvbVdpbmRvdygpOworCisgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKKyAgICBp
ZiAoIWNhbkNhbGxBcHBsZVBheVNlc3Npb25BUElzKGRvY3VtZW50LCBlcnJvck1lc3NhZ2UpKSB7
CisgICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOworICAgICAg
ICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGF1dG8mIHBheW1lbnRDb29yZGluYXRvciA9IGRvY3VtZW50LmZyYW1lKCktPm1haW5G
cmFtZSgpLnBheW1lbnRDb29yZGluYXRvcigpOworICAgIHJldHVybiBwYXltZW50Q29vcmRpbmF0
b3IuY2FuTWFrZVBheW1lbnRzKCk7Cit9CisKK3ZvaWQgQXBwbGVQYXlTZXNzaW9uOjpjYW5NYWtl
UGF5bWVudHNXaXRoQWN0aXZlQ2FyZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgRGVmZXJyZWRX
cmFwcGVyJiYgcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgYXV0byYgZG9jdW1l
bnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgRE9N
V2luZG93JiB3aW5kb3cgPSAqZG9jdW1lbnQuZG9tV2luZG93KCk7CisKKyAgICBTdHJpbmcgZXJy
b3JNZXNzYWdlOworICAgIGlmICghY2FuQ2FsbEFwcGxlUGF5U2Vzc2lvbkFQSXMoZG9jdW1lbnQs
IGVycm9yTWVzc2FnZSkpIHsKKyAgICAgICAgd2luZG93LnByaW50RXJyb3JNZXNzYWdlKGVycm9y
TWVzc2FnZSk7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKCFzaG91bGREaXNjbG9zZUFwcGxlUGF5Q2FwYWJpbGl0eShk
b2N1bWVudCkpIHsKKyAgICAgICAgYXV0byYgcGF5bWVudENvb3JkaW5hdG9yID0gZG9jdW1lbnQu
ZnJhbWUoKS0+bWFpbkZyYW1lKCkucGF5bWVudENvb3JkaW5hdG9yKCk7CisgICAgICAgIGJvb2wg
Y2FuTWFrZVBheW1lbnRzID0gcGF5bWVudENvb3JkaW5hdG9yLmNhbk1ha2VQYXltZW50cygpOwor
CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvbWlzZSwgY2FuTWFrZVBheW1l
bnRzXSgpIG11dGFibGUgeworICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGNhbk1ha2VQYXlt
ZW50cyk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byYg
cGF5bWVudENvb3JkaW5hdG9yID0gZG9jdW1lbnQuZnJhbWUoKS0+bWFpbkZyYW1lKCkucGF5bWVu
dENvb3JkaW5hdG9yKCk7CisKKyAgICBwYXltZW50Q29vcmRpbmF0b3IuY2FuTWFrZVBheW1lbnRz
V2l0aEFjdGl2ZUNhcmQobWVyY2hhbnRJZGVudGlmaWVyLCBkb2N1bWVudC5kb21haW4oKSwgW3By
b21pc2VdKGJvb2wgY2FuTWFrZVBheW1lbnRzKSBtdXRhYmxlIHsKKyAgICAgICAgcHJvbWlzZS5y
ZXNvbHZlKGNhbk1ha2VQYXltZW50cyk7CisgICAgfSk7Cit9CisKK3ZvaWQgQXBwbGVQYXlTZXNz
aW9uOjpiZWdpbihFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBhdXRvJiBkb2N1bWVudCA9ICpk
b3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBhdXRvJiB3
aW5kb3cgPSAqZG9jdW1lbnQuZG9tV2luZG93KCk7CisKKyAgICBpZiAoIVNjcmlwdENvbnRyb2xs
ZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7CisgICAgICAgIHdpbmRvdy5wcmludEVycm9y
TWVzc2FnZSgiTXVzdCBjYWxsIEFwcGxlUGF5U2Vzc2lvbi5iZWdpbiBmcm9tIGEgdXNlciBnZXN0
dXJlIGhhbmRsZXIuIik7CisKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWNhbkJlZ2luKCkpIHsKKyAgICAgICAgd2lu
ZG93LnByaW50RXJyb3JNZXNzYWdlKCJQYXltZW50IHNlc3Npb24gaXMgYWxyZWFkeSBhY3RpdmUu
Iik7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKHBheW1lbnRDb29yZGluYXRvcigpLmhhc0FjdGl2ZVNlc3Npb24oKSkg
eworICAgICAgICB3aW5kb3cucHJpbnRFcnJvck1lc3NhZ2UoIlBhZ2UgYWxyZWFkeSBoYXMgYW4g
YWN0aXZlIHBheW1lbnQgc2Vzc2lvbi4iKTsKKworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNT
X0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHBheW1lbnRDb29yZGluYXRvcigp
LmJlZ2luUGF5bWVudFNlc3Npb24oKnRoaXMpOworCisgICAgVmVjdG9yPFVSTD4gbGlua0ljb25V
UkxzOworICAgIGZvciAoYXV0byYgaWNvbiA6IExpbmtJY29uQ29sbGVjdG9yIHsgZG9jdW1lbnQg
fS5pY29uc09mVHlwZXMoeyBMaW5rSWNvblR5cGU6OlRvdWNoSWNvbiwgTGlua0ljb25UeXBlOjpU
b3VjaFByZWNvbXBvc2VkSWNvbiB9KSkKKyAgICAgICAgbGlua0ljb25VUkxzLmFwcGVuZChpY29u
LnVybCk7CisKKyAgICBtX3N0YXRlID0gU3RhdGU6OkFjdGl2ZTsKKworICAgIHBheW1lbnRDb29y
ZGluYXRvcigpLnNob3dQYXltZW50VUkoZG9jdW1lbnQudXJsKCksIGxpbmtJY29uVVJMcywgbV9w
YXltZW50UmVxdWVzdCk7CisKKyAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Cit9CisKK3Zv
aWQgQXBwbGVQYXlTZXNzaW9uOjphYm9ydChFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAo
IWNhbkFib3J0KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX3N0YXRlID0gU3RhdGU6OkFib3J0ZWQ7CisgICAgcGF5
bWVudENvb3JkaW5hdG9yKCkuYWJvcnRQYXltZW50U2Vzc2lvbigpOworCisgICAgZGlkUmVhY2hG
aW5hbFN0YXRlKCk7Cit9CisKK3N0YXRpYyBPcHRpb25hbDxQYXltZW50TWVyY2hhbnRTZXNzaW9u
PiBjcmVhdGVNZXJjaGFudFNlc3Npb24oRE9NV2luZG93JiB3aW5kb3csIGNvbnN0IERpY3Rpb25h
cnkmIG1lcmNoYW50U2Vzc2lvbkRpY3Rpb25hcnkpCit7CisgICAgYXV0byBtZXJjaGFudElkZW50
aWZpZXIgPSBtZXJjaGFudFNlc3Npb25EaWN0aW9uYXJ5LmdldDxTdHJpbmc+KCJtZXJjaGFudElk
ZW50aWZpZXIiKTsKKyAgICBpZiAoIW1lcmNoYW50SWRlbnRpZmllcikgeworICAgICAgICB3aW5k
b3cucHJpbnRFcnJvck1lc3NhZ2UoIk1pc3NpbmcgbWVyY2hhbnQgaWRlbnRpZmllci4iKTsKKyAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgfQorCisgICAgYXV0byBzZXNzaW9uSWRlbnRpZmll
ciA9IG1lcmNoYW50U2Vzc2lvbkRpY3Rpb25hcnkuZ2V0PFN0cmluZz4oIm1lcmNoYW50U2Vzc2lv
bklkZW50aWZpZXIiKTsKKyAgICBpZiAoIXNlc3Npb25JZGVudGlmaWVyKSB7CisgICAgICAgIHdp
bmRvdy5wcmludEVycm9yTWVzc2FnZSgiTWlzc2luZyBtZXJjaGFudCBzZXNzaW9uIGlkZW50aWZp
ZXIuIik7CisgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIH0KKworICAgIGF1dG8gbm9uY2Ug
PSBtZXJjaGFudFNlc3Npb25EaWN0aW9uYXJ5LmdldDxTdHJpbmc+KCJub25jZSIpOworICAgIGlm
ICghbm9uY2UpIHsKKyAgICAgICAgd2luZG93LnByaW50RXJyb3JNZXNzYWdlKCJNaXNzaW5nIG5v
bmNlLiIpOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICB9CisKKyAgICBhdXRvIGRvbWFp
bk5hbWUgPSBtZXJjaGFudFNlc3Npb25EaWN0aW9uYXJ5LmdldDxTdHJpbmc+KCJkb21haW5OYW1l
Iik7CisgICAgaWYgKCFkb21haW5OYW1lKSB7CisgICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVz
c2FnZSgiTWlzc2luZyBkb21haW4gbmFtZS4iKTsKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgfQorCisgICAgYXV0byBlcG9jaFRpbWVzdGFtcCA9IG1lcmNoYW50U2Vzc2lvbkRpY3Rpb25h
cnkuZ2V0PHVpbnQ2NF90PigiZXBvY2hUaW1lc3RhbXAiKTsKKyAgICBpZiAoIWVwb2NoVGltZXN0
YW1wKSB7CisgICAgICAgIHdpbmRvdy5wcmludEVycm9yTWVzc2FnZSgiTWlzc2luZyBlcG9jaCB0
aW1lIHN0YW1wLiIpOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICB9CisKKyAgICBhdXRv
IHNpZ25hdHVyZSA9IG1lcmNoYW50U2Vzc2lvbkRpY3Rpb25hcnkuZ2V0PFN0cmluZz4oInNpZ25h
dHVyZSIpOworICAgIGlmICghc2lnbmF0dXJlKSB7CisgICAgICAgIHdpbmRvdy5wcmludEVycm9y
TWVzc2FnZSgiTWlzc2luZyBzaWduYXR1cmUuIik7CisgICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgIH0KKworICAgIHJldHVybiBQYXltZW50TWVyY2hhbnRTZXNzaW9uIHsgKm1lcmNoYW50SWRl
bnRpZmllciwgKnNlc3Npb25JZGVudGlmaWVyLCAqbm9uY2UsICpkb21haW5OYW1lLCAqZXBvY2hU
aW1lc3RhbXAsICpzaWduYXR1cmUgfTsKK30KKwordm9pZCBBcHBsZVBheVNlc3Npb246OmNvbXBs
ZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IERpY3Rpb25hcnkmIG1lcmNoYW50U2Vzc2lvbkRp
Y3Rpb25hcnksIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghY2FuQ29tcGxldGVNZXJj
aGFudFZhbGlkYXRpb24oKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8mIGRvY3VtZW50ID0gKmRvd25jYXN0PERv
Y3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGF1dG8mIHdpbmRvdyA9ICpk
b2N1bWVudC5kb21XaW5kb3coKTsKKworICAgIGF1dG8gbWVyY2hhbnRTZXNzaW9uID0gY3JlYXRl
TWVyY2hhbnRTZXNzaW9uKHdpbmRvdywgbWVyY2hhbnRTZXNzaW9uRGljdGlvbmFyeSk7CisgICAg
aWYgKCFtZXJjaGFudFNlc3Npb24pIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX21lcmNoYW50VmFsaWRhdGlvblN0YXRl
ID0gTWVyY2hhbnRWYWxpZGF0aW9uU3RhdGU6OlZhbGlkYXRpb25Db21wbGV0ZTsKKyAgICBwYXlt
ZW50Q29vcmRpbmF0b3IoKS5jb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbigqbWVyY2hhbnRTZXNz
aW9uKTsKK30KKworCitzdGF0aWMgT3B0aW9uYWw8UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM+
IHRvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXModW5zaWduZWQgc2hvcnQgc3RhdHVzKQorewor
ICAgIHN3aXRjaCAoc3RhdHVzKSB7CisgICAgY2FzZSBBcHBsZVBheVNlc3Npb246OlNUQVRVU19T
VUNDRVNTOgorICAgICAgICByZXR1cm4gUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlN1Y2Nl
c3M7CisKKyAgICBjYXNlIEFwcGxlUGF5U2Vzc2lvbjo6U1RBVFVTX0ZBSUxVUkU6CisgICAgICAg
IHJldHVybiBQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6RmFpbHVyZTsKKworICAgIGNhc2Ug
QXBwbGVQYXlTZXNzaW9uOjpTVEFUVVNfSU5WQUxJRF9CSUxMSU5HX1BPU1RBTF9BRERSRVNTOgor
ICAgICAgICByZXR1cm4gUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OkludmFsaWRCaWxsaW5n
UG9zdGFsQWRkcmVzczsKKworICAgIGNhc2UgQXBwbGVQYXlTZXNzaW9uOjpTVEFUVVNfSU5WQUxJ
RF9TSElQUElOR19QT1NUQUxfQUREUkVTUzoKKyAgICAgICAgcmV0dXJuIFBheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzOjpJbnZhbGlkU2hpcHBpbmdQb3N0YWxBZGRyZXNzOworCisgICAgY2FzZSBB
cHBsZVBheVNlc3Npb246OlNUQVRVU19JTlZBTElEX1NISVBQSU5HX0NPTlRBQ1Q6CisgICAgICAg
IHJldHVybiBQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6SW52YWxpZFNoaXBwaW5nQ29udGFj
dDsKKworICAgIGNhc2UgQXBwbGVQYXlTZXNzaW9uOjpTVEFUVVNfUElOX1JFUVVJUkVEOgorICAg
ICAgICByZXR1cm4gUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlBJTlJlcXVpcmVkOworCisg
ICAgY2FzZSBBcHBsZVBheVNlc3Npb246OlNUQVRVU19QSU5fSU5DT1JSRUNUOgorICAgICAgICBy
ZXR1cm4gUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlBJTkluY29ycmVjdDsKKworICAgIGNh
c2UgQXBwbGVQYXlTZXNzaW9uOjpTVEFUVVNfUElOX0xPQ0tPVVQ6CisgICAgICAgIHJldHVybiBQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6UElOTG9ja291dDsKKworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIH0KK30KKwordm9pZCBBcHBsZVBheVNlc3Npb246
OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24odW5zaWduZWQgc2hvcnQgc3RhdHVzLCBj
b25zdCBEaWN0aW9uYXJ5JiBuZXdUb3RhbERpY3Rpb25hcnksIGNvbnN0IEFycmF5VmFsdWUmIG5l
d0xpbmVJdGVtc0FycmF5LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWNhbkNvbXBs
ZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUND
RVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gYXV0aG9yaXphdGlv
blN0YXR1cyA9IHRvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMoc3RhdHVzKTsKKyAgICBpZiAo
IWF1dGhvcml6YXRpb25TdGF0dXMpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvJiB3aW5kb3cgPSAqZG93bmNhc3Q8
RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPmRvbVdpbmRvdygpOworICAgIGF1
dG8gbmV3VG90YWwgPSBjcmVhdGVMaW5lSXRlbSh3aW5kb3csIG5ld1RvdGFsRGljdGlvbmFyeSk7
CisgICAgaWYgKCFuZXdUb3RhbCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghUGF5bWVudFJlcXVlc3RWYWxpZGF0
b3Iod2luZG93KS52YWxpZGF0ZVRvdGFsKCpuZXdUb3RhbCkpIHsKKyAgICAgICAgZWMgPSBJTlZB
TElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIG5ld0xp
bmVJdGVtcyA9IGNyZWF0ZUxpbmVJdGVtcyh3aW5kb3csIG5ld0xpbmVJdGVtc0FycmF5KTsKKyAg
ICBpZiAoIW5ld0xpbmVJdGVtcykgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fc3RhdGUgPSBTdGF0ZTo6QWN0aXZlOwor
ICAgIFBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcyB0b3RhbEFuZExpbmVJdGVtczsK
KyAgICB0b3RhbEFuZExpbmVJdGVtcy50b3RhbCA9ICpuZXdUb3RhbDsKKyAgICB0b3RhbEFuZExp
bmVJdGVtcy5saW5lSXRlbXMgPSAqbmV3TGluZUl0ZW1zOworICAgIHBheW1lbnRDb29yZGluYXRv
cigpLmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oKmF1dGhvcml6YXRpb25TdGF0dXMs
IHRvdGFsQW5kTGluZUl0ZW1zKTsKK30KKwordm9pZCBBcHBsZVBheVNlc3Npb246OmNvbXBsZXRl
U2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHVuc2lnbmVkIHNob3J0IHN0YXR1cywgY29uc3QgQXJy
YXlWYWx1ZSYgbmV3U2hpcHBpbmdNZXRob2RzQXJyYXksIGNvbnN0IERpY3Rpb25hcnkmIG5ld1Rv
dGFsRGljdGlvbmFyeSwgY29uc3QgQXJyYXlWYWx1ZSYgbmV3TGluZUl0ZW1zQXJyYXksIEV4Y2Vw
dGlvbkNvZGUmIGVjKQoreworICAgIGlmICghY2FuQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxl
Y3Rpb24oKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8gYXV0aG9yaXphdGlvblN0YXR1cyA9IHRvUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXMoc3RhdHVzKTsKKyAgICBpZiAoIWF1dGhvcml6YXRpb25TdGF0dXMp
IHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvJiB3aW5kb3cgPSAqZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSktPmRvbVdpbmRvdygpOworCisgICAgYXV0byBuZXdTaGlwcGluZ01ldGhv
ZHMgPSBjcmVhdGVTaGlwcGluZ01ldGhvZHMod2luZG93LCBuZXdTaGlwcGluZ01ldGhvZHNBcnJh
eSk7CisgICAgaWYgKCFuZXdTaGlwcGluZ01ldGhvZHMpIHsKKyAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIG5ld1RvdGFs
ID0gY3JlYXRlTGluZUl0ZW0od2luZG93LCBuZXdUb3RhbERpY3Rpb25hcnkpOworICAgIGlmICgh
bmV3VG90YWwpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoIVBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yKHdpbmRvdyku
dmFsaWRhdGVUb3RhbCgqbmV3VG90YWwpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1Nf
RVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBuZXdMaW5lSXRlbXMgPSBj
cmVhdGVMaW5lSXRlbXMod2luZG93LCBuZXdMaW5lSXRlbXNBcnJheSk7CisgICAgaWYgKCFuZXdM
aW5lSXRlbXMpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBtX3N0YXRlID0gU3RhdGU6OkFjdGl2ZTsKKyAgICBQYXltZW50
UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXMgdG90YWxBbmRMaW5lSXRlbXM7CisgICAgdG90YWxB
bmRMaW5lSXRlbXMudG90YWwgPSAqbmV3VG90YWw7CisgICAgdG90YWxBbmRMaW5lSXRlbXMubGlu
ZUl0ZW1zID0gKm5ld0xpbmVJdGVtczsKKyAgICBwYXltZW50Q29vcmRpbmF0b3IoKS5jb21wbGV0
ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbigqYXV0aG9yaXphdGlvblN0YXR1cywgKm5ld1NoaXBw
aW5nTWV0aG9kcywgdG90YWxBbmRMaW5lSXRlbXMpOworfQorCit2b2lkIEFwcGxlUGF5U2Vzc2lv
bjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKGNvbnN0IERpY3Rpb25hcnkmIG5ld1Rv
dGFsRGljdGlvbmFyeSwgY29uc3QgQXJyYXlWYWx1ZSYgbmV3TGluZUl0ZW1zQXJyYXksIEV4Y2Vw
dGlvbkNvZGUmIGVjKQoreworICAgIGlmICghY2FuQ29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0
aW9uKCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBhdXRvJiB3aW5kb3cgPSAqZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSktPmRvbVdpbmRvdygpOworICAgIGF1dG8gbmV3VG90YWwgPSBj
cmVhdGVMaW5lSXRlbSh3aW5kb3csIG5ld1RvdGFsRGljdGlvbmFyeSk7CisgICAgaWYgKCFuZXdU
b3RhbCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmICghUGF5bWVudFJlcXVlc3RWYWxpZGF0b3Iod2luZG93KS52YWxp
ZGF0ZVRvdGFsKCpuZXdUb3RhbCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIG5ld0xpbmVJdGVtcyA9IGNyZWF0
ZUxpbmVJdGVtcyh3aW5kb3csIG5ld0xpbmVJdGVtc0FycmF5KTsKKyAgICBpZiAoIW5ld0xpbmVJ
dGVtcykgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fc3RhdGUgPSBTdGF0ZTo6QWN0aXZlOworICAgIFBheW1lbnRSZXF1
ZXN0OjpUb3RhbEFuZExpbmVJdGVtcyB0b3RhbEFuZExpbmVJdGVtczsKKyAgICB0b3RhbEFuZExp
bmVJdGVtcy50b3RhbCA9ICpuZXdUb3RhbDsKKyAgICB0b3RhbEFuZExpbmVJdGVtcy5saW5lSXRl
bXMgPSAqbmV3TGluZUl0ZW1zOworICAgIHBheW1lbnRDb29yZGluYXRvcigpLmNvbXBsZXRlUGF5
bWVudE1ldGhvZFNlbGVjdGlvbih0b3RhbEFuZExpbmVJdGVtcyk7Cit9CisKK3ZvaWQgQXBwbGVQ
YXlTZXNzaW9uOjpjb21wbGV0ZVBheW1lbnQodW5zaWduZWQgc2hvcnQgc3RhdHVzLCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWNhbkNvbXBsZXRlUGF5bWVudCgpKSB7CisgICAgICAg
IGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
YXV0byBhdXRob3JpemF0aW9uU3RhdHVzID0gdG9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhz
dGF0dXMpOworICAgIGlmICghYXV0aG9yaXphdGlvblN0YXR1cykgeworICAgICAgICBlYyA9IElO
VkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHBheW1lbnRD
b29yZGluYXRvcigpLmNvbXBsZXRlUGF5bWVudFNlc3Npb24oKmF1dGhvcml6YXRpb25TdGF0dXMp
OworICAgIG1fc3RhdGUgPSBTdGF0ZTo6Q29tcGxldGVkOworICAgIHVuc2V0UGVuZGluZ0FjdGl2
aXR5KHRoaXMpOworfQorCit2b2lkIEFwcGxlUGF5U2Vzc2lvbjo6dmFsaWRhdGVNZXJjaGFudChj
b25zdCBVUkwmIHZhbGlkYXRpb25VUkwpCit7CisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFi
b3J0ZWQpIHsKKyAgICAgICAgLy8gQXBwbGVQYXlTZXNzaW9uOjphYm9ydCBoYXMgYmVlbiBjYWxs
ZWQuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQobV9tZXJjaGFudFZhbGlk
YXRpb25TdGF0ZSA9PSBNZXJjaGFudFZhbGlkYXRpb25TdGF0ZTo6SWRsZSk7CisgICAgQVNTRVJU
KG1fc3RhdGUgPT0gU3RhdGU6OkFjdGl2ZSk7CisKKyAgICBpZiAodmFsaWRhdGlvblVSTC5pc051
bGwoKSkgeworICAgICAgICAvLyBTb21ldGhpbmcgd2VudCB3cm9uZyB3aGVuIGdldHRpbmcgdGhl
IHZhbGlkYXRpb24gVVJMLgorICAgICAgICAvLyBGSVhNRTogTWF5YmUgd2Ugc2hvdWxkIHNlbmQg
YW4gZXJyb3IgZXZlbnQgaGVyZSBpbnN0ZWFkPworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgbV9tZXJjaGFudFZhbGlkYXRpb25TdGF0ZSA9IE1lcmNoYW50VmFsaWRhdGlvblN0YXRlOjpW
YWxpZGF0aW5nTWVyY2hhbnQ7CisKKyAgICBSZWZQdHI8QXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50
RXZlbnQ+IGV2ZW50ID0gQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkudmFsaWRhdGVtZXJjaGFudEV2ZW50LCB2YWxpZGF0aW9uVVJMKTsKKyAgICBkaXNw
YXRjaEV2ZW50KCpldmVudCk7Cit9CisKK3ZvaWQgQXBwbGVQYXlTZXNzaW9uOjpkaWRBdXRob3Jp
emVQYXltZW50KGNvbnN0IFBheW1lbnQmIHBheW1lbnQpCit7CisgICAgQVNTRVJUKG1fc3RhdGUg
PT0gU3RhdGU6OkFjdGl2ZSk7CisKKyAgICBtX3N0YXRlID0gU3RhdGU6OkF1dGhvcml6ZWQ7CisK
KyAgICBSZWZQdHI8QXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50PiBldmVudCA9IEFwcGxl
UGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5wYXltZW50YXV0
aG9yaXplZEV2ZW50LCBwYXltZW50KTsKKyAgICBkaXNwYXRjaEV2ZW50KCpldmVudCk7Cit9CisK
K3ZvaWQgQXBwbGVQYXlTZXNzaW9uOjpkaWRTZWxlY3RTaGlwcGluZ01ldGhvZChjb25zdCBQYXlt
ZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QmIHNoaXBwaW5nTWV0aG9kKQoreworICAgIEFTU0VS
VChtX3N0YXRlID09IFN0YXRlOjpBY3RpdmUpOworCisgICAgaWYgKCFoYXNFdmVudExpc3RlbmVy
cyhldmVudE5hbWVzKCkuc2hpcHBpbmdtZXRob2RzZWxlY3RlZEV2ZW50KSkgeworICAgICAgICBw
YXltZW50Q29vcmRpbmF0b3IoKS5jb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKFBheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzOjpTdWNjZXNzLCB7IH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbV9zdGF0ZSA9IFN0YXRlOjpTaGlwcGluZ01ldGhvZFNlbGVjdGVkOworICAg
IFJlZlB0cjxBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudD4gZXZlbnQgPSBBcHBs
ZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zaGlw
cGluZ21ldGhvZHNlbGVjdGVkRXZlbnQsIHNoaXBwaW5nTWV0aG9kKTsKKyAgICBkaXNwYXRjaEV2
ZW50KCpldmVudCk7Cit9CisKK3ZvaWQgQXBwbGVQYXlTZXNzaW9uOjpkaWRTZWxlY3RTaGlwcGlu
Z0NvbnRhY3QoY29uc3QgUGF5bWVudENvbnRhY3QmIHNoaXBwaW5nQ29udGFjdCkKK3sKKyAgICBB
U1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZlKTsKKworICAgIGlmICghaGFzRXZlbnRMaXN0
ZW5lcnMoZXZlbnROYW1lcygpLnNoaXBwaW5nY29udGFjdHNlbGVjdGVkRXZlbnQpKSB7CisgICAg
ICAgIHBheW1lbnRDb29yZGluYXRvcigpLmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9u
KFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpTdWNjZXNzLCB7IH0sIHsgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX3N0YXRlID0gU3RhdGU6OlNoaXBwaW5nQ29udGFjdFNl
bGVjdGVkOworICAgIFJlZlB0cjxBcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQ+
IGV2ZW50ID0gQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLnNoaXBwaW5nY29udGFjdHNlbGVjdGVkRXZlbnQsIHNoaXBwaW5nQ29udGFjdCk7
CisgICAgZGlzcGF0Y2hFdmVudCgqZXZlbnQpOworfQorCit2b2lkIEFwcGxlUGF5U2Vzc2lvbjo6
ZGlkU2VsZWN0UGF5bWVudE1ldGhvZChjb25zdCBQYXltZW50TWV0aG9kJiBwYXltZW50TWV0aG9k
KQoreworICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBY3RpdmUpOworCisgICAgaWYgKCFo
YXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkucGF5bWVudG1ldGhvZHNlbGVjdGVkRXZlbnQp
KSB7CisgICAgICAgIHBheW1lbnRDb29yZGluYXRvcigpLmNvbXBsZXRlUGF5bWVudE1ldGhvZFNl
bGVjdGlvbih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9zdGF0ZSA9IFN0
YXRlOjpQYXltZW50TWV0aG9kU2VsZWN0ZWQ7CisgICAgUmVmUHRyPEFwcGxlUGF5UGF5bWVudE1l
dGhvZFNlbGVjdGVkRXZlbnQ+IGV2ZW50ID0gQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5wYXltZW50bWV0aG9kc2VsZWN0ZWRFdmVudCwgcGF5
bWVudE1ldGhvZCk7CisgICAgZGlzcGF0Y2hFdmVudCgqZXZlbnQpOworfQorCit2b2lkIEFwcGxl
UGF5U2Vzc2lvbjo6ZGlkQ2FuY2VsUGF5bWVudCgpCit7CisgICAgQVNTRVJUKGNhbkNhbmNlbCgp
KTsKKworICAgIG1fc3RhdGUgPSBTdGF0ZTo6Q2FuY2VsZWQ7CisKKyAgICBSZWZQdHI8RXZlbnQ+
IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2FuY2VsRXZlbnQsIGZhbHNlLCBm
YWxzZSk7CisgICAgZGlzcGF0Y2hFdmVudCgqZXZlbnQpOworCisgICAgZGlkUmVhY2hGaW5hbFN0
YXRlKCk7Cit9CisKK2NvbnN0IGNoYXIqIEFwcGxlUGF5U2Vzc2lvbjo6YWN0aXZlRE9NT2JqZWN0
TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICJBcHBsZVBheVNlc3Npb24iOworfQorCitib29s
IEFwcGxlUGF5U2Vzc2lvbjo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0
Cit7CisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBTdGF0ZTo6SWRsZToKKyAgICBj
YXNlIFN0YXRlOjpBYm9ydGVkOgorICAgIGNhc2UgU3RhdGU6OkNvbXBsZXRlZDoKKyAgICBjYXNl
IFN0YXRlOjpDYW5jZWxlZDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlIFN0YXRl
OjpBY3RpdmU6CisgICAgY2FzZSBTdGF0ZTo6QXV0aG9yaXplZDoKKyAgICBjYXNlIFN0YXRlOjpT
aGlwcGluZ01ldGhvZFNlbGVjdGVkOgorICAgIGNhc2UgU3RhdGU6OlNoaXBwaW5nQ29udGFjdFNl
bGVjdGVkOgorICAgIGNhc2UgU3RhdGU6OlBheW1lbnRNZXRob2RTZWxlY3RlZDoKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordm9pZCBBcHBsZVBheVNlc3Npb246OnN0b3AoKQor
eworICAgIGlmICghY2FuQWJvcnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zdGF0ZSA9
IFN0YXRlOjpBYm9ydGVkOworICAgIHBheW1lbnRDb29yZGluYXRvcigpLmFib3J0UGF5bWVudFNl
c3Npb24oKTsKKworICAgIGRpZFJlYWNoRmluYWxTdGF0ZSgpOworfQorCitQYXltZW50Q29vcmRp
bmF0b3ImIEFwcGxlUGF5U2Vzc2lvbjo6cGF5bWVudENvb3JkaW5hdG9yKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPmZy
YW1lKCktPm1haW5GcmFtZSgpLnBheW1lbnRDb29yZGluYXRvcigpOworfQorCitib29sIEFwcGxl
UGF5U2Vzc2lvbjo6Y2FuQmVnaW4oKSBjb25zdAoreworICAgIHN3aXRjaCAobV9zdGF0ZSkgewor
ICAgIGNhc2UgU3RhdGU6OklkbGU6CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgY2FzZSBT
dGF0ZTo6QWN0aXZlOgorICAgIGNhc2UgU3RhdGU6OkFib3J0ZWQ6CisgICAgY2FzZSBTdGF0ZTo6
QXV0aG9yaXplZDoKKyAgICBjYXNlIFN0YXRlOjpDb21wbGV0ZWQ6CisgICAgY2FzZSBTdGF0ZTo6
Q2FuY2VsZWQ6CisgICAgY2FzZSBTdGF0ZTo6U2hpcHBpbmdNZXRob2RTZWxlY3RlZDoKKyAgICBj
YXNlIFN0YXRlOjpTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZDoKKyAgICBjYXNlIFN0YXRlOjpQYXlt
ZW50TWV0aG9kU2VsZWN0ZWQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jv
b2wgQXBwbGVQYXlTZXNzaW9uOjpjYW5BYm9ydCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3N0
YXRlKSB7CisgICAgY2FzZSBTdGF0ZTo6SWRsZToKKyAgICBjYXNlIFN0YXRlOjpBYm9ydGVkOgor
ICAgIGNhc2UgU3RhdGU6OkNvbXBsZXRlZDoKKyAgICBjYXNlIFN0YXRlOjpDYW5jZWxlZDoKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY2FzZSBTdGF0ZTo6QWN0aXZlOgorICAgIGNhc2Ug
U3RhdGU6OkF1dGhvcml6ZWQ6CisgICAgY2FzZSBTdGF0ZTo6U2hpcHBpbmdNZXRob2RTZWxlY3Rl
ZDoKKyAgICBjYXNlIFN0YXRlOjpTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZDoKKyAgICBjYXNlIFN0
YXRlOjpQYXltZW50TWV0aG9kU2VsZWN0ZWQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
K30KKworYm9vbCBBcHBsZVBheVNlc3Npb246OmNhbkNhbmNlbCgpIGNvbnN0Cit7CisgICAgc3dp
dGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBTdGF0ZTo6SWRsZToKKyAgICBjYXNlIFN0YXRlOjpB
Ym9ydGVkOgorICAgIGNhc2UgU3RhdGU6OkNvbXBsZXRlZDoKKyAgICBjYXNlIFN0YXRlOjpDYW5j
ZWxlZDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY2FzZSBTdGF0ZTo6QWN0aXZlOgor
ICAgIGNhc2UgU3RhdGU6OkF1dGhvcml6ZWQ6CisgICAgY2FzZSBTdGF0ZTo6U2hpcHBpbmdNZXRo
b2RTZWxlY3RlZDoKKyAgICBjYXNlIFN0YXRlOjpTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZDoKKyAg
ICBjYXNlIFN0YXRlOjpQYXltZW50TWV0aG9kU2VsZWN0ZWQ6CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KK30KKworYm9vbCBBcHBsZVBheVNlc3Npb246OmNhbkNvbXBsZXRlTWVyY2hhbnRW
YWxpZGF0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6QWN0aXZlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9tZXJjaGFudFZhbGlkYXRpb25TdGF0
ZSAhPSBNZXJjaGFudFZhbGlkYXRpb25TdGF0ZTo6VmFsaWRhdGluZ01lcmNoYW50KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBBcHBsZVBheVNl
c3Npb246OmNhbkNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oKSBjb25zdAoreworICAg
IHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgU3RhdGU6OklkbGU6CisgICAgY2FzZSBTdGF0
ZTo6QWJvcnRlZDoKKyAgICBjYXNlIFN0YXRlOjpBY3RpdmU6CisgICAgY2FzZSBTdGF0ZTo6Q29t
cGxldGVkOgorICAgIGNhc2UgU3RhdGU6OkNhbmNlbGVkOgorICAgIGNhc2UgU3RhdGU6OkF1dGhv
cml6ZWQ6CisgICAgY2FzZSBTdGF0ZTo6UGF5bWVudE1ldGhvZFNlbGVjdGVkOgorICAgIGNhc2Ug
U3RhdGU6OlNoaXBwaW5nQ29udGFjdFNlbGVjdGVkOgorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBjYXNlIFN0YXRlOjpTaGlwcGluZ01ldGhvZFNlbGVjdGVkOgorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9Cit9CisKK2Jvb2wgQXBwbGVQYXlTZXNzaW9uOjpjYW5Db21wbGV0ZVNoaXBw
aW5nQ29udGFjdFNlbGVjdGlvbigpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3N0YXRlKSB7Cisg
ICAgY2FzZSBTdGF0ZTo6SWRsZToKKyAgICBjYXNlIFN0YXRlOjpBYm9ydGVkOgorICAgIGNhc2Ug
U3RhdGU6OkFjdGl2ZToKKyAgICBjYXNlIFN0YXRlOjpDb21wbGV0ZWQ6CisgICAgY2FzZSBTdGF0
ZTo6Q2FuY2VsZWQ6CisgICAgY2FzZSBTdGF0ZTo6QXV0aG9yaXplZDoKKyAgICBjYXNlIFN0YXRl
OjpQYXltZW50TWV0aG9kU2VsZWN0ZWQ6CisgICAgY2FzZSBTdGF0ZTo6U2hpcHBpbmdNZXRob2RT
ZWxlY3RlZDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY2FzZSBTdGF0ZTo6U2hpcHBp
bmdDb250YWN0U2VsZWN0ZWQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK30KKworYm9v
bCBBcHBsZVBheVNlc3Npb246OmNhbkNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbigpIGNv
bnN0Cit7CisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBTdGF0ZTo6SWRsZToKKyAg
ICBjYXNlIFN0YXRlOjpBYm9ydGVkOgorICAgIGNhc2UgU3RhdGU6OkFjdGl2ZToKKyAgICBjYXNl
IFN0YXRlOjpDb21wbGV0ZWQ6CisgICAgY2FzZSBTdGF0ZTo6Q2FuY2VsZWQ6CisgICAgY2FzZSBT
dGF0ZTo6QXV0aG9yaXplZDoKKyAgICBjYXNlIFN0YXRlOjpTaGlwcGluZ01ldGhvZFNlbGVjdGVk
OgorICAgIGNhc2UgU3RhdGU6OlNoaXBwaW5nQ29udGFjdFNlbGVjdGVkOgorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBjYXNlIFN0YXRlOjpQYXltZW50TWV0aG9kU2VsZWN0ZWQ6CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KK30KKworYm9vbCBBcHBsZVBheVNlc3Npb246OmNhbkNv
bXBsZXRlUGF5bWVudCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2Fz
ZSBTdGF0ZTo6SWRsZToKKyAgICBjYXNlIFN0YXRlOjpBYm9ydGVkOgorICAgIGNhc2UgU3RhdGU6
OkFjdGl2ZToKKyAgICBjYXNlIFN0YXRlOjpDb21wbGV0ZWQ6CisgICAgY2FzZSBTdGF0ZTo6Q2Fu
Y2VsZWQ6CisgICAgY2FzZSBTdGF0ZTo6U2hpcHBpbmdNZXRob2RTZWxlY3RlZDoKKyAgICBjYXNl
IFN0YXRlOjpTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZDoKKyAgICBjYXNlIFN0YXRlOjpQYXltZW50
TWV0aG9kU2VsZWN0ZWQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNhc2UgU3RhdGU6
OkF1dGhvcml6ZWQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK30KKworYm9vbCBBcHBs
ZVBheVNlc3Npb246OmlzRmluYWxTdGF0ZSgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3N0YXRl
KSB7CisgICAgY2FzZSBTdGF0ZTo6SWRsZToKKyAgICBjYXNlIFN0YXRlOjpBY3RpdmU6CisgICAg
Y2FzZSBTdGF0ZTo6U2hpcHBpbmdNZXRob2RTZWxlY3RlZDoKKyAgICBjYXNlIFN0YXRlOjpTaGlw
cGluZ0NvbnRhY3RTZWxlY3RlZDoKKyAgICBjYXNlIFN0YXRlOjpQYXltZW50TWV0aG9kU2VsZWN0
ZWQ6CisgICAgY2FzZSBTdGF0ZTo6QXV0aG9yaXplZDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgY2FzZSBTdGF0ZTo6Q29tcGxldGVkOgorICAgIGNhc2UgU3RhdGU6OkFib3J0ZWQ6Cisg
ICAgY2FzZSBTdGF0ZTo6Q2FuY2VsZWQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK30K
Kwordm9pZCBBcHBsZVBheVNlc3Npb246OmRpZFJlYWNoRmluYWxTdGF0ZSgpCit7CisgICAgQVNT
RVJUKGlzRmluYWxTdGF0ZSgpKTsKKyAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKK30K
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2Vzc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2ZTQ1MDZhMThmYjAwYjMyNDg3MzMwY2EyZjNm
ODc2ZDgxZTQ0MzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5oCkBAIC0wLDAgKzEsMTQxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCisjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiUGF5bWVudFJlcXVlc3QuaCIKKyNpbmNsdWRlIDx3
dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBBcnJheVZhbHVlOworY2xhc3MgRGVmZXJyZWRXcmFwcGVyOworY2xhc3Mg
RGljdGlvbmFyeTsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgUGF5bWVudDsKK2NsYXNzIFBheW1l
bnRDb250YWN0OworY2xhc3MgUGF5bWVudENvb3JkaW5hdG9yOworY2xhc3MgUGF5bWVudE1ldGhv
ZDsKK2NsYXNzIFVSTDsKKworY2xhc3MgQXBwbGVQYXlTZXNzaW9uIGZpbmFsIDogcHVibGljIFJl
ZkNvdW50ZWQ8QXBwbGVQYXlTZXNzaW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGlj
IEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgeworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8
QXBwbGVQYXlTZXNzaW9uPiBjcmVhdGUoRG9jdW1lbnQmLCB1bnNpZ25lZCB2ZXJzaW9uLCBjb25z
dCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgfkFwcGxlUGF5U2Vz
c2lvbigpOworCisgICAgLy8gRE9NIEFQSS4KKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hv
cnQgU1RBVFVTX1NVQ0NFU1MgPSAwOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBT
VEFUVVNfRkFJTFVSRSA9IDE7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNUQVRV
U19JTlZBTElEX0JJTExJTkdfUE9TVEFMX0FERFJFU1MgPSAyOworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBzaG9ydCBTVEFUVVNfSU5WQUxJRF9TSElQUElOR19QT1NUQUxfQUREUkVTUyA9IDM7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNUQVRVU19JTlZBTElEX1NISVBQSU5H
X0NPTlRBQ1QgPSA0OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVEFUVVNfUElO
X1JFUVVJUkVEID0gNTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgU1RBVFVTX1BJ
Tl9JTkNPUlJFQ1QgPSA2OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVEFUVVNf
UElOX0xPQ0tPVVQgPSA3OworCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNWZXJzaW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCB1bnNpZ25lZCB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgc3RhdGljIGJvb2wgY2FuTWFrZVBheW1lbnRzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBF
eGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2
ZUNhcmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVu
dGlmaWVyLCBEZWZlcnJlZFdyYXBwZXImJiwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgdm9pZCBi
ZWdpbihFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBhYm9ydChFeGNlcHRpb25Db2RlJik7Cisg
ICAgdm9pZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBEaWN0aW9uYXJ5JiBtZXJj
aGFudFNlc3Npb25EaWN0aW9uYXJ5LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBjb21wbGV0
ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHVuc2lnbmVkIHNob3J0IHN0YXR1cywgY29uc3QgRGlj
dGlvbmFyeSYgbmV3VG90YWwsIGNvbnN0IEFycmF5VmFsdWUmIG5ld0xpbmVJdGVtcywgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24odW5z
aWduZWQgc2hvcnQgc3RhdHVzLCBjb25zdCBBcnJheVZhbHVlJiBuZXdTaGlwcGluZ01ldGhvZHMs
IGNvbnN0IERpY3Rpb25hcnkmIG5ld1RvdGFsLCBjb25zdCBBcnJheVZhbHVlJiBuZXdMaW5lSXRl
bXMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVj
dGlvbihjb25zdCBEaWN0aW9uYXJ5JiBuZXdUb3RhbCwgY29uc3QgQXJyYXlWYWx1ZSYgbmV3TGlu
ZUl0ZW1zLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBjb21wbGV0ZVBheW1lbnQodW5zaWdu
ZWQgc2hvcnQgc3RhdHVzLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICBjb25zdCBQYXltZW50UmVx
dWVzdCYgcGF5bWVudFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3BheW1lbnRSZXF1ZXN0OyB9
CisKKyAgICB2b2lkIHZhbGlkYXRlTWVyY2hhbnQoY29uc3QgVVJMJik7CisgICAgdm9pZCBkaWRB
dXRob3JpemVQYXltZW50KGNvbnN0IFBheW1lbnQmKTsKKyAgICB2b2lkIGRpZFNlbGVjdFNoaXBw
aW5nTWV0aG9kKGNvbnN0IFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYpOworICAgIHZv
aWQgZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KGNvbnN0IFBheW1lbnRDb250YWN0Jik7CisgICAg
dm9pZCBkaWRTZWxlY3RQYXltZW50TWV0aG9kKGNvbnN0IFBheW1lbnRNZXRob2QmKTsKKyAgICB2
b2lkIGRpZENhbmNlbFBheW1lbnQoKTsKKworICAgIHVzaW5nIFJlZkNvdW50ZWQ8QXBwbGVQYXlT
ZXNzaW9uPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8QXBwbGVQYXlTZXNzaW9uPjo6ZGVy
ZWY7CisKK3ByaXZhdGU6CisgICAgQXBwbGVQYXlTZXNzaW9uKERvY3VtZW50JiwgUGF5bWVudFJl
cXVlc3QmJik7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QuCisgICAgY29uc3QgY2hhciogYWN0
aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuU3VzcGVuZEZv
ckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc3RvcCgpIG92
ZXJyaWRlOworCisgICAgLy8gRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YS4KKyAgICBFdmVudFRh
cmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIEFwcGxlUGF5U2Vzc2lvbkV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQor
ICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9CisgICAgdm9pZCBk
ZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CisKKyAgICBQYXltZW50Q29v
cmRpbmF0b3ImIHBheW1lbnRDb29yZGluYXRvcigpIGNvbnN0OworCisgICAgYm9vbCBjYW5CZWdp
bigpIGNvbnN0OworICAgIGJvb2wgY2FuQWJvcnQoKSBjb25zdDsKKyAgICBib29sIGNhbkNhbmNl
bCgpIGNvbnN0OworICAgIGJvb2wgY2FuQ29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oKSBjb25z
dDsKKyAgICBib29sIGNhbkNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oKSBjb25zdDsK
KyAgICBib29sIGNhbkNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKCkgY29uc3Q7Cisg
ICAgYm9vbCBjYW5Db21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oKSBjb25zdDsKKyAgICBi
b29sIGNhbkNvbXBsZXRlUGF5bWVudCgpIGNvbnN0OworCisgICAgYm9vbCBpc0ZpbmFsU3RhdGUo
KSBjb25zdDsKKyAgICB2b2lkIGRpZFJlYWNoRmluYWxTdGF0ZSgpOworCisgICAgZW51bSBjbGFz
cyBTdGF0ZSB7CisgICAgICAgIElkbGUsCisKKyAgICAgICAgQWN0aXZlLAorICAgICAgICBTaGlw
cGluZ01ldGhvZFNlbGVjdGVkLAorICAgICAgICBTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZCwKKyAg
ICAgICAgUGF5bWVudE1ldGhvZFNlbGVjdGVkLAorICAgICAgICBBdXRob3JpemVkLAorICAgICAg
ICBDb21wbGV0ZWQsCisKKyAgICAgICAgQWJvcnRlZCwKKyAgICAgICAgQ2FuY2VsZWQsCisgICAg
fSBtX3N0YXRlOworCisgICAgZW51bSBjbGFzcyBNZXJjaGFudFZhbGlkYXRpb25TdGF0ZSB7Cisg
ICAgICAgIElkbGUsCisgICAgICAgIFZhbGlkYXRpbmdNZXJjaGFudCwKKyAgICAgICAgVmFsaWRh
dGlvbkNvbXBsZXRlLAorICAgIH0gbV9tZXJjaGFudFZhbGlkYXRpb25TdGF0ZTsKKworICAgIGNv
bnN0IFBheW1lbnRSZXF1ZXN0IG1fcGF5bWVudFJlcXVlc3Q7Cit9OworCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Np
b24uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24u
aWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ5Njg0M2Q2OWY4M2E0ZWMxNzM5NGRmMTI5MTNjNTg4YzJkMTAxMTEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2Vzc2lvbi5pZGwKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAg
ICBBY3RpdmVET01PYmplY3QsCisgICAgQ29uZGl0aW9uYWw9QVBQTEVfUEFZLAorICAgIENvbnN0
cnVjdG9yKHVuc2lnbmVkIGxvbmcgdmVyc2lvbiwgRGljdGlvbmFyeSBwYXltZW50UmVxdWVzdCks
CisgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1bWVudCwKKyAgICBDb25zdHJ1Y3RvclJhaXNl
c0V4Y2VwdGlvbiwKKyAgICBFbmFibGVkQnlTZXR0aW5nPUFwcGxlUGF5LAorXSBpbnRlcmZhY2Ug
QXBwbGVQYXlTZXNzaW9uIDogRXZlbnRUYXJnZXQgeworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0
IFNUQVRVU19TVUNDRVNTID0gMDsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVEFUVVNfRkFJ
TFVSRSA9IDE7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1RBVFVTX0lOVkFMSURfQklMTElO
R19QT1NUQUxfQUREUkVTUyA9IDI7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1RBVFVTX0lO
VkFMSURfU0hJUFBJTkdfUE9TVEFMX0FERFJFU1MgPSAzOworICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IFNUQVRVU19JTlZBTElEX1NISVBQSU5HX0NPTlRBQ1QgPSA0OworICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IFNUQVRVU19QSU5fUkVRVUlSRUQgPSA1OworICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IFNUQVRVU19QSU5fSU5DT1JSRUNUID0gNjsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBT
VEFUVVNfUElOX0xPQ0tPVVQgPSA3OworCisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gc3RhdGljIGJvb2xlYW4gc3VwcG9ydHNWZXJzaW9uKHVu
c2lnbmVkIGxvbmcgdmVyc2lvbik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIFJhaXNlc0V4Y2VwdGlvbl0gc3RhdGljIGJvb2xlYW4gY2FuTWFrZVBheW1lbnRzKCk7Cisg
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gc3Rh
dGljIFByb21pc2UgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoRE9NU3RyaW5nIG1lcmNo
YW50SWRlbnRpZmllcik7CisKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGJlZ2luKCk7Cisg
ICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBhYm9ydCgpOworICAgIFtSYWlzZXNFeGNlcHRpb25d
IHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oRGljdGlvbmFyeSBtZXJjaGFudFNlc3Np
b24pOworICAgIFtDdXN0b20sIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCBjb21wbGV0ZVNoaXBwaW5n
TWV0aG9kU2VsZWN0aW9uKHVuc2lnbmVkIHNob3J0IHN0YXR1cywgRGljdGlvbmFyeSBuZXdUb3Rh
bCwgc2VxdWVuY2U8RGljdGlvbmFyeT4gbmV3TGluZUl0ZW1zKTsKKyAgICBbQ3VzdG9tLCBSYWlz
ZXNFeGNlcHRpb25dIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24odW5zaWdu
ZWQgc2hvcnQgc3RhdHVzLCBzZXF1ZW5jZTxEaWN0aW9uYXJ5PiBuZXdTaGlwcGluZ01ldGhvZHMs
IERpY3Rpb25hcnkgbmV3VG90YWwsIHNlcXVlbmNlPERpY3Rpb25hcnk+IG5ld0xpbmVJdGVtcyk7
CisgICAgW0N1c3RvbSwgUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhv
ZFNlbGVjdGlvbihEaWN0aW9uYXJ5IG5ld1RvdGFsLCBzZXF1ZW5jZTxEaWN0aW9uYXJ5PiBuZXdM
aW5lSXRlbXMpOworICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgY29tcGxldGVQYXltZW50KHVu
c2lnbmVkIHNob3J0IHN0YXR1cyk7CisKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9udmFs
aWRhdGVtZXJjaGFudDsKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ucGF5bWVudG1ldGhv
ZHNlbGVjdGVkOworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25wYXltZW50YXV0aG9yaXpl
ZDsKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uc2hpcHBpbmdtZXRob2RzZWxlY3RlZDsK
KyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uc2hpcHBpbmdjb250YWN0c2VsZWN0ZWQ7Cisg
ICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmNhbmNlbDsKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0
ZWRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hp
cHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFkMzA1NDBhNDZlMDBl
Yjk4ZDBiODYzNmI2NjY1YjU0YjJjYjI2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50
LmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5oIgorCisjaWYg
RU5BQkxFKEFQUExFX1BBWSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBcHBsZVBheVNoaXBw
aW5nQ29udGFjdFNlbGVjdGVkRXZlbnQ6OkFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFBheW1lbnRDb250YWN0JiBzaGlw
cGluZ0NvbnRhY3QpCisgICAgOiBFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UpCisgICAgLCBtX3No
aXBwaW5nQ29udGFjdChzaGlwcGluZ0NvbnRhY3QpCit7Cit9CisKK0FwcGxlUGF5U2hpcHBpbmdD
b250YWN0U2VsZWN0ZWRFdmVudDo6fkFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVu
dCgpCit7Cit9CisKK0V2ZW50SW50ZXJmYWNlIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0
ZWRFdmVudDo6ZXZlbnRJbnRlcmZhY2UoKSBjb25zdAoreworICAgIHJldHVybiBBcHBsZVBheVNo
aXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnRJbnRlcmZhY2VUeXBlOworfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNo
aXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDJiNjlmNzFkMjkzNWIxM2UzYTU1YWE0MjY2YWU2OWVkZDBhMjk2MgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ0NvbnRh
Y3RTZWxlY3RlZEV2ZW50LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5j
bHVkZSAiUGF5bWVudENvbnRhY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBB
cHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQg
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3Rl
ZEV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBQYXltZW50Q29u
dGFjdCYgc2hpcHBpbmdDb250YWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50KHR5cGUsIHNoaXBwaW5nQ29u
dGFjdCkpOworICAgIH0KKworICAgIHZpcnR1YWwgfkFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2Vs
ZWN0ZWRFdmVudCgpOworCisgICAgY29uc3QgUGF5bWVudENvbnRhY3QmIHNoaXBwaW5nQ29udGFj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hpcHBpbmdDb250YWN0OyB9CisKK3ByaXZhdGU6CisgICAg
QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgY29uc3QgUGF5bWVudENvbnRhY3QmKTsKKworICAgIC8vIEV2ZW50LgorICAgIEV2ZW50
SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBjb25zdCBQ
YXltZW50Q29udGFjdCBtX3NoaXBwaW5nQ29udGFjdDsKK307CisKK30KKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29u
dGFjdFNlbGVjdGVkRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlNmEz
NDk3Mzk1ZTcxMjVhZjU3OGQyYzg5MzlhYWY4YWEwYzZjMmYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2Vs
ZWN0ZWRFdmVudC5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25k
aXRpb25hbD1BUFBMRV9QQVksCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCitdIGludGVyZmFjZSBB
cHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQgOiBFdmVudCB7CisgICAgW0NhY2hl
ZEF0dHJpYnV0ZSwgQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgT2JqZWN0IHNoaXBw
aW5nQ29udGFjdDsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM4MmJkNDMzNWU3NjBhZDMxMDQxM2U3MGRmYTRiYWRkNDNkYTNiNDcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50LmNwcApAQCAtMCwwICsxLDUwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFwcGxlUGF5U2hpcHBpbmdN
ZXRob2RTZWxlY3RlZEV2ZW50LmgiCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50OjpBcHBs
ZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGNvbnN0IFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYgc2hpcHBpbmdNZXRob2QpCisg
ICAgOiBFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UpCisgICAgLCBtX3NoaXBwaW5nTWV0aG9kKHNo
aXBwaW5nTWV0aG9kKQoreworfQorCitBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVu
dDo6fkFwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50KCkKK3sKK30KKworRXZlbnRJ
bnRlcmZhY2UgQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQ6OmV2ZW50SW50ZXJm
YWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVk
RXZlbnRJbnRlcmZhY2VUeXBlOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRF
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5n
TWV0aG9kU2VsZWN0ZWRFdmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5NTA5ZGY5ZTZjZTU0YjM1OTkwOTcy
MzgyZTk1YzI3MjVjMGJiOTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50LmgKQEAgLTAs
MCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQUExF
X1BBWSkKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiUGF5bWVudFJlcXVlc3QuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2Vs
ZWN0ZWRFdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgY29uc3QgUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kJiBzaGlw
cGluZ01ldGhvZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFwcGxlUGF5
U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50KHR5cGUsIHNoaXBwaW5nTWV0aG9kKSk7CisgICAg
fQorCisgICAgdmlydHVhbCB+QXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQoKTsK
KworICAgIGNvbnN0IFBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYgc2hpcHBpbmdNZXRo
b2QoKSBjb25zdCB7IHJldHVybiBtX3NoaXBwaW5nTWV0aG9kOyB9CisKK3ByaXZhdGU6CisgICAg
QXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBjb25zdCBQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QmKTsKKworICAgIC8vIEV2
ZW50LgorICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7
CisKKyAgICBjb25zdCBQYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QgbV9zaGlwcGluZ01l
dGhvZDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVj
dGVkRXZlbnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2YjkzMmZmNDI3ZDg1MDM3YTdkMTAyMzdjYjQ1MTA4
NWM1OGE2YWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50LmlkbApAQCAtMCwwICsxLDMx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPUFQUExFX1BBWSwKKyAgICBOb0lu
dGVyZmFjZU9iamVjdCwKK10gaW50ZXJmYWNlIEFwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3Rl
ZEV2ZW50IDogRXZlbnQgeworICAgIFtDYWNoZWRBdHRyaWJ1dGUsIEN1c3RvbUdldHRlcl0gcmVh
ZG9ubHkgYXR0cmlidXRlIE9iamVjdCBzaGlwcGluZ01ldGhvZDsKK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlWYWxpZGF0
ZU1lcmNoYW50RXZlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2Yzg2Mzc0OGY0YjlkM2NhN2Y3NDMwYzUx
Y2JkMDY4NmVhOTE5M2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcApAQCAtMCwwICsxLDUw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFwcGxlUGF5
VmFsaWRhdGVNZXJjaGFudEV2ZW50LmgiCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50OjpBcHBsZVBh
eVZhbGlkYXRlTWVyY2hhbnRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFVS
TCYgdmFsaWRhdGlvblVSTCkKKyAgICA6IEV2ZW50KHR5cGUsIGZhbHNlLCBmYWxzZSkKKyAgICAs
IG1fdmFsaWRhdGlvblVSTCh2YWxpZGF0aW9uVVJMKQoreworfQorCitBcHBsZVBheVZhbGlkYXRl
TWVyY2hhbnRFdmVudDo6fkFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50KCkKK3sKK30KKwor
RXZlbnRJbnRlcmZhY2UgQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQ6OmV2ZW50SW50ZXJm
YWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnRJ
bnRlcmZhY2VUeXBlOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVu
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQ1MTU1OTgzMWMwNDg4NTc5M2RiZWNkZTliYzYyY2FjZGVhNTg5ZjYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKworI2luY2x1ZGUgIkV2ZW50
LmgiCisjaW5jbHVkZSAiVVJMLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXBw
bGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8QXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQ+IGNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFVSTCYgdmFsaWRhdGlvblVSTCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2
ZW50KHR5cGUsIHZhbGlkYXRpb25VUkwpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5BcHBsZVBh
eVZhbGlkYXRlTWVyY2hhbnRFdmVudCgpOworCisgICAgY29uc3QgU3RyaW5nJiB2YWxpZGF0aW9u
VVJMKCkgY29uc3QgeyByZXR1cm4gbV92YWxpZGF0aW9uVVJMLnN0cmluZygpOyB9CisKK3ByaXZh
dGU6CisgICAgQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBjb25zdCBVUkwmIHZhbGlkYXRpb25VUkwpOworCisgICAgLy8gRXZlbnQuCisgICAg
RXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKKworICAgIGNv
bnN0IFVSTCBtX3ZhbGlkYXRpb25VUkw7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRF
dmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5VmFsaWRh
dGVNZXJjaGFudEV2ZW50LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjgyZTFjNWMwODMyMDU5NDkxMmVlOWM2
NmQ1YzdjZjI5YTMyNDAwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5pZGwKQEAgLTAsMCArMSwz
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1BUFBMRV9QQVksCisgICAgTm9J
bnRlcmZhY2VPYmplY3QsCitdIGludGVyZmFjZSBBcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVu
dCA6IEV2ZW50IHsKKyAgICBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3JdIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgdmFsaWRhdGlvblVSTDsKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxZmQ3OWY5NTY1MTQwYzQ5ZDYz
MDFjZjA2NzNlOWI1NTljY2M3YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L1BheW1lbnQuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIEpT
VmFsdWU7Cit9CisKK09CSkNfQ0xBU1MgUEtQYXltZW50OworCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFBheW1lbnQgeworcHVibGljOgorICAgIFBheW1lbnQoKQorICAgIHsKKyAgICB9
CisKKyAgICBleHBsaWNpdCBQYXltZW50KFBLUGF5bWVudCAqcGtQYXltZW50KQorICAgICAgICA6
IG1fcGtQYXltZW50KHBrUGF5bWVudCkKKyAgICB7CisgICAgfQorCisgICAgflBheW1lbnQoKQor
ICAgIHsKKyAgICB9CisKKyAgICBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSYpIGNv
bnN0OworCisgICAgUEtQYXltZW50ICpwa1BheW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3BrUGF5
bWVudC5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFJldGFpblB0cjxQS1BheW1lbnQ+IG1fcGtQ
YXltZW50OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xMTlkYmQxZWZjNjVhYmY1ZjJlYmEzODNiMzhmNjAxNGVhMjE1Mzg1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50QXV0aG9yaXph
dGlvblN0YXR1cy5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShBUFBMRV9QQVkpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBj
bGFzcyBQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyB7CisgICAgU3VjY2VzcywKKyAgICBGYWls
dXJlLAorICAgIEludmFsaWRCaWxsaW5nUG9zdGFsQWRkcmVzcywKKyAgICBJbnZhbGlkU2hpcHBp
bmdQb3N0YWxBZGRyZXNzLAorICAgIEludmFsaWRTaGlwcGluZ0NvbnRhY3QsCisgICAgUElOUmVx
dWlyZWQsCisgICAgUElOSW5jb3JyZWN0LAorICAgIFBJTkxvY2tvdXQsCit9OworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
Q29udGFjdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29udGFj
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjNmMGE0NzY3ZDQ4NThkYTExNDI2MTc2ZWNiOGUxODc3MDQ1MDQ0NDIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1l
bnRDb250YWN0LmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKworI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uQ29k
ZS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIEpTVmFsdWU7Cit9
CisKK09CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OworT0JKQ19DTEFTUyBQS0NvbnRhY3Q7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGF5bWVudENvbnRhY3QgeworcHVibGljOgorICAg
IFBheW1lbnRDb250YWN0KCkKKyAgICB7CisgICAgfQorCisgICAgZXhwbGljaXQgUGF5bWVudENv
bnRhY3QoUEtDb250YWN0ICpwa0NvbnRhY3QpCisgICAgICAgIDogbV9wa0NvbnRhY3QocGtDb250
YWN0KQorICAgIHsKKyAgICB9CisKKyAgICB+UGF5bWVudENvbnRhY3QoKQorICAgIHsKKyAgICB9
CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8UGF5bWVudENvbnRhY3Q+IGZyb21KUyhKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6SlNWYWx1ZSwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworICAgIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlJikgY29uc3Q7CisKKyAgICBQS0NvbnRhY3QgKnBrQ29u
dGFjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGtDb250YWN0LmdldCgpOyB9CisKK3ByaXZhdGU6Cisg
ICAgUmV0YWluUHRyPFBLQ29udGFjdD4gbV9wa0NvbnRhY3Q7Cit9OworCitSZXRhaW5QdHI8TlNE
aWN0aW9uYXJ5PiB0b0RpY3Rpb25hcnkoUEtDb250YWN0ICopOworCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWVyY2hhbnRT
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXJjaGFu
dFNlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTI2NDExMDI3MWE0NWE3NWY4ODVhYWQ2OWVlOWQ4ZjE2
NGY1NWMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9QYXltZW50TWVyY2hhbnRTZXNzaW9uLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKworI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEZJWE1FOiBUaGlz
IHNob3VsZCBiZSBhIHdyYXBwZXIgY2xhc3MgYXJvdW5kIGEgUEtQYXltZW50TWVyY2hhbnRTZXNz
aW9uLgorc3RydWN0IFBheW1lbnRNZXJjaGFudFNlc3Npb24geworICAgIFN0cmluZyBtZXJjaGFu
dElkZW50aWZpZXI7CisgICAgU3RyaW5nIHNlc3Npb25JZGVudGlmaWVyOworICAgIFN0cmluZyBu
b25jZTsKKyAgICBTdHJpbmcgZG9tYWluTmFtZTsKKyAgICB1aW50NjRfdCBlcG9jaFRpbWVzdGFt
cDsKKyAgICBTdHJpbmcgc2lnbmF0dXJlOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1ldGhvZC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjYz
YTU5ZTA2MmRkMWNlMWE5NDcwODgyODdjNmNlNzdjNGM1Yzc0YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1ldGhvZC5oCkBAIC0wLDAg
KzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9Q
QVkpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xh
c3MgRXhlY1N0YXRlOworY2xhc3MgSlNWYWx1ZTsKK30KKworT0JKQ19DTEFTUyBOU0RpY3Rpb25h
cnk7CitPQkpDX0NMQVNTIFBLUGF5bWVudE1ldGhvZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBQYXltZW50TWV0aG9kIHsKK3B1YmxpYzoKKyAgICBQYXltZW50TWV0aG9kKCkKKyAg
ICB7CisgICAgfQorCisgICAgZXhwbGljaXQgUGF5bWVudE1ldGhvZChQS1BheW1lbnRNZXRob2Qg
KnBrUGF5bWVudE1ldGhvZCkKKyAgICAgICAgOiBtX3BrUGF5bWVudE1ldGhvZChwa1BheW1lbnRN
ZXRob2QpCisgICAgeworICAgIH0KKworICAgIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0
YXRlJikgY29uc3Q7CisKKyAgICBQS1BheW1lbnRNZXRob2QgKnBrUGF5bWVudE1ldGhvZCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGtQYXltZW50TWV0aG9kLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAg
UmV0YWluUHRyPFBLUGF5bWVudE1ldGhvZD4gbV9wa1BheW1lbnRNZXRob2Q7Cit9OworCitSZXRh
aW5QdHI8TlNEaWN0aW9uYXJ5PiB0b0RpY3Rpb25hcnkoUEtQYXltZW50TWV0aG9kICopOworCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9Q
YXltZW50UmVxdWVzdFZhbGlkYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRSZXF1ZXN0VmFsaWRhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NWE2MDY4MmU5MDdk
MGRkNTg0NWY4MzQ5NTJhZjhkMjI3NzhhZmMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50UmVxdWVzdFZhbGlkYXRvci5jcHAKQEAgLTAs
MCArMSwxNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUGF5bWVudFJlcXVlc3RWYWxpZGF0b3IuaCIKKworI2lmIEVOQUJMRShBUFBMRV9QQVkp
CisKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5o
IgorI2luY2x1ZGUgIlBheW1lbnRSZXF1ZXN0LmgiCisjaW5jbHVkZSA8dW5pY29kZS91Y3Vyci5o
PgorI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bh
eW1lbnRSZXF1ZXN0VmFsaWRhdG9yOjpQYXltZW50UmVxdWVzdFZhbGlkYXRvcihET01XaW5kb3cm
IHdpbmRvdykKKyAgICA6IG1fd2luZG93KHdpbmRvdykKK3sKK30KKworUGF5bWVudFJlcXVlc3RW
YWxpZGF0b3I6On5QYXltZW50UmVxdWVzdFZhbGlkYXRvcigpCit7Cit9CisKK2Jvb2wgUGF5bWVu
dFJlcXVlc3RWYWxpZGF0b3I6OnZhbGlkYXRlKGNvbnN0IFBheW1lbnRSZXF1ZXN0JiBwYXltZW50
UmVxdWVzdCkgY29uc3QKK3sKKyAgICBpZiAoIXZhbGlkYXRlQ291bnRyeUNvZGUocGF5bWVudFJl
cXVlc3QuY291bnRyeUNvZGUoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXZh
bGlkYXRlQ3VycmVuY3lDb2RlKHBheW1lbnRSZXF1ZXN0LmN1cnJlbmN5Q29kZSgpKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghdmFsaWRhdGVTdXBwb3J0ZWROZXR3b3JrcyhwYXlt
ZW50UmVxdWVzdC5zdXBwb3J0ZWROZXR3b3JrcygpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmICghdmFsaWRhdGVNZXJjaGFudENhcGFiaWxpdGllcyhwYXltZW50UmVxdWVzdC5tZXJj
aGFudENhcGFiaWxpdGllcygpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghdmFs
aWRhdGVUb3RhbChwYXltZW50UmVxdWVzdC50b3RhbCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUGF5bWVudFJlcXVlc3RWYWxpZGF0b3I6
OnZhbGlkYXRlVG90YWwoY29uc3QgUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtJiB0b3RhbCkgY29u
c3QKK3sKKyAgICBpZiAoIXRvdGFsLmxhYmVsKSB7CisgICAgICAgIG1fd2luZG93LnByaW50RXJy
b3JNZXNzYWdlKCJNaXNzaW5nIHRvdGFsIGxhYmVsLiIpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgaWYgKCF0b3RhbC5hbW91bnQpIHsKKyAgICAgICAgbV93aW5kb3cucHJp
bnRFcnJvck1lc3NhZ2UoIk1pc3NpbmcgdG90YWwgYW1vdW50LiIpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgaWYgKCp0b3RhbC5hbW91bnQgPD0gMCkgeworICAgICAgICBt
X3dpbmRvdy5wcmludEVycm9yTWVzc2FnZSgiVG90YWwgYW1vdW50IG11c3QgYmUgZ3JlYXRlciB0
aGFuIHplcm8uIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoKnRv
dGFsLmFtb3VudCA+IDEwMDAwMDApIHsKKyAgICAgICAgbV93aW5kb3cucHJpbnRFcnJvck1lc3Nh
Z2UoIlRvdGFsIGFtb3VudCBpcyB0b28gYmlnLiIpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUGF5bWVudFJlcXVlc3RWYWxpZGF0
b3I6OnZhbGlkYXRlQ291bnRyeUNvZGUoY29uc3QgU3RyaW5nJiBjb3VudHJ5Q29kZSkgY29uc3QK
K3sKKyAgICBpZiAoIWNvdW50cnlDb2RlKSB7CisgICAgICAgIG1fd2luZG93LnByaW50RXJyb3JN
ZXNzYWdlKCJNaXNzaW5nIGNvdW50cnkgY29kZS4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGZvciAoYXV0byAqY291bnRyeUNvZGVQdHIgPSB1bG9jX2dldElTT0NvdW50
cmllcygpOyAqY291bnRyeUNvZGVQdHI7ICsrY291bnRyeUNvZGVQdHIpIHsKKyAgICAgICAgaWYg
KGNvdW50cnlDb2RlID09ICpjb3VudHJ5Q29kZVB0cikKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlwiIiArIGNvdW50cnlD
b2RlLCAiXCIgaXMgbm90IGEgdmFsaWQgY291bnRyeSBjb2RlLiIpOworICAgIG1fd2luZG93LnBy
aW50RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IFBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0ZUN1cnJlbmN5Q29kZShjb25zdCBTdHJp
bmcmIGN1cnJlbmN5Q29kZSkgY29uc3QKK3sKKyAgICBpZiAoIWN1cnJlbmN5Q29kZSkgeworICAg
ICAgICBtX3dpbmRvdy5wcmludEVycm9yTWVzc2FnZSgiTWlzc2luZyBjdXJyZW5jeSBjb2RlLiIp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgVUVycm9yQ29kZSBlcnJvckNv
ZGUgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBjdXJyZW5jeUNvZGVzID0gc3RkOjp1bmlxdWVf
cHRyPFVFbnVtZXJhdGlvbiwgdm9pZCAoKikoVUVudW1lcmF0aW9uKik+KHVjdXJyX29wZW5JU09D
dXJyZW5jaWVzKFVDVVJSX0FMTCwgJmVycm9yQ29kZSksIHVlbnVtX2Nsb3NlKTsKKworICAgIGlu
dDMyX3QgbGVuZ3RoOworICAgIHdoaWxlIChhdXRvICpjdXJyZW5jeUNvZGVQdHIgPSB1ZW51bV9u
ZXh0KGN1cnJlbmN5Q29kZXMuZ2V0KCksICZsZW5ndGgsICZlcnJvckNvZGUpKSB7CisgICAgICAg
IGlmIChjdXJyZW5jeUNvZGVQdHIgPT0gY3VycmVuY3lDb2RlKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgYXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiXCIiICsgY3Vy
cmVuY3lDb2RlLCAiXCIgaXMgbm90IGEgdmFsaWQgY3VycmVuY3kgY29kZS4iKTsKKyAgICBtX3dp
bmRvdy5wcmludEVycm9yTWVzc2FnZShtZXNzYWdlKTsKKworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBQYXltZW50UmVxdWVzdFZhbGlkYXRvcjo6dmFsaWRhdGVNZXJjaGFudENhcGFiaWxp
dGllcyhjb25zdCBQYXltZW50UmVxdWVzdDo6TWVyY2hhbnRDYXBhYmlsaXRpZXMmIG1lcmNoYW50
Q2FwYWJpbGl0aWVzKSBjb25zdAoreworICAgIGlmICghbWVyY2hhbnRDYXBhYmlsaXRpZXMuc3Vw
cG9ydHMzRFMgJiYgIW1lcmNoYW50Q2FwYWJpbGl0aWVzLnN1cHBvcnRzRU1WICYmICFtZXJjaGFu
dENhcGFiaWxpdGllcy5zdXBwb3J0c0NyZWRpdCAmJiAhbWVyY2hhbnRDYXBhYmlsaXRpZXMuc3Vw
cG9ydHNEZWJpdCkgeworICAgICAgICBtX3dpbmRvdy5wcmludEVycm9yTWVzc2FnZSgiTWlzc2lu
ZyBtZXJjaGFudCBjYXBhYmlsaXRpZXMiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yOjp2
YWxpZGF0ZVN1cHBvcnRlZE5ldHdvcmtzKGNvbnN0IFBheW1lbnRSZXF1ZXN0OjpTdXBwb3J0ZWRO
ZXR3b3JrcyYgc3VwcG9ydGVkTmV0d29ya3MpIGNvbnN0Cit7CisgICAgaWYgKCFzdXBwb3J0ZWRO
ZXR3b3Jrcy5hbWV4ICYmICFzdXBwb3J0ZWROZXR3b3Jrcy5jaGluYVVuaW9uUGF5ICYmICFzdXBw
b3J0ZWROZXR3b3Jrcy5kaXNjb3ZlciAmJiAhc3VwcG9ydGVkTmV0d29ya3MuaW50ZXJhYyAmJiAh
c3VwcG9ydGVkTmV0d29ya3MubWFzdGVyQ2FyZCAmJiAhc3VwcG9ydGVkTmV0d29ya3MucHJpdmF0
ZUxhYmVsICYmIXN1cHBvcnRlZE5ldHdvcmtzLnZpc2EpIHsKKyAgICAgICAgbV93aW5kb3cucHJp
bnRFcnJvck1lc3NhZ2UoIk1pc3Npbmcgc3VwcG9ydGVkIG5ldHdvcmtzIik7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJlcXVl
c3RWYWxpZGF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFJl
cXVlc3RWYWxpZGF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmQxNTBjYmJkY2Q3MGNlMjAzYTVmZTk2MzAz
MmJjOThlZDBmMzgzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50UmVxdWVzdFZhbGlkYXRvci5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVkpCisKKyNp
bmNsdWRlICJQYXltZW50UmVxdWVzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IERPTVdpbmRvdzsKKworY2xhc3MgUGF5bWVudFJlcXVlc3RWYWxpZGF0b3IgeworcHVibGljOgor
ICAgIGV4cGxpY2l0IFBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yKERPTVdpbmRvdyYpOworICAgIH5Q
YXltZW50UmVxdWVzdFZhbGlkYXRvcigpOworCisgICAgYm9vbCB2YWxpZGF0ZShjb25zdCBQYXlt
ZW50UmVxdWVzdCYpIGNvbnN0OworICAgIGJvb2wgdmFsaWRhdGVUb3RhbChjb25zdCBQYXltZW50
UmVxdWVzdDo6TGluZUl0ZW0mKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBib29sIHZhbGlkYXRl
Q291bnRyeUNvZGUoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgYm9vbCB2YWxpZGF0ZUN1cnJl
bmN5Q29kZShjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBib29sIHZhbGlkYXRlTWVyY2hhbnRD
YXBhYmlsaXRpZXMoY29uc3QgUGF5bWVudFJlcXVlc3Q6Ok1lcmNoYW50Q2FwYWJpbGl0aWVzJikg
Y29uc3Q7CisgICAgYm9vbCB2YWxpZGF0ZVN1cHBvcnRlZE5ldHdvcmtzKGNvbnN0IFBheW1lbnRS
ZXF1ZXN0OjpTdXBwb3J0ZWROZXR3b3JrcyYpIGNvbnN0OworCisgICAgRE9NV2luZG93JiBtX3dp
bmRvdzsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvY29hLm1tCmluZGV4IGI2Y2VjOWVmNGZkYWUyNzVh
N2MwNjJiODg3NTBhNDljYTIxNWVlM2YuLjY5MzNhNTFkNjhiOTgyNjRmZGNlNzI3ZWQ2OTY4YTA0
ZDM2ODZjZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
Y29jb2EvUGF5bWVudENvY29hLm1tCkBAIC0yNCwxMSArMjQsMTAgQEAKICAqLwogCiAjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIlBheW1lbnQuaCIKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkp
CiAKLSNpbXBvcnQgIlBheW1lbnQuaCIKLQogI2ltcG9ydCAiUGF5bWVudENvbnRhY3QuaCIKICNp
bXBvcnQgIlBheW1lbnRNZXRob2QuaCIKICNpbXBvcnQgPFBhc3NLaXQvUGFzc0tpdC5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29u
dGFjdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXlt
ZW50Q29udGFjdENvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiZWJiMDhkZmI5MGE4YmUwY2UwZjdkMmNh
MDcwMGExYTA2YWM4YzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29jb2EubW0KQEAgLTAsMCArMSwxNjkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGF5bWVudENvbnRh
Y3QuaCIKKworI2lmIEVOQUJMRShBUFBMRV9QQVkpCisKKyNpbXBvcnQgIkpTTWFpblRocmVhZEV4
ZWNTdGF0ZS5oIgorI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKKyNpbXBvcnQgPENvbnRhY3RzL0Nv
bnRhY3RzLmg+CisjaW1wb3J0IDxQYXNzS2l0L1Bhc3NLaXQuaD4KKyNpbXBvcnQgPHJ1bnRpbWUv
SlNPTk9iamVjdC5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKENvbnRhY3RzKQorU09GVF9MSU5L
X0NMQVNTKENvbnRhY3RzLCBDTk11dGFibGVQb3N0YWxBZGRyZXNzKQorU09GVF9MSU5LX0NMQVNT
KENvbnRhY3RzLCBDTlBob25lTnVtYmVyKQorCisjaWYgUExBVEZPUk0oTUFDKQorU09GVF9MSU5L
X1BSSVZBVEVfRlJBTUVXT1JLKFBhc3NLaXQpCisjZWxzZQorU09GVF9MSU5LX0ZSQU1FV09SSyhQ
YXNzS2l0KQorI2VuZGlmCisKK1NPRlRfTElOS19DTEFTUyhQYXNzS2l0LCBQS0NvbnRhY3QpCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGJvb2wgaXNWYWxpZFBheW1lbnRDb250YWN0
UHJvcGVydHlOYW1lKE5TU3RyaW5nKiBwcm9wZXJ0eU5hbWUpCit7CisgICAgc3RhdGljIE5TU2V0
ICp2YWxpZFByb3BlcnR5TmFtZXMgPSBbW05TU2V0IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6QCJm
YW1pbHlOYW1lIiwgQCJnaXZlbk5hbWUiLCBAImVtYWlsQWRkcmVzcyIsIEAicGhvbmVOdW1iZXIi
LCBAImFkZHJlc3NMaW5lcyIsIEAibG9jYWxpdHkiLCBAInBvc3RhbENvZGUiLCBAImFkbWluaXN0
cmF0aXZlQXJlYSIsIEAiY291bnRyeSIsIEAiY291bnRyeUNvZGUiLCBuaWwgXTsKKworICAgIHJl
dHVybiBbdmFsaWRQcm9wZXJ0eU5hbWVzIGNvbnRhaW5zT2JqZWN0OnByb3BlcnR5TmFtZV07Cit9
CisKK3N0YXRpYyBSZXRhaW5QdHI8UEtDb250YWN0PiBmcm9tRGljdGlvbmFyeShOU0RpY3Rpb25h
cnkgKmRpY3Rpb25hcnksIFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIGZvciAoTlNTdHJp
bmcgKnByb3BlcnR5TmFtZSBpbiBkaWN0aW9uYXJ5KSB7CisgICAgICAgIGlmICghaXNWYWxpZFBh
eW1lbnRDb250YWN0UHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgICAgIGVy
cm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlwiIiArIFN0cmluZyhwcm9wZXJ0eU5hbWUpLCAiXCIg
aXMgbm90IGEgdmFsaWQgcGF5bWVudCBjb250YWN0IHByb3BlcnR5IG5hbWUuIik7CisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gcmVzdWx0
ID0gYWRvcHROUyhbYWxsb2NQS0NvbnRhY3RJbnN0YW5jZSgpIGluaXRdKTsKKworICAgIE5TU3Ry
aW5nICpmYW1pbHlOYW1lID0gZHluYW1pY19vYmpjX2Nhc3Q8TlNTdHJpbmc+KGRpY3Rpb25hcnlb
QCJmYW1pbHlOYW1lIl0pOworICAgIE5TU3RyaW5nICpnaXZlbk5hbWUgPSBkeW5hbWljX29iamNf
Y2FzdDxOU1N0cmluZz4oZGljdGlvbmFyeVtAImdpdmVuTmFtZSJdKTsKKworICAgIGlmIChmYW1p
bHlOYW1lIHx8IGdpdmVuTmFtZSkgeworICAgICAgICBhdXRvIG5hbWUgPSBhZG9wdE5TKFtbTlNQ
ZXJzb25OYW1lQ29tcG9uZW50cyBhbGxvY10gaW5pdF0pOworICAgICAgICBbbmFtZSBzZXRGYW1p
bHlOYW1lOmZhbWlseU5hbWVdOworICAgICAgICBbbmFtZSBzZXRHaXZlbk5hbWU6Z2l2ZW5OYW1l
XTsKKyAgICAgICAgW3Jlc3VsdCBzZXROYW1lOm5hbWUuZ2V0KCldOworICAgIH0KKworICAgIFty
ZXN1bHQgc2V0RW1haWxBZGRyZXNzOmR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5nPihkaWN0aW9u
YXJ5W0AiZW1haWxBZGRyZXNzIl0pXTsKKworICAgIGlmIChOU1N0cmluZyAqcGhvbmVOdW1iZXIg
PSBkeW5hbWljX29iamNfY2FzdDxOU1N0cmluZz4oZGljdGlvbmFyeVtAInBob25lTnVtYmVyIl0p
KQorICAgICAgICBbcmVzdWx0IHNldFBob25lTnVtYmVyOmFkb3B0TlMoW2FsbG9jQ05QaG9uZU51
bWJlckluc3RhbmNlKCkgaW5pdFdpdGhTdHJpbmdWYWx1ZTpwaG9uZU51bWJlcl0pLmdldCgpXTsK
KworICAgIE5TQXJyYXkgKmFkZHJlc3NMaW5lcyA9IGR5bmFtaWNfb2JqY19jYXN0PE5TQXJyYXk+
KGRpY3Rpb25hcnlbQCJhZGRyZXNzTGluZXMiXSk7CisgICAgaWYgKGFkZHJlc3NMaW5lcy5jb3Vu
dCkgeworICAgICAgICBhdXRvIGFkZHJlc3MgPSBhZG9wdE5TKFthbGxvY0NOTXV0YWJsZVBvc3Rh
bEFkZHJlc3NJbnN0YW5jZSgpIGluaXRdKTsKKworICAgICAgICBbYWRkcmVzcyBzZXRTdHJlZXQ6
W2FkZHJlc3NMaW5lcyBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCJcbiJdXTsKKworICAgICAg
ICBpZiAoTlNTdHJpbmcgKmxvY2FsaXR5ID0gZHluYW1pY19vYmpjX2Nhc3Q8TlNTdHJpbmc+KGRp
Y3Rpb25hcnlbQCJsb2NhbGl0eSJdKSkKKyAgICAgICAgICAgIFthZGRyZXNzIHNldENpdHk6bG9j
YWxpdHldOworICAgICAgICBpZiAoTlNTdHJpbmcgKnBvc3RhbENvZGUgPSBkeW5hbWljX29iamNf
Y2FzdDxOU1N0cmluZz4oZGljdGlvbmFyeVtAInBvc3RhbENvZGUiXSkpCisgICAgICAgICAgICBb
YWRkcmVzcyBzZXRQb3N0YWxDb2RlOnBvc3RhbENvZGVdOworICAgICAgICBpZiAoTlNTdHJpbmcg
KmFkbWluaXN0cmF0aXZlQXJlYSA9IGR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5nPihkaWN0aW9u
YXJ5W0AiYWRtaW5pc3RyYXRpdmVBcmVhIl0pKQorICAgICAgICAgICAgW2FkZHJlc3Mgc2V0U3Rh
dGU6YWRtaW5pc3RyYXRpdmVBcmVhXTsKKyAgICAgICAgaWYgKE5TU3RyaW5nICpjb3VudHJ5ID0g
ZHluYW1pY19vYmpjX2Nhc3Q8TlNTdHJpbmc+KGRpY3Rpb25hcnlbQCJjb3VudHJ5Il0pKQorICAg
ICAgICAgICAgW2FkZHJlc3Mgc2V0Q291bnRyeTpjb3VudHJ5XTsKKyAgICAgICAgaWYgKE5TU3Ry
aW5nICpjb3VudHJ5Q29kZSA9IGR5bmFtaWNfb2JqY19jYXN0PE5TU3RyaW5nPihkaWN0aW9uYXJ5
W0AiY291bnRyeUNvZGUiXSkpCisgICAgICAgICAgICBbYWRkcmVzcyBzZXRJU09Db3VudHJ5Q29k
ZTpjb3VudHJ5Q29kZV07CisKKyAgICAgICAgW3Jlc3VsdCBzZXRQb3N0YWxBZGRyZXNzOmFkZHJl
c3MuZ2V0KCldOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK09wdGlvbmFsPFBh
eW1lbnRDb250YWN0PiBQYXltZW50Q29udGFjdDo6ZnJvbUpTKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICAvLyBG
SVhNRTogRG9uJ3Qgcm91bmQtdHJpcCB1c2luZyBOU1N0cmluZy4KKyAgICBhdXRvIGpzb25TdHJp
bmcgPSBKU09OU3RyaW5naWZ5KCZzdGF0ZSwgdmFsdWUsIDApOworICAgIGlmICghanNvblN0cmlu
ZykKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBkeW5h
bWljX29iamNfY2FzdDxOU0RpY3Rpb25hcnk+KFtOU0pTT05TZXJpYWxpemF0aW9uIEpTT05PYmpl
Y3RXaXRoRGF0YTpbKE5TU3RyaW5nICopanNvblN0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ10gb3B0aW9uczowIGVycm9yOm5pbF0pOworICAgIGlmICghZGljdGlv
bmFyeSB8fCAhW2RpY3Rpb25hcnkgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0p
CisgICAgICAgIHJldHVybiBOdWxsb3B0OworCisgICAgYXV0byBwa0NvbnRhY3QgPSBmcm9tRGlj
dGlvbmFyeShkaWN0aW9uYXJ5LCBlcnJvck1lc3NhZ2UpOworICAgIGlmICghcGtDb250YWN0KQor
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKKworICAgIHJldHVybiBQYXltZW50Q29udGFjdChwa0Nv
bnRhY3QuZ2V0KCkpOworfQorCisvLyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIHRoZSBQYXNzS2l0
IFNQSS4KK1JldGFpblB0cjxOU0RpY3Rpb25hcnk+IHRvRGljdGlvbmFyeShQS0NvbnRhY3QgKmNv
bnRhY3QpCit7CisgICAgQVNTRVJUKGNvbnRhY3QpOworICAgICh2b2lkKWNvbnRhY3Q7CisKKyAg
ICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
XSk7CisKKyAgICBpZiAoY29udGFjdC5waG9uZU51bWJlcikKKyAgICAgICAgW3Jlc3VsdCBzZXRP
YmplY3Q6Y29udGFjdC5waG9uZU51bWJlci5zdHJpbmdWYWx1ZSBmb3JLZXk6QCJwaG9uZU51bWJl
ciJdOworICAgIGlmIChjb250YWN0LmVtYWlsQWRkcmVzcykKKyAgICAgICAgW3Jlc3VsdCBzZXRP
YmplY3Q6Y29udGFjdC5lbWFpbEFkZHJlc3MgZm9yS2V5OkAiZW1haWxBZGRyZXNzIl07CisgICAg
aWYgKGNvbnRhY3QubmFtZS5naXZlbk5hbWUpCisgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OmNv
bnRhY3QubmFtZS5naXZlbk5hbWUgZm9yS2V5OkAiZ2l2ZW5OYW1lIl07CisgICAgaWYgKGNvbnRh
Y3QubmFtZS5mYW1pbHlOYW1lKQorICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpjb250YWN0Lm5h
bWUuZmFtaWx5TmFtZSBmb3JLZXk6QCJmYW1pbHlOYW1lIl07CisgICAgaWYgKGNvbnRhY3QucG9z
dGFsQWRkcmVzcy5zdHJlZXQubGVuZ3RoKQorICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpbY29u
dGFjdC5wb3N0YWxBZGRyZXNzLnN0cmVldCBjb21wb25lbnRzU2VwYXJhdGVkQnlTdHJpbmc6QCJc
biJdIGZvcktleTpAImFkZHJlc3NMaW5lcyJdOworICAgIGlmIChjb250YWN0LnBvc3RhbEFkZHJl
c3MuY2l0eSkKKyAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6Y29udGFjdC5wb3N0YWxBZGRyZXNz
LmNpdHkgZm9yS2V5OkAibG9jYWxpdHkiXTsKKyAgICBpZiAoY29udGFjdC5wb3N0YWxBZGRyZXNz
LmNpdHkpCisgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OmNvbnRhY3QucG9zdGFsQWRkcmVzcy5w
b3N0YWxDb2RlIGZvcktleTpAInBvc3RhbENvZGUiXTsKKyAgICBpZiAoY29udGFjdC5wb3N0YWxB
ZGRyZXNzLmNpdHkpCisgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OmNvbnRhY3QucG9zdGFsQWRk
cmVzcy5zdGF0ZSBmb3JLZXk6QCJhZG1pbmlzdHJhdGl2ZUFyZWEiXTsKKyAgICBpZiAoY29udGFj
dC5wb3N0YWxBZGRyZXNzLmNpdHkpCisgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OmNvbnRhY3Qu
cG9zdGFsQWRkcmVzcy5jb3VudHJ5IGZvcktleTpAImNvdW50cnkiXTsKKyAgICBpZiAoY29udGFj
dC5wb3N0YWxBZGRyZXNzLmNpdHkpCisgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OmNvbnRhY3Qu
cG9zdGFsQWRkcmVzcy5JU09Db3VudHJ5Q29kZSBmb3JLZXk6QCJjb3VudHJ5Q29kZSJdOworCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNDOjpKU1ZhbHVlIFBheW1lbnRDb250YWN0Ojp0b0pT
KEpTQzo6RXhlY1N0YXRlJiBleGVjKSBjb25zdAoreworICAgIGF1dG8gZGljdGlvbmFyeSA9IHRv
RGljdGlvbmFyeShtX3BrQ29udGFjdC5nZXQoKSk7CisKKyAgICAvLyBGSVhNRTogRG9uJ3Qgcm91
bmQtdHJpcCB1c2luZyBOU1N0cmluZy4KKyAgICBhdXRvIGpzb25TdHJpbmcgPSBhZG9wdE5TKFtb
TlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0
aEpTT05PYmplY3Q6ZGljdGlvbmFyeS5nZXQoKSBvcHRpb25zOjAgZXJyb3I6bnVsbHB0cl0gZW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICByZXR1cm4gSlNPTlBhcnNlKCZleGVj
LCBqc29uU3RyaW5nLmdldCgpKTsKK30KKworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2Nv
YS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45YWVmY2NiZjlkOGJjYzVlOWI0YmFkYWYyMWFiYjViNWY3YTkzMmI3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2Nv
YS9QYXltZW50TWV0aG9kQ29jb2EubW0KQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5bWVudE1ldGhvZC5oIgorCisjaWYgRU5BQkxF
KEFQUExFX1BBWSkKKworI2ltcG9ydCA8UGFzc0tpdC9QYXNzS2l0Lmg+CisjaW1wb3J0IDxydW50
aW1lL0pTT05PYmplY3QuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZXRhaW5QdHI8TlNE
aWN0aW9uYXJ5PiB0b0RpY3Rpb25hcnkoUEtQYXltZW50TWV0aG9kICpwYXltZW50TWV0aG9kKQor
eworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2Nd
IGluaXRdKTsKKworICAgIGlmIChOU1N0cmluZyAqZGlzcGxheU5hbWUgPSBwYXltZW50TWV0aG9k
LmRpc3BsYXlOYW1lKQorICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpkaXNwbGF5TmFtZSBmb3JL
ZXk6QCJkaXNwbGF5TmFtZSJdOworCisgICAgaWYgKE5TU3RyaW5nICpuZXR3b3JrID0gcGF5bWVu
dE1ldGhvZC5uZXR3b3JrKQorICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpuZXR3b3JrIGZvcktl
eTpAIm5ldHdvcmsiXTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTQzo6SlNWYWx1ZSBQ
YXltZW50TWV0aG9kOjp0b0pTKEpTQzo6RXhlY1N0YXRlJiBleGVjKSBjb25zdAoreworICAgIGF1
dG8gZGljdGlvbmFyeSA9IHRvRGljdGlvbmFyeShtX3BrUGF5bWVudE1ldGhvZC5nZXQoKSk7CisK
KyAgICAvLyBGSVhNRTogRG9uJ3Qgcm91bmQtdHJpcCB1c2luZyBOU1N0cmluZy4KKyAgICBhdXRv
IGpzb25TdHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNK
U09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6ZGljdGlvbmFyeS5nZXQoKSBvcHRp
b25zOjAgZXJyb3I6bnVsbHB0cl0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAg
ICByZXR1cm4gSlNPTlBhcnNlKCZleGVjLCBqc29uU3RyaW5nLmdldCgpKTsKK30KKworfQorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZjFlNTg4ZjY1OWQ0MjA0NmY4NWExMjE5OGQxMWJlOTI1ZDExYjVkYi4uZjVjN2Ri
NWE1ZmI0MmNjNTA2ZTA5NTJkN2Q2MzgzOWE4YjE5ZTIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzk2LDcgKzc5NiwyNiBA
QAogCQkxQTg3NEFERjE5MDg1RTkxMDBCMDMxNzEgLyogV0FLVmlld0ludGVybmFsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTg3NEFERTE5MDg1RTkx
MDBCMDMxNzEgLyogV0FLVmlld0ludGVybmFsLmggKi87IH07CiAJCTFBODhBOTA0MTc1NTNDRDcw
MDBDNzRGOSAvKiBGaWxlSWNvbkxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQTg4QTkwMjE3NTUzQ0Q3MDAwQzc0RjkgLyogRmlsZUljb25M
b2FkZXIuY3BwICovOyB9OwogCQkxQTg4QTkwNTE3NTUzQ0Q3MDAwQzc0RjkgLyogRmlsZUljb25M
b2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
ODhBOTAzMTc1NTNDRDcwMDBDNzRGOSAvKiBGaWxlSWNvbkxvYWRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTFBOEE2NDMyMUQxOUU2OUIwMEQw
RTAwRiAvKiBQYXltZW50Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQTU4RTg2QTFEMTlEOTQ2MDBDMEVBNzMgLyogUGF5bWVudENvY29hLm1t
ICovOyB9OworCQkxQThBNjQzQTFEMTlGQzUzMDBEMEUwMEYgLyogUGF5bWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4QTY0MzcxRDE5RkM1MzAw
RDBFMDBGIC8qIFBheW1lbnQuaCAqLzsgfTsKKwkJMUE4QTY0M0IxRDE5RkM1MzAwRDBFMDBGIC8q
IFBheW1lbnRDb250YWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQThBNjQzODFEMTlGQzUzMDBEMEUwMEYgLyogUGF5bWVudENvbnRhY3QuaCAqLzsg
fTsKKwkJMUE4QTY0M0MxRDE5RkM1MzAwRDBFMDBGIC8qIFBheW1lbnRNZXRob2QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEE2NDM5MUQxOUZDNTMw
MEQwRTAwRiAvKiBQYXltZW50TWV0aG9kLmggKi87IH07CisJCTFBOEE2NDUxMUQxOUZDRkIwMEQw
RTAwRiAvKiBBcHBsZVBheVBheW1lbnRBdXRob3JpemVkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4QTY0M0QxRDE5RkNGQjAwRDBFMDBG
IC8qIEFwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudC5jcHAgKi87IH07CisJCTFBOEE2NDUy
MUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVBheW1lbnRBdXRob3JpemVkRXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEE2NDNFMUQxOUZD
RkIwMEQwRTAwRiAvKiBBcHBsZVBheVBheW1lbnRBdXRob3JpemVkRXZlbnQuaCAqLzsgfTsKKwkJ
MUE4QTY0NTQxRDE5RkNGQzAwRDBFMDBGIC8qIEFwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVk
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUE4QTY0NDAxRDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVk
RXZlbnQuY3BwICovOyB9OworCQkxQThBNjQ1NjFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBwbGVQYXlQ
YXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUE4QTY0NDIxRDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5UGF5
bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuaCAqLzsgfTsKKwkJMUE4QTY0NTgxRDE5RkNGQzAwRDBF
MDBGIC8qIEFwcGxlUGF5U2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQThBNjQ0NDFEMTlGQ0ZCMDBEMEUwMEYgLyogQXBwbGVQYXlTZXNz
aW9uLmNwcCAqLzsgfTsKKwkJMUE4QTY0NTkxRDE5RkNGQzAwRDBFMDBGIC8qIEFwcGxlUGF5U2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4
QTY0NDUxRDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5U2Vzc2lvbi5oICovOyB9OworCQkxQThB
NjQ1QjFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
OEE2NDQ3MUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVk
RXZlbnQuY3BwICovOyB9OworCQkxQThBNjQ1QzFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBwbGVQYXlT
aGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQThBNjQ0ODFEMTlGQ0ZCMDBEMEUwMEYgLyogQXBwbGVQYXlT
aGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmggKi87IH07CisJCTFBOEE2NDVGMUQxOUZDRkMw
MEQwRTAwRiAvKiBBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThBNjQ0QjFEMTlGQ0ZC
MDBEMEUwMEYgLyogQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuY3BwICovOyB9
OworCQkxQThBNjQ2MDFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNl
bGVjdGVkRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBOEE2NDRDMUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2Vs
ZWN0ZWRFdmVudC5oICovOyB9OworCQkxQThBNjQ2MjFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBwbGVQ
YXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUE4QTY0NEUxRDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5VmFs
aWRhdGVNZXJjaGFudEV2ZW50LmNwcCAqLzsgfTsKKwkJMUE4QTY0NjMxRDE5RkNGQzAwRDBFMDBG
IC8qIEFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThBNjQ0RjFEMTlGQ0ZCMDBEMEUwMEYgLyogQXBw
bGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQuaCAqLzsgfTsKKwkJMUE4QTY0NjcxRDE5RkRGRjAw
RDBFMDBGIC8qIFBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEE2NDY1MUQxOUZERkYwMEQwRTAwRiAvKiBQ
YXltZW50UmVxdWVzdFZhbGlkYXRvci5jcHAgKi87IH07CisJCTFBOEE2NDY4MUQxOUZERkYwMEQw
RTAwRiAvKiBQYXltZW50UmVxdWVzdFZhbGlkYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4QTY0NjYxRDE5RkRGRjAwRDBFMDBGIC8qIFBheW1l
bnRSZXF1ZXN0VmFsaWRhdG9yLmggKi87IH07CisJCTFBOEE2NDZDMUQxOUZGODcwMEQwRTAwRiAv
KiBQYXltZW50Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQThBNjQ2OTFEMTlGRjg3MDBEMEUwMEYgLyogUGF5bWVudENvY29hLm1tICovOyB9
OworCQkxQThBNjQ2RDFEMTlGRjg3MDBEMEUwMEYgLyogUGF5bWVudENvbnRhY3RDb2NvYS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEE2NDZBMUQx
OUZGODcwMEQwRTAwRiAvKiBQYXltZW50Q29udGFjdENvY29hLm1tICovOyB9OworCQkxQThBNjQ2
RTFEMTlGRjg3MDBEMEUwMEYgLyogUGF5bWVudE1ldGhvZENvY29hLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4QTY0NkIxRDE5RkY4NzAwRDBFMDBG
IC8qIFBheW1lbnRNZXRob2RDb2NvYS5tbSAqLzsgfTsKIAkJMUE4RjZCMDIwREI1MzAwNjAwMURC
Nzk0IC8qIFN1YnN0aXR1dGVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUE4RjZCMDEwREI1MzAwNjAwMURCNzk0IC8qIFN1YnN0aXR1dGVS
ZXNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTFBOEY2QkJDMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkIxMERCNTVD
REMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmNwcCAqLzsgfTsKIAkJMUE4RjZCQkQwREI1
NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEY2QkIyMERCNTVDREMwMDFEQjc5NCAvKiBBcHBs
aWNhdGlvbkNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTkyMSw2ICs5NDAsMjUgQEAKIAkJMUFFODJGOTAwQ0FBRkE5RDAwMjIzN0FFIC8q
IEpTRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBRTgyRjhFMENBQUZBOUQwMDIyMzdBRSAvKiBKU0RhdGFiYXNlLmggKi87IH07CiAJCTFB
RTgyRkVDMENBQjA3RUUwMDIyMzdBRSAvKiBKU1NRTFJlc3VsdFNldC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUU4MkZFQTBDQUIwN0VFMDAyMjM3
QUUgLyogSlNTUUxSZXN1bHRTZXQuY3BwICovOyB9OwogCQkxQUU4MkZFRDBDQUIwN0VFMDAyMjM3
QUUgLyogSlNTUUxSZXN1bHRTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBRTgyRkVCMENBQjA3RUUwMDIyMzdBRSAvKiBKU1NRTFJlc3VsdFNldC5o
ICovOyB9OworCQkxQUU5NkE4ODFEMUEwQ0VCMDBCODY3NjggLyogUGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBRTk2QTg2MUQxQTBDRUIwMEI4Njc2OCAvKiBQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5o
ICovOyB9OworCQkxQUU5NkE4OTFEMUEwQ0VCMDBCODY3NjggLyogUGF5bWVudE1lcmNoYW50U2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFF
OTZBODcxRDFBMENFQjAwQjg2NzY4IC8qIFBheW1lbnRNZXJjaGFudFNlc3Npb24uaCAqLzsgfTsK
KwkJMUFFOTZBOEExRDFBMERERDAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXltZW50QXV0aG9yaXpl
ZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBRTk2QTdBMUQxQTBBODAwMEI4Njc2OCAvKiBKU0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRF
dmVudC5jcHAgKi87IH07CisJCTFBRTk2QThCMUQxQTBEREQwMEI4Njc2OCAvKiBKU0FwcGxlUGF5
UGF5bWVudEF1dGhvcml6ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUFFOTZBN0IxRDFBMEE4MDAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXlt
ZW50QXV0aG9yaXplZEV2ZW50LmggKi87IH07CisJCTFBRTk2QThDMUQxQTBEREQwMEI4Njc2OCAv
KiBKU0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFOTZBN0MxRDFBMEE4MDAwQjg2NzY4
IC8qIEpTQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudC5jcHAgKi87IH07CisJCTFB
RTk2QThEMUQxQTBEREQwMEI4Njc2OCAvKiBKU0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVk
RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
RTk2QTdEMUQxQTBBODAwMEI4Njc2OCAvKiBKU0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVk
RXZlbnQuaCAqLzsgfTsKKwkJMUFFOTZBOEUxRDFBMERERDAwQjg2NzY4IC8qIEpTQXBwbGVQYXlT
ZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBRTk2QTdFMUQxQTBBODAwMEI4Njc2OCAvKiBKU0FwcGxlUGF5U2Vzc2lvbi5jcHAgKi87IH07
CisJCTFBRTk2QThGMUQxQTBEREQwMEI4Njc2OCAvKiBKU0FwcGxlUGF5U2Vzc2lvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFOTZBN0YxRDFBMEE4
MDAwQjg2NzY4IC8qIEpTQXBwbGVQYXlTZXNzaW9uLmggKi87IH07CisJCTFBRTk2QTkwMUQxQTBE
REQwMEI4Njc2OCAvKiBKU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUU5NkE4MDFE
MUEwQTgwMDBCODY3NjggLyogSlNBcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQu
Y3BwICovOyB9OworCQkxQUU5NkE5MTFEMUEwREREMDBCODY3NjggLyogSlNBcHBsZVBheVNoaXBw
aW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBRTk2QTgxMUQxQTBBODAwMEI4Njc2OCAvKiBKU0FwcGxlUGF5U2hp
cHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5oICovOyB9OworCQkxQUU5NkE5MjFEMUEwREREMDBC
ODY3NjggLyogSlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUU5NkE4MjFEMUEwQTgw
MDBCODY3NjggLyogSlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudC5jcHAgKi87
IH07CisJCTFBRTk2QTkzMUQxQTBEREQwMEI4Njc2OCAvKiBKU0FwcGxlUGF5U2hpcHBpbmdNZXRo
b2RTZWxlY3RlZEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUU5NkE4MzFEMUEwQTgwMDBCODY3NjggLyogSlNBcHBsZVBheVNoaXBwaW5nTWV0
aG9kU2VsZWN0ZWRFdmVudC5oICovOyB9OworCQkxQUU5NkE5NDFEMUEwREREMDBCODY3NjggLyog
SlNBcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUU5NkE4NDFEMUEwQTgwMDBCODY3NjggLyogSlNB
cHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5jcHAgKi87IH07CisJCTFBRTk2QTk1MUQxQTBE
REQwMEI4Njc2OCAvKiBKU0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUU5NkE4NTFEMUEwQTgwMDBC
ODY3NjggLyogSlNBcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5oICovOyB9OworCQkxQUU5
NkE5NjFEMUExMDA3MDBCODY3NjggLyogSlNBcHBsZVBheVBheW1lbnRBdXRob3JpemVkRXZlbnRD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUFFOTZBNzQxRDFBMDREMzAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2
ZW50Q3VzdG9tLmNwcCAqLzsgfTsKKwkJMUFFOTZBOTcxRDFBMTAwNzAwQjg2NzY4IC8qIEpTQXBw
bGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUU5NkE3NTFEMUEwNEQzMDBCODY3Njgg
LyogSlNBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50Q3VzdG9tLmNwcCAqLzsgfTsK
KwkJMUFFOTZBOTgxRDFBMTAwNzAwQjg2NzY4IC8qIEpTQXBwbGVQYXlTZXNzaW9uQ3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRTk2QTc2
MUQxQTA0RDMwMEI4Njc2OCAvKiBKU0FwcGxlUGF5U2Vzc2lvbkN1c3RvbS5jcHAgKi87IH07CisJ
CTFBRTk2QTk5MUQxQTEwMDcwMEI4Njc2OCAvKiBKU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2Vs
ZWN0ZWRFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQUU5NkE3NzFEMUEwNEQzMDBCODY3NjggLyogSlNBcHBsZVBheVNoaXBwaW5n
Q29udGFjdFNlbGVjdGVkRXZlbnRDdXN0b20uY3BwICovOyB9OworCQkxQUU5NkE5QTFEMUExMDA3
MDBCODY3NjggLyogSlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudEN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUU5NkE3
ODFEMUEwNEQzMDBCODY3NjggLyogSlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVu
dEN1c3RvbS5jcHAgKi87IH07CiAJCTFBRUY0RTY3MTcwRTE2MDMwMEFCMjc5OSAvKiBDYWNoZWRG
b250Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUVGNEU2NjE3MEUxNjAzMDBBQjI3OTkgLyogQ2FjaGVkRm9udENsaWVudC5oICovOyB9Owog
CQkxQUVGNEU2OTE3MEUxNzQ4MDBBQjI3OTkgLyogQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRUY0RTY4MTcw
RTE3NDgwMEFCMjc5OSAvKiBDYWNoZWRTVkdEb2N1bWVudENsaWVudC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBRjMyNjc5MEQ3OEI5NDQwMDY4
RjBDNCAvKiBFZGl0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBRjMyNjc3MEQ3OEI5NDQwMDY4RjBDNCAvKiBFZGl0b3JDbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODIyMSw3
ICs4MjU5LDYgQEAKIAkJMUE1OEU4NjIxRDE5RDNCRjAwQzBFQTczIC8qIFBheW1lbnRDb29yZGlu
YXRvckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXltZW50Q29v
cmRpbmF0b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE1OEU4NjMx
RDE5RDRERjAwQzBFQTczIC8qIFBheW1lbnRSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBheW1lbnRSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUE1OEU4NjQxRDE5RDRERjAwQzBFQTczIC8qIFBheW1lbnRSZXF1ZXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1lbnRSZXF1ZXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBNThFODZBMUQxOUQ5NDYwMEMwRUE3MyAvKiBQYXlt
ZW50Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBQYXlt
ZW50Q29jb2EubW07IHBhdGggPSBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb2NvYS5t
bTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQkxQTU4RTg2QjFEMTlFNDJEMDBDMEVB
NzMgLyogUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBheW1lbnRDb29yZGluYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBNThFODZDMUQxOUU0MkQwMEMwRUE3MyAvKiBQYXltZW50Q29vcmRpbmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudENvb3JkaW5hdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNzFENTc5MEYzMzgxOTAwMEY5Q0U0RSAvKiBJ
ZGVudGlmaWVyUmVwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElk
ZW50aWZpZXJSZXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODI2OSw2ICs4
MzA2LDMyIEBACiAJCTFBODc0QURFMTkwODVFOTEwMEIwMzE3MSAvKiBXQUtWaWV3SW50ZXJuYWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0FLVmlld0ludGVybmFsLmg7IHBh
dGggPSAuLi8uLi9XQUtWaWV3SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUE4OEE5MDIxNzU1M0NENzAwMEM3NEY5IC8qIEZpbGVJY29uTG9hZGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVJY29uTG9hZGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE4OEE5MDMxNzU1M0NENzAwMEM3NEY5IC8qIEZpbGVJ
Y29uTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVJY29uTG9h
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBOEE2NDM3MUQxOUZDNTMwMEQw
RTAwRiAvKiBQYXltZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE4QTY0MzgxRDE5RkM1MzAwRDBF
MDBGIC8qIFBheW1lbnRDb250YWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBheW1lbnRDb250YWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBOEE2NDM5
MUQxOUZDNTMwMEQwRTAwRiAvKiBQYXltZW50TWV0aG9kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBheW1lbnRNZXRob2QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUE4QTY0M0QxRDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRF
dmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcHBsZVBheVBh
eW1lbnRBdXRob3JpemVkRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QThBNjQzRTFEMTlGQ0ZCMDBEMEUwMEYgLyogQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5UGF5bWVudEF1dGhv
cml6ZWRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQThBNjQzRjFEMTlG
Q0ZCMDBEMEUwMEYgLyogQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBBcHBsZVBheVBheW1lbnRBdXRob3JpemVkRXZlbnQuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQThBNjQ0MDFEMTlGQ0ZCMDBEMEUwMEYgLyogQXBw
bGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE4QTY0NDIxRDE5RkNGQjAwRDBFMDBGIC8q
IEFwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQThBNjQ0MzFEMTlGQ0ZCMDBEMEUwMEYgLyogQXBw
bGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFBOEE2NDQ0MUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVNlc3Np
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXBwbGVQYXlTZXNz
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE4QTY0NDUxRDE5RkNGQjAw
RDBFMDBGIC8qIEFwcGxlUGF5U2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcHBsZVBheVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE4
QTY0NDYxRDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5U2Vzc2lvbi5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gQXBwbGVQYXlTZXNzaW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUE4QTY0NDcxRDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5U2hpcHBpbmdDb250YWN0
U2VsZWN0ZWRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
cHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQThBNjQ0ODFEMTlGQ0ZCMDBEMEUwMEYgLyogQXBwbGVQYXlTaGlwcGlu
Z0NvbnRhY3RTZWxlY3RlZEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQThBNjQ0OTFEMTlGQ0ZCMDBEMEUwMEYgLyogQXBwbGVQYXlTaGlwcGlu
Z0NvbnRhY3RTZWxlY3RlZEV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBcHBsZVBh
eVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQThBNjQ0QjFEMTlGQ0ZCMDBEMEUwMEYgLyogQXBwbGVQYXlTaGlwcGluZ01ldGhv
ZFNlbGVjdGVkRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQThBNjQ0QzFEMTlGQ0ZCMDBEMEUwMEYgLyogQXBwbGVQYXlTaGlwcGlu
Z01ldGhvZFNlbGVjdGVkRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUE4QTY0NEQxRDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5U2hpcHBpbmdN
ZXRob2RTZWxlY3RlZEV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBcHBsZVBheVNo
aXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFBOEE2NDRFMUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRF
dmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcHBsZVBheVZh
bGlkYXRlTWVyY2hhbnRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFB
OEE2NDRGMUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBsZVBheVZhbGlkYXRlTWVyY2hh
bnRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQThBNjQ1MDFEMTlGQ0ZC
MDBEMEUwMEYgLyogQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50RXZlbnQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE4QTY0NjUxRDE5RkRGRjAwRDBFMDBGIC8qIFBheW1lbnRS
ZXF1ZXN0VmFsaWRhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUE4QTY0NjYxRDE5RkRGRjAwRDBFMDBGIC8qIFBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1lbnRSZXF1ZXN0VmFsaWRhdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBOEE2NDY5MUQxOUZGODcwMEQwRTAw
RiAvKiBQYXltZW50Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBQYXltZW50Q29jb2EubW07IHBhdGggPSBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1l
bnRDb2NvYS5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQkxQThBNjQ2QTFEMTlG
Rjg3MDBEMEUwMEYgLyogUGF5bWVudENvbnRhY3RDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBheW1lbnRDb250YWN0Q29jb2EubW07IHBhdGggPSBNb2R1
bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29jb2EubW07IHNvdXJjZVRyZWUgPSBT
T1VSQ0VfUk9PVDsgfTsKKwkJMUE4QTY0NkIxRDE5RkY4NzAwRDBFMDBGIC8qIFBheW1lbnRNZXRo
b2RDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBheW1l
bnRNZXRob2RDb2NvYS5tbTsgcGF0aCA9IE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1l
dGhvZENvY29hLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTFBOEY2QjAxMERC
NTMwMDYwMDFEQjc5NCAvKiBTdWJzdGl0dXRlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3Vic3RpdHV0ZVJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBOEY2QkIxMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGxpY2F0aW9uQ2FjaGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQThGNkJCMjBEQjU1Q0RDMDAxREI3
OTQgLyogQXBwbGljYXRpb25DYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBcHBsaWNhdGlvbkNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDE5
LDYgKzg0ODIsMjUgQEAKIAkJMUFFODJGOEUwQ0FBRkE5RDAwMjIzN0FFIC8qIEpTRGF0YWJhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEYXRhYmFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQUU4MkZFQTBDQUIwN0VFMDAyMjM3QUUgLyogSlNTUUxS
ZXN1bHRTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTUUxS
ZXN1bHRTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUU4MkZFQjBDQUIw
N0VFMDAyMjM3QUUgLyogSlNTUUxSZXN1bHRTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNTUUxSZXN1bHRTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUFFOTZBNzQxRDFBMDREMzAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2
ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXBw
bGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUFFOTZBNzUxRDFBMDREMzAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXltZW50
TWV0aG9kU2VsZWN0ZWRFdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnRDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUU5NkE3NjFEMUEwNEQzMDBCODY3Njgg
LyogSlNBcHBsZVBheVNlc3Npb25DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNBcHBsZVBheVNlc3Npb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQUU5NkE3NzFEMUEwNEQzMDBCODY3NjggLyogSlNBcHBsZVBheVNoaXBw
aW5nQ29udGFjdFNlbGVjdGVkRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNBcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnRDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUU5NkE3ODFEMUEwNEQzMDBC
ODY3NjggLyogSlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudEN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FwcGxlUGF5U2hpcHBpbmdN
ZXRob2RTZWxlY3RlZEV2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUFFOTZBN0ExRDFBMEE4MDAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXltZW50QXV0aG9yaXpl
ZEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXBwbGVQ
YXlQYXltZW50QXV0aG9yaXplZEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUFFOTZBN0IxRDFBMEE4MDAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXltZW50QXV0aG9yaXpl
ZEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXBwbGVQYXlQYXlt
ZW50QXV0aG9yaXplZEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBRTk2
QTdDMUQxQTBBODAwMEI4Njc2OCAvKiBKU0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZl
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcHBsZVBheVBh
eW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUFFOTZBN0QxRDFBMEE4MDAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXltZW50TWV0aG9kU2Vs
ZWN0ZWRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FwcGxlUGF5
UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUFFOTZBN0UxRDFBMEE4MDAwQjg2NzY4IC8qIEpTQXBwbGVQYXlTZXNzaW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXBwbGVQYXlTZXNzaW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFFOTZBN0YxRDFBMEE4MDAwQjg2NzY4IC8q
IEpTQXBwbGVQYXlTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
QXBwbGVQYXlTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBRTk2QTgw
MUQxQTBBODAwMEI4Njc2OCAvKiBKU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FwcGxlUGF5U2hp
cHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFBRTk2QTgxMUQxQTBBODAwMEI4Njc2OCAvKiBKU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0
U2VsZWN0ZWRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FwcGxl
UGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQUU5NkE4MjFEMUEwQTgwMDBCODY3NjggLyogSlNBcHBsZVBheVNoaXBwaW5nTWV0
aG9kU2VsZWN0ZWRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUFFOTZBODMxRDFBMEE4MDAwQjg2NzY4IC8qIEpTQXBwbGVQYXlT
aGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQUU5NkE4NDFEMUEwQTgwMDBCODY3NjggLyogSlNBcHBsZVBh
eVZhbGlkYXRlTWVyY2hhbnRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUFFOTZBODUxRDFBMEE4MDAwQjg2NzY4IC8qIEpTQXBwbGVQYXlW
YWxpZGF0ZU1lcmNoYW50RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNBcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQUU5NkE4NjFEMUEwQ0VCMDBCODY3NjggLyogUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFFOTZBODcxRDFB
MENFQjAwQjg2NzY4IC8qIFBheW1lbnRNZXJjaGFudFNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQUVGNEU2NjE3MEUxNjAzMDBBQjI3OTkgLyogQ2FjaGVkRm9udENs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRGb250Q2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRUY0RTY4MTcwRTE3NDgwMEFCMjc5
OSAvKiBDYWNoZWRTVkdEb2N1bWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDYWNoZWRTVkdEb2N1bWVudENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQUYzMjY3NzBENzhCOTQ0MDA2OEYwQzQgLyogRWRpdG9yQ2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRvckNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTYwMzEsNiArMTYxMTMsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxMjIxRTA1ODFDMDJCNDA5MDA2QTFBMDAgLyogQW5pbWF0
aW9uICovLAorCQkJCTFBRTk2QTc5MUQxQTBBNUMwMEI4Njc2OCAvKiBBcHBsZVBheSAqLywKIAkJ
CQlBODNCNzkxMDBDQ0IwMDFCMDAwQjA4MjUgLyogQ29yZSAqLywKIAkJCQlFMUZGOEY2MTE4MDc0
NUM2MDAxMzI2NzQgLyogQ3J5cHRvICovLAogCQkJCUE4M0I3OTBFMENDQUZGOTcwMDBCMDgyNSAv
KiBDU1MgKi8sCkBAIC0xNjE2OSwxMSArMTYyNTIsMzYgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJMUE1OEU4NjkxRDE5RDhDMDAwQzBFQTczIC8qIGNvY29hICov
LAorCQkJCTFBOEE2NDNEMUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVBheW1lbnRBdXRob3Jp
emVkRXZlbnQuY3BwICovLAorCQkJCTFBOEE2NDNFMUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBh
eVBheW1lbnRBdXRob3JpemVkRXZlbnQuaCAqLywKKwkJCQkxQThBNjQzRjFEMTlGQ0ZCMDBEMEUw
MEYgLyogQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50LmlkbCAqLywKKwkJCQkxQThBNjQ0
MDFEMTlGQ0ZCMDBEMEUwMEYgLyogQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudC5j
cHAgKi8sCisJCQkJMUE4QTY0NDIxRDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5UGF5bWVudE1l
dGhvZFNlbGVjdGVkRXZlbnQuaCAqLywKKwkJCQkxQThBNjQ0MzFEMTlGQ0ZCMDBEMEUwMEYgLyog
QXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudC5pZGwgKi8sCisJCQkJMUE4QTY0NDQx
RDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5U2Vzc2lvbi5jcHAgKi8sCisJCQkJMUE4QTY0NDUx
RDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5U2Vzc2lvbi5oICovLAorCQkJCTFBOEE2NDQ2MUQx
OUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVNlc3Npb24uaWRsICovLAorCQkJCTFBOEE2NDQ3MUQx
OUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVNoaXBwaW5nQ29udGFjdFNlbGVjdGVkRXZlbnQuY3Bw
ICovLAorCQkJCTFBOEE2NDQ4MUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVNoaXBwaW5nQ29u
dGFjdFNlbGVjdGVkRXZlbnQuaCAqLywKKwkJCQkxQThBNjQ0OTFEMTlGQ0ZCMDBEMEUwMEYgLyog
QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmlkbCAqLywKKwkJCQkxQThBNjQ0
QjFEMTlGQ0ZCMDBEMEUwMEYgLyogQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQu
Y3BwICovLAorCQkJCTFBOEE2NDRDMUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVNoaXBwaW5n
TWV0aG9kU2VsZWN0ZWRFdmVudC5oICovLAorCQkJCTFBOEE2NDREMUQxOUZDRkIwMEQwRTAwRiAv
KiBBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudC5pZGwgKi8sCisJCQkJMUE4QTY0
NEUxRDE5RkNGQjAwRDBFMDBGIC8qIEFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudEV2ZW50LmNwcCAq
LywKKwkJCQkxQThBNjQ0RjFEMTlGQ0ZCMDBEMEUwMEYgLyogQXBwbGVQYXlWYWxpZGF0ZU1lcmNo
YW50RXZlbnQuaCAqLywKKwkJCQkxQThBNjQ1MDFEMTlGQ0ZCMDBEMEUwMEYgLyogQXBwbGVQYXlW
YWxpZGF0ZU1lcmNoYW50RXZlbnQuaWRsICovLAorCQkJCTFBOEE2NDM3MUQxOUZDNTMwMEQwRTAw
RiAvKiBQYXltZW50LmggKi8sCisJCQkJMUFFOTZBODYxRDFBMENFQjAwQjg2NzY4IC8qIFBheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzLmggKi8sCisJCQkJMUE4QTY0MzgxRDE5RkM1MzAwRDBFMDBG
IC8qIFBheW1lbnRDb250YWN0LmggKi8sCiAJCQkJMUE1OEU4NkIxRDE5RTQyRDAwQzBFQTczIC8q
IFBheW1lbnRDb29yZGluYXRvci5jcHAgKi8sCiAJCQkJMUE1OEU4NkMxRDE5RTQyRDAwQzBFQTcz
IC8qIFBheW1lbnRDb29yZGluYXRvci5oICovLAogCQkJCTFBNThFODYyMUQxOUQzQkYwMEMwRUE3
MyAvKiBQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaCAqLywKKwkJCQkxQUU5NkE4NzFEMUEwQ0VC
MDBCODY3NjggLyogUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oICovLAorCQkJCTFBOEE2NDM5MUQx
OUZDNTMwMEQwRTAwRiAvKiBQYXltZW50TWV0aG9kLmggKi8sCiAJCQkJMUE1OEU4NjMxRDE5RDRE
RjAwQzBFQTczIC8qIFBheW1lbnRSZXF1ZXN0LmNwcCAqLywKIAkJCQkxQTU4RTg2NDFEMTlENERG
MDBDMEVBNzMgLyogUGF5bWVudFJlcXVlc3QuaCAqLywKKwkJCQkxQThBNjQ2NTFEMTlGREZGMDBE
MEUwMEYgLyogUGF5bWVudFJlcXVlc3RWYWxpZGF0b3IuY3BwICovLAorCQkJCTFBOEE2NDY2MUQx
OUZERkYwMEQwRTAwRiAvKiBQYXltZW50UmVxdWVzdFZhbGlkYXRvci5oICovLAogCQkJKTsKIAkJ
CXBhdGggPSBhcHBsZXBheTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjE4MSw3
ICsxNjI4OSw5IEBACiAJCTFBNThFODY5MUQxOUQ4QzAwMEMwRUE3MyAvKiBjb2NvYSAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUE1OEU4NkExRDE5RDk0
NjAwQzBFQTczIC8qIFBheW1lbnRDb2NvYS5tbSAqLywKKwkJCQkxQThBNjQ2OTFEMTlGRjg3MDBE
MEUwMEYgLyogUGF5bWVudENvY29hLm1tICovLAorCQkJCTFBOEE2NDZBMUQxOUZGODcwMEQwRTAw
RiAvKiBQYXltZW50Q29udGFjdENvY29hLm1tICovLAorCQkJCTFBOEE2NDZCMUQxOUZGODcwMEQw
RTAwRiAvKiBQYXltZW50TWV0aG9kQ29jb2EubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9IGNvY29h
OwogCQkJcGF0aCA9IGFwcGxlcGF5L2NvY29hOwpAQCAtMTYyNzQsNiArMTYzODQsMjUgQEAKIAkJ
CXRhYldpZHRoID0gODsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJMUFFOTZBNzkxRDFBMEE1
QzAwQjg2NzY4IC8qIEFwcGxlUGF5ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQkxQUU5NkE3QTFEMUEwQTgwMDBCODY3NjggLyogSlNBcHBsZVBheVBheW1l
bnRBdXRob3JpemVkRXZlbnQuY3BwICovLAorCQkJCTFBRTk2QTdCMUQxQTBBODAwMEI4Njc2OCAv
KiBKU0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudC5oICovLAorCQkJCTFBRTk2QTdDMUQx
QTBBODAwMEI4Njc2OCAvKiBKU0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuY3Bw
ICovLAorCQkJCTFBRTk2QTdEMUQxQTBBODAwMEI4Njc2OCAvKiBKU0FwcGxlUGF5UGF5bWVudE1l
dGhvZFNlbGVjdGVkRXZlbnQuaCAqLywKKwkJCQkxQUU5NkE3RTFEMUEwQTgwMDBCODY3NjggLyog
SlNBcHBsZVBheVNlc3Npb24uY3BwICovLAorCQkJCTFBRTk2QTdGMUQxQTBBODAwMEI4Njc2OCAv
KiBKU0FwcGxlUGF5U2Vzc2lvbi5oICovLAorCQkJCTFBRTk2QTgwMUQxQTBBODAwMEI4Njc2OCAv
KiBKU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5jcHAgKi8sCisJCQkJMUFF
OTZBODExRDFBMEE4MDAwQjg2NzY4IC8qIEpTQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RTZWxlY3Rl
ZEV2ZW50LmggKi8sCisJCQkJMUFFOTZBODIxRDFBMEE4MDAwQjg2NzY4IC8qIEpTQXBwbGVQYXlT
aGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuY3BwICovLAorCQkJCTFBRTk2QTgzMUQxQTBBODAw
MEI4Njc2OCAvKiBKU0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50LmggKi8sCisJ
CQkJMUFFOTZBODQxRDFBMEE4MDAwQjg2NzY4IC8qIEpTQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50
RXZlbnQuY3BwICovLAorCQkJCTFBRTk2QTg1MUQxQTBBODAwMEI4Njc2OCAvKiBKU0FwcGxlUGF5
VmFsaWRhdGVNZXJjaGFudEV2ZW50LmggKi8sCisJCQkpOworCQkJbmFtZSA9IEFwcGxlUGF5Owor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMUFGNjJFRTExNERBMjJBNzAwNDE1
NTZDIC8qIHNjcm9sbGluZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC0xNjk2Myw2ICsxNzA5Miw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MzkwNDZD
QjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcCAqLywKIAkJ
CQk0MzkwNDZDQzEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5Lmgg
Ki8sCisJCQkJNDM5MDQ2RDUxMkRBMjVFODEyQUY4MEFDIC8qIE1hdGhPcGVyYXRvci5jcHAgKi8s
CisJCQkJNDM5MDQ2RDYxMkRBMjVFODEyQUY4MEFDIC8qIE1hdGhPcGVyYXRvci5oICovLAogCQkJ
CTQzOTA0NkMzMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxCbG9jay5jcHAgKi8sCiAJ
CQkJNDM5MDQ2QzQxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTEJsb2NrLmggKi8sCiAJ
CQkJNDM5MDQ2QzUxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTEZlbmNlZC5jcHAgKi8s
CkBAIC0xNjk4Nyw4ICsxNzExOCw2IEBACiAJCQkJNDM5MDQ2RDgxMkRBMjVFODAwQUY4MEE5IC8q
IFJlbmRlck1hdGhNTFRva2VuLmggKi8sCiAJCQkJNDM5MDQ2RDUxMkRBMjVFODAwQUY4MEEyIC8q
IFJlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAgKi8sCiAJCQkJNDM5MDQ2RDYxMkRBMjVFODAwQUY4
MEEyIC8qIFJlbmRlck1hdGhNTFVuZGVyT3Zlci5oICovLAotCQkJCTQzOTA0NkQ1MTJEQTI1RTgx
MkFGODBBQyAvKiBNYXRoT3BlcmF0b3IuY3BwICovLAotCQkJCTQzOTA0NkQ2MTJEQTI1RTgxMkFG
ODBBQyAvKiBNYXRoT3BlcmF0b3IuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWF0aG1sOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE4MDEzLDcgKzE4MTQyLDYgQEAKIAkJNjVCRjAy
MTgwOTc0ODA2MzAwQzQzMTk2IC8qIHBhZ2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAotCQkJCTVDN0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAvKiBTb2NrZXRQcm92
aWRlci5oICovLAogCQkJCTMxNkZFMTA2MEU2RTFEODQwMEJGNjA4OCAvKiBhbmltYXRpb24gKi8s
CiAJCQkJNUQ1OTc1QjUxOTYzNjJCRTAwRDAwODc4IC8qIGNvY29hICovLAogCQkJCUNFMTdBRDE0
MUM1ODUyMkYwMDVGNDc5OSAvKiBjc3AgKi8sCkBAIC0xODE4MSw2ICsxODMwOSw3IEBACiAJCQkJ
MTRDOUE1RTkwQjNEMTA1RjAwNUEwMjMyIC8qIFNldHRpbmdzLmNwcCAqLywKIAkJCQlGNTg3ODYz
QTAyREUzQTE0MDFFQTQxMjIgLyogU2V0dGluZ3MuaCAqLywKIAkJCQlCQzU5REVGODE2OURFREMz
MDAxNkFDMzQgLyogU2V0dGluZ3MuaW4gKi8sCisJCQkJNUM3Qzg4RDcxRDBGMUYyQjAwOUQyRjZE
IC8qIFNvY2tldFByb3ZpZGVyLmggKi8sCiAJCQkJNjI2Q0RFMEMxMTQwNDI0QzAwMUU1QTY4IC8q
IFNwYXRpYWxOYXZpZ2F0aW9uLmNwcCAqLywKIAkJCQk2MjZDREUwRDExNDA0MjRDMDAxRTVBNjgg
LyogU3BhdGlhbE5hdmlnYXRpb24uaCAqLywKIAkJCQk2MkMxMjE3QTExQUI5RTc2MDAzQzQ2MkMg
LyogU3VzcGVuZGFibGVUaW1lci5jcHAgKi8sCkBAIC0yMjUwMSw2ICsyMjYzMCwxMSBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxMjIxRTA3MjFDMDNFNEMyMDA2
QTFBMDAgLyogSlNBbmltYXRpb25UaW1lbGluZUN1c3RvbS5jcHAgKi8sCisJCQkJMUFFOTZBNzQx
RDFBMDREMzAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50Q3VzdG9t
LmNwcCAqLywKKwkJCQkxQUU5NkE3NTFEMUEwNEQzMDBCODY3NjggLyogSlNBcHBsZVBheVBheW1l
bnRNZXRob2RTZWxlY3RlZEV2ZW50Q3VzdG9tLmNwcCAqLywKKwkJCQkxQUU5NkE3NjFEMUEwNEQz
MDBCODY3NjggLyogSlNBcHBsZVBheVNlc3Npb25DdXN0b20uY3BwICovLAorCQkJCTFBRTk2QTc3
MUQxQTA0RDMwMEI4Njc2OCAvKiBKU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVu
dEN1c3RvbS5jcHAgKi8sCisJCQkJMUFFOTZBNzgxRDFBMDREMzAwQjg2NzY4IC8qIEpTQXBwbGVQ
YXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnRDdXN0b20uY3BwICovLAogCQkJCUJDMkVENkJC
MEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwICovLAogCQkJCUZERUFBQUYwMTJC
MDJFRTQwMERDRjMzQiAvKiBKU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAgKi8sCiAJCQkJQkU2REY3
MEUxNzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0N1c3RvbS5jcHAgKi8sCkBAIC0yMzAw
Nyw4ICsyMzE0MSw4IEBACiAJCQkJNTE3OUNFMjUxOTVDODIxRDAwMTlDMTk4IC8qIEdhbWVwYWRQ
cm92aWRlci5jcHAgKi8sCiAJCQkJNTE3OUNFMjMxOTVDODE0MjAwMTlDMTk4IC8qIEdhbWVwYWRQ
cm92aWRlci5oICovLAogCQkJCTUxNzlDRTI5MTk1QzkxODYwMDE5QzE5OCAvKiBHYW1lcGFkUHJv
dmlkZXJDbGllbnQuaCAqLywKLQkJCQlDRDYyRkI5NDFBRjAxOEU3MDAxMkVEN0QgLyogR2VuZXJp
Y1Rhc2tRdWV1ZS5oICovLAogCQkJCUNENEJFNTI5MUNFMTM0MjUwMDlEODdEQSAvKiBHZW5lcmlj
VGFza1F1ZXVlLmNwcCAqLywKKwkJCQlDRDYyRkI5NDFBRjAxOEU3MDAxMkVEN0QgLyogR2VuZXJp
Y1Rhc2tRdWV1ZS5oICovLAogCQkJCUE4NzQ4QkRGMTJDQkYyREMwMDFGQkE0MSAvKiBIYXNoVG9v
bHMuaCAqLywKIAkJCQlCQzNCQzI5QjBFOTFBQjBGMDA4MzU1ODggLyogSG9zdFdpbmRvdy5oICov
LAogCQkJCTg2MkYxMjlGMThDMURDRTQwMDVDNTRBRiAvKiBIeXN0ZXJlc2lzQWN0aXZpdHkuaCAq
LywKQEAgLTIzMzY2LDggKzIzNTAwLDggQEAKIAkJCQlDREUzQTg1NTE3RjYwMjA0MDBDNUJFMjAg
LyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tICovLAogCQkJCUNENTRBNzYwMTgwRjlGNzAw
MEIwNzZDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAgKi8sCiAJ
CQkJQ0Q1NEE3NjExODBGOUY3MDAwQjA3NkM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmggKi8sCi0JCQkJMDdDOEFEMTExRDA3M0Q2MzAwODdDNUNFIC8qIEFWRm91bmRh
dGlvbk1JTUVUeXBlQ2FjaGUubW0gKi8sCiAJCQkJMDdDOEFEMTIxRDA3M0Q2MzAwODdDNUNFIC8q
IEFWRm91bmRhdGlvbk1JTUVUeXBlQ2FjaGUuaCAqLywKKwkJCQkwN0M4QUQxMTFEMDczRDYzMDA4
N0M1Q0UgLyogQVZGb3VuZGF0aW9uTUlNRVR5cGVDYWNoZS5tbSAqLywKIAkJCQlDREU1OTU5NDFC
RjE2NkQxMDBBMUNCRTggLyogQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaCAqLywKIAkJ
CQlDREU1OTU5MzFCRjE2NkFEMDBBMUNCRTggLyogQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Np
b24ubW0gKi8sCiAJCQkJQ0RERTAyRUExOEIzRUQ2RDAwQ0Y3RkYxIC8qIENETVNlc3Npb25BVkZv
dW5kYXRpb25PYmpDLmggKi8sCkBAIC0yNTA4MiwxMSArMjUyMTYsMTIgQEAKIAkJCWlzYSA9IFBC
WEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJ
CWZpbGVzID0gKAorCQkJCTUxNzE0RUFEMUNGNjU5NTEwMDQ3MjNDNCAvKiBHQ09ic2VydmF0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTdEQTZEQTEzNzM0RTZFMDA3QzU3RkIgLyogSW50ZXJu
YWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0JGN0VFMDE0QzkxNzVBMDAxNDQ4OUQgLyogSW50
ZXJuYWxTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNFMjlFNUYxNjdBOEExOTAwNTg2
RDNEIC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovLAotCQkJCTQx
N0RBNzFFMTM3MzVERkEwMDdDNTdGQiAvKiBKU0ludGVybmFscy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTE3MTRFQjExQ0Y2NjVDRTAwNDcyM0M0IC8qIEpTR0NPYnNlcnZhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDE3REE3MUUxMzczNURGQTAwN0M1N0ZCIC8qIEpTSW50ZXJuYWxzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzQwQjVBNTE0QzkzNUFCMDBBNzdGQTQgLyogSlNJbnRlcm5hbFNl
dHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0VEM0ZERjE2N0E4OEU3MDA2NzYyRTYgLyog
SlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzQwQjU5
NTE0QzkzNUFCMDBBNzdGQTQgLyogSlNNYWxsb2NTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywK
QEAgLTI1MDk2LDcgKzI1MjMxLDYgQEAKIAkJCQlDREMyNkI0MTE2MEE4Q0NFMDAyNjc1N0IgLyog
TW9ja0NETS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFCRjZCODMxQUE5NkM3RDAwQUY0QThBIC8q
IE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUI1QjI5RjFBQUE4NDZG
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNTE3MTRFQUQxQ0Y2NTk1MTAwNDcyM0M0IC8qIEdDT2JzZXJ2YXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJENkYzRTkxMUMxRUNCMkYwMDYxREJENCAvKiBNb2NrUGFnZU92ZXJsYXkuaCBp
biBIZWFkZXJzICovLAogCQkJCTJEOTdGMDQ4MTlERDQxNDAwMDFFRTlDMyAvKiBNb2NrUGFnZU92
ZXJsYXlDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBNUYzQjhEMTZDQzMzRDEwMDQ1NUVC
MCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NTE1OSw3ICsyNTI5MywxMiBAQAogCQkJCTMxRENEMjlEMUFCNEZCREUwMDcyRTgxNyAvKiBBbmlt
YXRpb25UcmlnZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEZBRjE0OTgwMEQ0MDBGQjVC
RDggLyogQW5pbWF0aW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURENzA5
OUU2NDkyMDA1NkU1ODEgLyogQXBwZW5kTm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTUxNzE0RUE4MUNGNEU0QjEwMDQ3MjNDNCAvKiBJREJBY3RpdmVET01PYmplY3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTFBOEE2NDUyMUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVBheW1lbnRB
dXRob3JpemVkRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBOEE2NDU2MUQxOUZDRkMwMEQw
RTAwRiAvKiBBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQkxQThBNjQ1OTFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBwbGVQYXlTZXNzaW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQkxQThBNjQ1QzFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBwbGVQYXlTaGlw
cGluZ0NvbnRhY3RTZWxlY3RlZEV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQThBNjQ2MDFE
MTlGQ0ZDMDBEMEUwMEYgLyogQXBwbGVQYXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTFBOEE2NDYzMUQxOUZDRkMwMEQwRTAwRiAvKiBBcHBsZVBheVZh
bGlkYXRlTWVyY2hhbnRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4RjZCQkQwREI1NUNE
QzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOEY2
QkJGMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTI0RjU0RUFEMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9z
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTI1MCw2ICsyNTM4OSw3IEBACiAJCQkJQkNBOEM4MUUx
MUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNBOENBNjAxMUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkTGlzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMxMjRFRTgwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhclByb3AuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTQ2MEJCNjE2MUQwQTFCRjAwMDIyMTgxMiAvKiBCYXNlNjRVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OUU2MUNBMTI2Q0E1QzQwMEI2M0U4RCAvKiBCYXNl
QnV0dG9uSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlFNjFDQzEyNkNBNUM0MDBC
NjNFOEQgLyogQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjVF
MEM2NUMxNjQzQzQyQzAwRDZDQjY5IC8qIEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRU
eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MzU2LDcgKzI1NDk2LDYgQEAKIAkJCQk5N0I4RkZE
MTE2QUU3Rjk2MDAzODM4OEQgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMkEwRDAwNkMxRDAwRUY2RjI2IC8qIENoYXJzZXREYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCMjEyNTFGMTJEMDAzRUYyNjkgLyogQ2hlY2ti
b3hJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzRjkyNTQzMEY3RUY1QjgwMDdFMzdD
OSAvKiBSYWRpb0J1dHRvbkdyb3Vwcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDYxOUEzMDgxNDRF
MDBCRTAwNEJDMzAyIC8qIENoaWxkTGlzdE11dGF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4MTg3MjIwMDk3N0QzQzAwMDU4MjZEOSAvKiBDaGlsZE5vZGVMaXN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNEQ4MjM1MjBBRjkyQTc5MDAwNEYwNTcgLyogQ2hyb21lLmggaW4gSGVhZGVy
cyAqLywKQEAgLTI1NDU1LDYgKzI1NTk0LDcgQEAKIAkJCQk1MUEwNTIzMzEwNTg3NzRGMDBDQzlF
OTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENDgxRjAyMTQ2
QjVDNTUwMEFBNzgzNCAvKiBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTFDNDE2MTIwRjY1NjJGRDAwOTJEMkZCIC8qIENyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFBQkU2N0IxRDA1ODBEQjAwNkQ4NjJEIC8qIENyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDNDE1REEwRjY1
NUQ2RjAwOTJEMkZCIC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUxNjk4MDNEMTEzMzU0MkQwMDg5NDExNSAvKiBDUnVudGltZU9iamVjdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTc1Q0EyOEIxMzAzNjVGODAwRTk5QUQ5IC8qIENyeXB0by5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNTU1OCw3ICsyNTY5OCw2IEBACiAJCQkJQTgwRTZDRjIwQTE5
ODlDQTAwN0ZCOEM1IC8qIENTU1J1bGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzFGNTFB
MTBEMjYyRkEwMDBFQ0UwRDUgLyogQ1NTU2VnbWVudGVkRm9udEZhY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4MEU3MzUyMEExOTlDNzcwMDdGQjhDNSAvKiBDU1NTZWxlY3Rvci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMzdCMzI3RDMxRDE3MDk2QTAwNTczN0ZBIC8qIFBJUFNQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTRDMTc4OUIwRUU2OTAzODAwODI0RDY5IC8qIENTU1NlbGVjdG9yTGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRTgwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1NoYWRv
d1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkUwRjBBMTk5MTFDMDA3RkI4QzUgLyog
Q1NTU3R5bGVEZWNsYXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTU2OCw3ICsyNTcwNyw2
IEBACiAJCQkJQkM4MEM5ODgwQ0QyOTRFRTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0aW9uVmFs
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTlBQjFGMzgwMThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODgyREEyMzE1OTM4
NDhEMDAwMTE1RUQgLyogQ1NTVG9TdHlsZU1hcC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTMwODQx
MzQxQ0REQjE1NTAwQjA5NThDIC8qIEpTRE9NQ29udmVydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzcxRjUzRTkwRDI3MDRGOTAwRUNFMEQ1IC8qIENTU1VuaWNvZGVSYW5nZVZhbHVlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlERDdDREYyNTBBMjNDRjk4MDAwNjk5MjggLyogQ1NTVW5rbm93blJ1bGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0Q4RkYwMUJEMDNCNjQwMEZGRTU0MCAvKiBDU1NVbnNl
dFZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTI1NjUxLDcgKzI1Nzg5LDYgQEAKIAkJCQk1Q0Q5
RjU2ODFBQTBGNzQ2MDBEQTQ1RkYgLyogREZBQnl0ZWNvZGVJbnRlcnByZXRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMjZBODA3ODUxQjE4Rjk3NzAwRTIxOUJFIC8qIERGQUNvbWJpbmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyNkE1MTdGRTFBQjkyMjM4MDA2MzM1REYgLyogREZBTWluaW1pemVy
LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MUFCRTY3QjFEMDU4MERCMDA2RDg2MkQgLyogQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjc3MjVGRjFBNUIz
QUQ5MDAzQzI0REQgLyogREZBTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QxOUEyNjgxQTEz
RTcwMDAwOEQ2NTBFIC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0NkZDQjYxODFBNzA4MjBFMDBDNUEyMUUgLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI1ODI4LDEyICsyNTk2NSwxMiBAQAogCQkJCTg1QkE0RDBGMEFB
Njg4NjgwMDg4MDUyRCAvKiBET01IVE1MRExpc3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NUU3MTFBNTBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTERMaXN0RWxlbWVudEludGVybmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUJDQkMxMzBBQkJBODdEMDAzODExNjAgLyogRE9NSFRN
TERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQUU5NkE4ODFEMUEwQ0VCMDBCODY3Njgg
LyogUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcx
MUE2MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01IVE1MRG9jdW1lbnRJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODVERjJFRUQwQUEzODdDQjAwQUQ2NEM1IC8qIERPTUhUTUxFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTFBNzBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTEVs
ZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0MDc1NkEwQUQ2Q0JGOTAwNjIw
QzU3IC8qIERPTUhUTUxFbWJlZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NTI0N0Qw
MEFEODUwQjgwMDEyMDkzQiAvKiBET01IVE1MRW1iZWRFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTFBNThFODY1MUQxOUQ0RUIwMEMwRUE3MyAvKiBQYXltZW50UmVxdWVzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODVCQTRDREYwQUE2ODYxQjAwODgwNTJEIC8qIERPTUhUTUxG
aWVsZFNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMUE4MEFDNUQ1MzUwMDUz
MjcwRiAvKiBET01IVE1MRmllbGRTZXRFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg1RUNCRUVGMEFBNzYyNjkwMDU0NEYwQiAvKiBET01IVE1MRm9udEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjYxMDcsNiArMjYyNDQsNyBAQAogCQkJCUUxMkVEQjdCMEIzMDhBNzgw
MDI3MDRCNiAvKiBFdmVudFRhcmdldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQTNDQTUxNDUy
MzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SGVhZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTdBQTNDQTYxNDUyMzdDQzAwM0UxREE2IC8qIEV2ZW50VGFyZ2V0SW50ZXJmYWNlcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMjYyRUM0MUExRDA3OEZCOTAwQkE3OEZDIC8qIEV2ZW50VHJhY2tpbmdS
ZWdpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzYwRDhGMzBEMkExMUUwMDBCOTkxOEYgLyog
RXhjZXB0aW9uQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1RkJDRjIwOUJBMTQzQjAwRTIz
MEIxIC8qIEV4Y2VwdGlvbkNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3M0RDNjQwMTQ1QTk0
MDkwMDI4NDJDMiAvKiBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLApA
QCAtMjYxMzUsMTAgKzI2MjczLDEwIEBACiAJCQkJODQ3MzBEODUxMjQ4RjBCMzAwRDNBOUM5IC8q
IEZFTW9ycGhvbG9neS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBEODcxMjQ4RjBCMzAwRDNB
OUM5IC8qIEZFT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDczMEQ4OTEyNDhGMEIzMDBE
M0E5QzkgLyogRkVTcGVjdWxhckxpZ2h0aW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUFENzUz
QTFDRUY2QkQxMDBBMzE0ODYgLyogRmV0Y2hPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NDczMEQ4QjEyNDhGMEIzMDBEM0E5QzkgLyogRkVUaWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NDczMEQ4RDEyNDhGMEIzMDBEM0E5QzkgLyogRkVUdXJidWxlbmNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDMxNjA5NTEyQjAyNkY3MDBDMUEzNTkgLyogRkZUQ29udm9sdmVyLmggaW4gSGVhZGVy
cyAqLywKLQkJCQkxQTU4RTg2RTFEMTlFNDJEMDBDMEVBNzMgLyogUGF5bWVudENvb3JkaW5hdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA5NzEyQjAyNkY3MDBDMUEzNTkgLyogRkZURnJh
bWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NkQ2QzgxMTIyQjhBM0QwMDFGRDFGNyAvKiBGaWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNjZDNzcyQjBBQjYwM0I3MDAyMzhDQzQgLyogRmlsZUNo
b29zZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjYyOTQsNyArMjY0MzIsNiBAQAogCQkJCUE4Q0ZG
N0FCMEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MQW5jaG9yRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTg3MUQ0NUQwQTEyN0NCQzAwQjEyQTY4IC8qIEhUTUxBcHBsZXRFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOEVBN0QyRTBBMTkzODU1MDBBOEVGNUYgLyogSFRNTEFyZWFFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQkxQTREQTQyMjFDREQzQTgzMDBGNDQ3M0MgLyogTGlu
a0ljb25Db2xsZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNUYyOEZDMUE4MjdEODQwMEMw
RjMxRiAvKiBIVE1MQXR0YWNobWVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYx
M0EyMENENjMzMTAwMEZBREE3NSAvKiBIVE1MQXVkaW9FbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODcxREMxRjBBMTUyMDU3MDBCMTJBNjggLyogSFRNTEJhc2VFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTI2MzQzLDcgKzI2NDgwLDYgQEAKIAkJCQlBOEVBN0QyRDBBMTkzODU1MDBB
OEVGNUYgLyogSFRNTEltYWdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdEMkIw
QTE5Mzg1NTAwQThFRjVGIC8qIEhUTUxJbWFnZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTgxMzY5Q0MwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxJbnB1dEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTQ2MEJCNjE2MUQwQTFCRjAwMDIyMTgxMiAvKiBCYXNlNjRVdGlsaXRpZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTk3QkM4NDlCMTIzNzBBNEIwMDBDNjE2MSAvKiBIVE1MSW5wdXRT
dHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REU2MDk5RTY0OTIwMDU2RTU4MSAvKiBI
VE1MSW50ZXJjaGFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTM2OUU0MDk3Mzc0RjYwMEQ3
NDQ2MyAvKiBIVE1MS2V5Z2VuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjQyOCw2ICsy
NjU2NCw3IEBACiAJCQkJNTFFMUVDQkUwQzkxQzkwNDAwREMyNTVCIC8qIEljb25EYXRhYmFzZUNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEzRjE0NTQwQUI2MzRDNDAwMDk0RERGIC8qIElj
b25Mb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTFFQ0MxMEM5MUM5MDQwMERDMjU1QiAv
KiBJY29uUmVjb3JkLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTcxNEVBODFDRjRFNEIxMDA0NzIz
QzQgLyogSURCQWN0aXZlRE9NT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUJBNEFDQzFC
QkM1QkREMDBERjNENkQgLyogSURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
NTg1QTY2MzExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE3QjI1QUExQ0M4MkIyQTAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Qcm94
eS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjUyMCw2ICsyNjY1Nyw3IEBACiAJCQkJQUE0QzNBNzcw
QjJCMTY3OTAwMjMzNEEyIC8qIElubGluZVN0eWxlU2hlZXRPd25lci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNFQTQ4NUEwOTdEOTMwMjAwOTRDOUU0IC8qIElubGluZVRleHRCb3guaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFDMDEwNzAxMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5
bGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBRTk2QThEMUQxQTBEREQwMEI4Njc2OCAvKiBKU0Fw
cGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
MEE1OEU1MUJBQTQwQjEwMEMxOTI4MiAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTM3RTM1MjREMTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1dFR5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUMzNDg2MTI0MTVGREUyMUUwMDdBMUNDOSAvKiBJbnB1dFR5cGVOYW1lcy5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNjY2Miw2ICsyNjgwMCw3IEBACiAJCQkJMUFDMjI2MEQwREI2
OUYxOTAwODlCNjY5IC8qIEpTRE9NQXBwbGljYXRpb25DYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNCNzBENjQwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDEzQzJDMzQxQkMyOUE4RjAwNzUyMDRDIC8qIEpTRE9NQ29uc3RydWN0b3IuaCBp
biBIZWFkZXJzICovLAorCQkJCTkzMDg0MTM0MUNEREIxNTUwMEIwOTU4QyAvKiBKU0RPTUNvbnZl
cnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEN0MxMEQyOUE0NjMwMEI5OTE4RiAvKiBKU0RP
TUNvcmVFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUZDOUUwRTREMTY0MTlDMUUwMDM5
MkJFMyAvKiBKU0RPTUNTU05hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDBFQ0FFN0Ux
NkI4QjY3MjAwQzM2MTAzIC8qIEpTRE9NRXJyb3IuaCBpbiBIZWFkZXJzICovLApAQCAtMjcxNTcs
NyArMjcyOTYsNiBAQAogCQkJCUUxQzM2RDM1MEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtlckds
b2JhbFNjb3BlQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDMzYyRUYwRUFGMkFBOTAwNzQx
MEJDIC8qIEpTV29ya2VyTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjcxQTU4MEVF
RUNERTQwMEY2MTIxMyAvKiBKU1dvcmtlck5hdmlnYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NUU0RUFCMDQxRDA3MTY2QTAwMDZBMTg0IC8qIE1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNEM5NkREMUFENDQ4MzUwMDM2NUE2MCAvKiBKU1dy
aXRhYmxlU3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzU4Q0I3MDFDNTMyNzc1MDBFMEMy
RDggLyogSlNYTUxEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzNDhCRDQwREI3Rjgw
NDAwNEFCQUI5IC8qIEpTWE1MSHR0cFJlcXVlc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjcyMTcs
NiArMjczNTUsOCBAQAogCQkJCUZGRUZBQjJBMTgzODBEQTAwMDUxNDUzNCAvKiBMaW5lTGF5b3V0
U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZGREJDMDQ3MTgzRDI3QjcwMDQwNzEwOSAvKiBM
aW5lV2lkdGguaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QUQyRjg4MEVDODlEMDcwMDhBQjAwMiAv
KiBMaW5rSGFzaC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUE0REE0MjIxQ0REM0E4MzAwRjQ0NzND
IC8qIExpbmtJY29uQ29sbGVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQTI1MEUwRDFDREQ2
MzIwMDBEMEJFNjMgLyogTGlua0ljb25UeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OENFNDMy
QTEyOUUwMEU1MDA1ODIxREMgLyogTGlua0xvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTg0
MjY0RjExMkQ1MjgwQTAwMEQ4OEE0IC8qIExpbmtMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk4NUJCOTZFMTNBOTQwNTgwMDdBMEI2OSAvKiBMaW5rUmVsQXR0cmlidXRlLmggaW4g
SGVhZGVycyAqLywKQEAgLTI3MjQ5LDYgKzI3Mzg5LDcgQEAKIAkJCQk0NEEyOEFBRjEyREZCOEJG
MDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzOTA0NkUwMTJE
QTI1RTE3QkFGODBBMiAvKiBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZBNjU0QTZDMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDM5MDQ2RUExMkRBMjVFODEyQUY4MEFDIC8qIE1hdGhPcGVyYXRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlENURDMkMwRjQyM0E3MzAwOEYyMEZEIC8qIE1hdHJp
eDNEVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDNzBFRjg2
RDQ3MDA5RDBDQUYgLyogTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Q0JDOERBRDFBQUEzMDIyMDBFMUM4MDMgLyogTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExp
bmsuaCBpbiBIZWFkZXJzICovLApAQCAtMjcyNzQsMTEgKzI3NDE1LDExIEBACiAJCQkJNUVCQjg5
MzcxQzc3NzgyOTAwQzY1RDQxIC8qIE1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1RTE2QTJFNDFCRkE2NTBCMDAyOUEyMUUgLyogTWVkaWFFbmRwb2ludFBl
ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RUJCODkzMjFDNzc3ODIzMDBDNjVE
NDEgLyogTWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1RTRFQUIwNDFEMDcxNjZBMDAwNkExODQgLyogTWVkaWFFbmRwb2ludFNlc3Npb25EZXNj
cmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjEzQUQwQ0Q2MzMxMDAwRkFEQTc1IC8q
IE1lZGlhRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTRFMTk1OTIyMEEzOURBQkEwMDIyMEZF
NSAvKiBNZWRpYUZlYXR1cmVOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdBNkQxRUMxNDkx
MTM3NzAwMDUxRDBDIC8qIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4RUE4MDBFMEExOTUxNkUwMEE4RUY1RiAvKiBNZWRpYUxpc3QuaCBpbiBIZWFkZXJzICov
LAotCQkJCTVFNUUyQjE0MUNGQzNFNzUwMDBDMEQ4NSAvKiBSVENSdHBUcmFuc2NlaXZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUVCQjg5MzExQzc3NzdGRjAwQzY1RDQxIC8qIE1lZGlhUGF5bG9h
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdFM0RGRDExQTlFNzg2NTAwNzY0Q0E4IC8qIE1lZGlh
UGxheWJhY2tUYXJnZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTIxNjU1MUFBNTYwQUEwMEEz
QzA0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI3
NDU1LDYgKzI3NTk2LDcgQEAKIAkJCQlGNDBFQThBQjFCODY3RTQ0MDBDRTU1ODEgLyogTlNTY3Jv
bGxpbmdJbnB1dEZpbHRlclNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRDQjgzNzkxOUY5OUJC
QTAwQTdGQkU0IC8qIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJTUEkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJEQ0I4MzdBMTlGOTlCQkEwMEE3RkJFNCAvKiBOU1NoYXJpbmdTZXJ2aWNlU1BJLmggaW4g
SGVhZGVycyAqLywKKwkJCQkxQUU5NkE5NTFEMUEwREREMDBCODY3NjggLyogSlNBcHBsZVBheVZh
bGlkYXRlTWVyY2hhbnRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzQzdBNzUxQzBGQkM0
NDAwMzRGQjk3IC8qIE5TU3BlbGxDaGVja2VyU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTEy
NTI1MzFBMUJFQzA2MDA4NjQ0ODAgLyogTlNTdHJpbmdTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJENzdBQzJCMUJGMkI5ODcwMDcyNDcwQSAvKiBOU1RleHRGaW5kZXJTUEkuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjc0NzUsNyArMjc2MTcsNiBAQAogCQkJCUUxNjk4MjU1MTEzNDYyOUQwMDg5NDEx
NSAvKiBPYmpDUnVudGltZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U1RDdBNzcxNjFE
M0Y4RjAwODk2QzM0IC8qIE9FU0VsZW1lbnRJbmRleFVpbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkwMDE3NzQxMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmggaW4g
SGVhZGVycyAqLywKLQkJCQkxQTU4RTg2NjFEMTlENEYwMDBDMEVBNzMgLyogUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RUJGMEU0OTEyQTg5MjYxMDBEQjE3
MDkgLyogT0VTVGV4dHVyZUZsb2F0LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTQ2RkU2RTE4NDQy
MEE4MDAxQTkzN0MgLyogT0VTVGV4dHVyZUZsb2F0TGluZWFyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBMzFDNEU0RjE2RTAyQUI0MDAyRjc5NTcgLyogT0VTVGV4dHVyZUhhbGZGbG9hdC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yNzUzMyw2ICsyNzY3NCwxMyBAQAogCQkJCTJENTAwMkZDMUI1NkQ3OTkw
MDIwQUFGNyAvKiBQYXRoVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEZBNkU1RDBF
NENGREVEMDBENUNGNDkgLyogUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NzEw
RDAwQkYyMjAwNzFCNzgyIC8qIFBhdHRlcm5BdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkxQThBNjQzQTFEMTlGQzUzMDBEMEUwMEYgLyogUGF5bWVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMUE4QTY0M0IxRDE5RkM1MzAwRDBFMDBGIC8qIFBheW1lbnRDb250YWN0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQkxQTU4RTg2RTFEMTlFNDJEMDBDMEVBNzMgLyogUGF5bWVudENvb3JkaW5hdG9y
LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQTU4RTg2NjFEMTlENEYwMDBDMEVBNzMgLyogUGF5bWVu
dENvb3JkaW5hdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQThBNjQzQzFEMTlGQzUz
MDBEMEUwMEYgLyogUGF5bWVudE1ldGhvZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUE1OEU4NjUx
RDE5RDRFQjAwQzBFQTczIC8qIFBheW1lbnRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQkx
QThBNjQ2ODFEMTlGREZGMDBEMEUwMEYgLyogUGF5bWVudFJlcXVlc3RWYWxpZGF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyNzUzNTY1MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudElt
YWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RTJDNDM1MTFCQ0VFMkY2MDAwMUUyQkMgLyogUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RTJDNDM1MjFCQ0VFMkY2
MDAwMUUyQkMgLyogUGVlckNvbm5lY3Rpb25TdGF0ZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjc1
NDgsNiArMjc2OTYsNyBAQAogCQkJCTQ5RDVEQzJFMEY0MjNBNzMwMDhGMjBGRCAvKiBQZXJzcGVj
dGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCNDU0RUExQjRE
QUU3RDAwODVFQUE2IC8qIFBpbmdIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwRkYyQTVF
MTFGOEM0NUEwMDdFNzRFMCAvKiBQaW5nTG9hZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkzN0Iz
MjdEMzFEMTcwOTZBMDA1NzM3RkEgLyogUElQU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDdE
MzM0NDFDN0ExMjNGMDAwNDEyOTMgLyogUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDk5QjNFREQxMjhEQjUwMjAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FBbmltYXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUUyMDA2MThFNzcxRkMwMDNFQzNFNSAvKiBQbGF0
Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaCBpbiBIZWFkZXJzICovLApAQCAtMjc1ODAsNiArMjc3Mjks
NyBAQAogCQkJCTA3NEU4MkJCMThBNjlGMEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUyQjBENEJFMUM1N0ZEMUUwMDc3Q0U1MyAvKiBQbGF0Zm9y
bVZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0NzZCMDlBQzRENEYwMEE2QUFCNCAvKiBQ
bGF0Zm9ybVdoZWVsRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBRTk2QTkxMUQxQTBEREQw
MEI4Njc2OCAvKiBKU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzFENTkxQjMxNjY5N0E2QzAwRTZCRjAyIC8qIFBsdWdJbkNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTlDNkU0RjQwRDc0NUU0ODAwNjQ0MkU5IC8qIFBsdWdpbkRh
dGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MjA1QUJDMTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVn
aW5Eb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzYzMyw4ICsyNzc4MywxMCBAQAogCQkJ
CUNFMTI1MjM5MUExNjZGQTAwMDg2NDQ4MCAvKiBRdWlja0xvb2tTUEkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTA3MkFFMUU4MTgzQzA3NDEwMDBBNTk4OCAvKiBRdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5RTM3MTcxMzczNkE2NjAwQjlFOTE5IC8qIFF1
b3RlZFByaW50YWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUFFOTZBODkxRDFBMENFQjAwQjg2
NzY4IC8qIFBheW1lbnRNZXJjaGFudFNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTVBNTc0
RjI5MTMxREI5NkQwMDQ3MUI4OCAvKiBRdW90ZXNEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MjIyNzk3MjBEMDBCRjIyMDA3MUI3ODIgLyogUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5M0Y5MjU0MzBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25H
cm91cHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzRENDMTI1MUYxMkQwMDNFRjI2OSAvKiBS
YWRpb0lucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjY1OEZGQTYxNTIyRUZBQTAwREQ1
NTk1IC8qIFJhZGlvTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OTE4MDgyNDVF
NTkwMDFFOUFCQyAvKiBSYW5nZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzY3NSw2ICsyNzgyNyw3
IEBACiAJCQkJQkNFNDQxMzQxMkY3NDhFMjAwOUI4NEI4IC8qIFJlbmRlckNvbWJpbmVUZXh0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzkyRjE0MjBBRDE4NUY0MDA2OTFCRDQgLyogUmVuZGVyQ291
bnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4NkUwOTdEOTMwMjAwOTRDOUU0IC8qIFJl
bmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODM2REFBMDYx
Q0VBQjgwRDAwQTJCNzA3IC8qIFJlbmRlckRlc2NlbmRhbnRJdGVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRDMwMjc1NEExMkE1RkU4NDAwNEJEODI4IC8qIFJlbmRlckRldGFpbHNNYXJrZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3NkU1RjdGMTM1RTBEQ0YwMEE2OTgzNyAvKiBSZW5kZXJl
ZERvY3VtZW50TWFya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjMyQ0RBOTEzREY3RkE5MDBG
MzREMTMgLyogUmVuZGVyZWRQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzcxOCw3ICsy
Nzg3MSw2IEBACiAJCQkJNDM5MDQ2RTgxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFNj
cmlwdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzOTA0NkVDMTJEQTI1RTgwMEFGODBBOSAvKiBS
ZW5kZXJNYXRoTUxUb2tlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM5MDQ2RUExMkRBMjVFODAw
QUY4MEEyIC8qIFJlbmRlck1hdGhNTFVuZGVyT3Zlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDM5
MDQ2RUExMkRBMjVFODEyQUY4MEFDIC8qIE1hdGhPcGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTRDMjc5NTkwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggaW4gSGVhZGVycyAq
LywKIAkJCQlERUJDQ0REMjE2NjQ2RTgyMDBBNDUyRTEgLyogUmVuZGVyTWVkaWFDb250cm9sRWxl
bWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRkEzMDNGMTMxNkMyOUMwMEMwQkZDNSAvKiBS
ZW5kZXJNZWRpYUNvbnRyb2xzLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NzMwLDYgKzI3ODgyLDcg
QEAKIAkJCQk4QUM4MjJGRDE4MEZDMDMzMDBGQjY0RDUgLyogUmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODVGMjNEMTUxOTE1RTAwMEJDMTdCRSAvKiBSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUE0ODgwMDk3RDkzMDIw
MDk0QzlFNCAvKiBSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzODg2NzM1MUQx
M0JBNUYwMDM2OTdEMCAvKiBSZW5kZXJPYmplY3RFbnVtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNGQTkzMDgxMDMzMzE5MzAwN0IyNUQxIC8qIFJlbmRlck92ZXJmbG93LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNDNCRjU5RDExNDkyOTI4MDBDNjQzQ0EgLyogUmVuZGVyUHJvZ3Jlc3MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUI1QjY1ODc0MTg2RkRFNEMwMDlDMjZFOCAvKiBSZW5kZXJQdHIuaCBp
biBIZWFkZXJzICovLApAQCAtMjc4MzUsNiArMjc5ODgsNyBAQAogCQkJCTdFRTY4NDZGMTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0VFNjg0NzAxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9uc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxNEM3NjdGMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlQmFz
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0JDMkQyMzAxQ0U1QjhBMTAwRDE4ODBCIC8qIFJlc291
cmNlVGltaW5nSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDcxRTg1MUM1NkQw
REMwMDk5NTFCRSAvKiBSZXNvdXJjZVVzYWdlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQURC
QUQ2RUYxQkNERDk1NzAwMzgxMzI1IC8qIFJlc291cmNlVXNhZ2VPdmVybGF5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNTA3MUU4NzFDNTZEMEUxMDA5OTUxQkUgLyogUmVzb3VyY2VVc2FnZVRocmVh
ZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzg3NSw2ICsyODAyOSw3IEBACiAJCQkJNUUyQzQzNjMx
QkNFRTMyQjAwMDFFMkJDIC8qIFJUQ1J0cFJlY2VpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
RTJDNDM2MTFCQ0VFMzIzMDAwMUUyQkMgLyogUlRDUnRwU2VuZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1RTJDNDM1RjFCQ0VFMzFFMDAwMUUyQkMgLyogUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNl
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1RTVFMkIxNDFDRkMzRTc1MDAwQzBEODUgLyogUlRDUnRw
VHJhbnNjZWl2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTI2MTdEMTREMUMwMDQyMEFB
MSAvKiBSVENTZXNzaW9uRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTQz
MTdEMTZFMUMwMDQyMEFBMSAvKiBSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwNzhFMDk0NDE3RDE2RTFDMDA0MjBBQTEgLyogUlRDU2Vzc2lvbkRl
c2NyaXB0aW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzkyNCw3ICsyODA3OSw2IEBA
CiAJCQkJQkM4Qjg1NEIwRTdDN0Y1NjAwQUI2OTg0IC8qIFNjcm9sbGJhclRoZW1lLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzE0MDI4QjBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0Qzk5MTg2MEYzRDFFQkUwMDU4NjY3MCAv
KiBTY3JvbGxiYXJUaGVtZUlPUy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0M4M0RFODYxRDA0Q0M1
RDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4Qjg1M0Uw
RTdDN0YxMTAwQUI2OTg0IC8qIFNjcm9sbGJhclRoZW1lTWFjLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkU3MTQwNjE0MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2NrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1RDkyNUI2ODBGNjRENEREMDBCODQ3RjAgLyogU2Nyb2xsQmVoYXZpb3Iu
aCBpbiBIZWFkZXJzICovLApAQCAtMjgwMTgsNiArMjgxNzIsNyBAQAogCQkJCTRCNkZBNkY0MEMz
OUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUZE
MDBDMERBRjMzNTQwMEY1RjU1QyAvKiBTTUlMVGltZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRB
RkQwMEUwREFGMzM1NTAwRjVGNTVDIC8qIFNNSUxUaW1lQ29udGFpbmVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1QzdDODhEODFEMEYxRjRBMDA5RDJGNkQgLyogU29ja2V0UHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxQUJBRTFCMTAzQzE4RkYwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1F
cnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwRDRBMzQxMDMxNjVFRTAwNDlFQTU0IC8qIFNv
Y2tldFN0cmVhbUVycm9yQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBQkFFMUUxMDNDMTkx
MzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODA0
Nyw2ICsyODIwMiw3IEBACiAJCQkJOTMzMDlFMTQwOTlFNjQ5MjAwNTZFNTgxIC8qIFNwbGl0VGV4
dE5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUxNjA5OUU2NDkyMDA1NkU1
ODEgLyogU3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODQ3MzBEOTMxMjQ4RjBCMzAwRDNBOUM5IC8qIFNwb3RMaWdodFNvdXJjZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJN0M4M0RFODYxRDA0Q0M1RDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzZBM0IxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTENh
bGxiYWNrV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzZBM0MxNTA1RjA4MTAwMUI3
NEFDIC8qIFNRTEVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEzRjE1MDVGMDgxMDAx
Qjc0QUMgLyogU1FMRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI4MTMyLDcgKzI4Mjg4
LDYgQEAKIAkJCQlBOEVBODAwQzBBMTk1MTZFMDBBOEVGNUYgLyogU3R5bGVTaGVldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTRGOUVFRjMxNTZEQTAwNzAwRDIzRTdFIC8qIFN0eWxlU2hlZXRDb250
ZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTgwMEEwQTE5NTE2RTAwQThFRjVGIC8qIFN0
eWxlU2hlZXRMaXN0LmggaW4gSGVhZGVycyAqLywKLQkJCQk3MUM5MTYwODFEMTQ4M0EzMDBBQ0E0
N0QgLyogVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM1RUI1RTUwRTgxQkY2RDAwQjI1OTY1IC8qIFN0eWxlU3Vycm91bmREYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzVFQjgxMDBFODFGMkNFMDBCMjU5NjUgLyogU3R5bGVUcmFuc2Zvcm1EYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNERFQUExODE3QTkzREMzMDAwRTA0MzAgLyogU3R5bGVU
cmVlUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjgxNDMsNyArMjgyOTgsOSBAQAogCQkJ
CUY1NUIzREQ0MTI1MUYxMkQwMDNFRjI2OSAvKiBTdWJtaXRJbnB1dFR5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTY1NkQzNzQ4MEFEQkE1REUwMEE0NTU0RCAvKiBTdWJyZXNvdXJjZUxvYWRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjU5QTdEMTMwQjZEQjREOTAwMTE1NUIzIC8qIFN1YnN0aXR1
dGVEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQUU5NkE5MzFEMUEwREREMDBCODY3NjggLyog
SlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUE4RjZCMDIwREI1MzAwNjAwMURCNzk0IC8qIFN1YnN0aXR1dGVSZXNvdXJjZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMUFFOTZBOEIxRDFBMERERDAwQjg2NzY4IC8qIEpTQXBwbGVQYXlQYXlt
ZW50QXV0aG9yaXplZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUZGOEY2MDE4MDc0NDIx
MDAxMzI2NzQgLyogU3VidGxlQ3J5cHRvLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0IyRDgxNjBG
OTkyMEQyMDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk3QzA3ODUwMTE2NUQ1QkUwMDNBMzJFRiAvKiBTdWZmaXhUcmVlLmggaW4gSGVhZGVycyAqLywK
QEAgLTI4MTc1LDcgKzI4MzMyLDYgQEAKIAkJCQkwOEZFMEJDNTEyN0UyQUMxMDAwQzRGQjUgLyog
U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhB
MEUwNTEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDg4QTBFMDYxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlE
ZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNUM3Qzg4RDgxRDBGMUY0QTAwOUQyRjZE
IC8qIFNvY2tldFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhBMEUwNzEyNkVGMURC
MDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDg4QTBFMDgxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2Zm
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwOEM4NTlDMDEyNzQ1NzU0MDBBNTcyOEQgLyogU1ZHQW5p
bWF0ZWRSZWN0LmggaW4gSGVhZGVycyAqLywKQEAgLTI4MTkzLDcgKzI4MzQ5LDYgQEAKIAkJCQk0
MzlEMzM0NTEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwOEZCM0Y4NDEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmlidXRlVG9Qcm9w
ZXJ0eU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5OUMwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0NpcmNsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTI2MkVDNDFBMUQwNzhGQjkw
MEJBNzhGQyAvKiBFdmVudFRyYWNraW5nUmVnaW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIy
Mjc5OUYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0NsaXBQYXRoRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjc5QTIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0NvbG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyNzlBNTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjgyMTcsNyArMjgzNzIsNiBA
QAogCQkJCUIyMjI3OUQ0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUQ3MEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OURB
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTFBMjUwRTBEMUNERDYzMjAwMEQwQkU2MyAvKiBMaW5rSWNvblR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQzNThFODg2MTM2MEEzM0IwMEU0NzQ4QyAvKiBTVkdGRURyb3BTaGFk
b3dFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlERDBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHRkVGbG9vZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUUwMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdGRUZ1bmNBRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODI2
NCw3ICsyODQxOCw2IEBACiAJCQkJMDg1NEIwMjExMjU1RTRFNjAwQjlDREQwIC8qIFNWR0lubGlu
ZVRleHRCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTMwMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdMYW5nU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTMzMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdMZW5ndGguaCBpbiBIZWFkZXJzICovLAotCQkJCTgzNkRBQTA2MUNFQUI4MEQw
MEEyQjcwNyAvKiBSZW5kZXJEZXNjZW5kYW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTcxMzQ0OTZFMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyN0EzNjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGVuZ3RoTGlzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBMzkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODI5Myw2ICsyODQ0Niw3IEBACiAJ
CQkJNzE1MzdBMDExNDZCRDlENzAwOEJENjE1IC8qIFNWR1BhdGhEYXRhLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMjIyN0E1OTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg0NzZDOUYwMTFERjZBNTgwMDU1NUIwMiAvKiBTVkdQYXRoUGFyc2Vy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkxQUU5NkE4RjFEMUEwREREMDBCODY3NjggLyogSlNBcHBs
ZVBheVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTVCMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdQYXRoU2VnLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E1RTBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHUGF0aFNlZ0FyYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MjUxNzhE
NUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhTZWdBcmNBYnMuaCBpbiBIZWFkZXJzICovLApAQCAtMjgz
MTYsNyArMjg0NzAsNiBAQAogCQkJCTgzQzFENDMyMTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRo
U2VnTGluZXRvUmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E3RDBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Mx
RDQzMzE3OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzLmggaW4g
SGVhZGVycyAqLywKLQkJCQlDQkMyRDIzMDFDRTVCOEExMDBEMTg4MEIgLyogUmVzb3VyY2VUaW1p
bmdJbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MzQxNzhENUFCNTAwMTQx
RTY4IC8qIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjIyMjdBODEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdMaXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk4NDc2QzlFNjExREY2QTBCMDA1NTVCMDIgLyogU1ZHUGF0aFNlZ0xpc3RCdWlsZGVy
LmggaW4gSGVhZGVycyAqLywKQEAgLTI4MzU4LDcgKzI4NTExLDYgQEAKIAkJCQlFNEFGRDAxMDBE
QUYzMzU1MDBGNUY1NUMgLyogU1ZHU01JTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4
ODBGNzBFMTI4MkI0NkQwMDk0ODUwNSAvKiBTVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwODEzQTRFQTEyODQxMzI2MDA5OTI1MTEgLyogU1ZHU3RhdGlj
UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MUFENzUzQTFDRUY2QkQxMDBB
MzE0ODYgLyogRmV0Y2hPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FBOTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHU3RvcEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3
QUFDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMjIyN0FCODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTI4NDg4LDcgKzI4NjQwLDYgQEAKIAkJCQk0OTg3NzBGMzEyNDJDNTM1MDAyMjI2
QkEgLyogVGlsaW5nRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEREMxMjUxRjEyRDAw
M0VGMjY5IC8qIFRpbWVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTc1NTNDRkU4MTA4
RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAot
CQkJCTUxNUY3OTU0MUNGQ0EzRDUwMENDRUQ5MyAvKiBXZWJDb3JlQ3Jvc3NUaHJlYWRDb3BpZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzMDVCMjREMDk4RjFCNkIwMEMyODg1NSAvKiBUaW1lci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjEzQjAwQ0Q2MzMxMDAwRkFEQTc1IC8qIFRpbWVSYW5n
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEN0VEMEFCMUJBRTk5MTcwMDQzQjNFNSAvKiBUaW1l
ckV2ZW50QmFzZWRNb2NrLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NTQ2LDYgKzI4Njk3LDcgQEAK
IAkJCQlCQ0FDRjNCRDEwNzI5MjFBMDBDMEM4QTMgLyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyNTQyRjREQjExNjZDMjVBMDBFODlBODYgLyogVXNlckdlc3R1
cmVJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5MjAzOTgzMThCOTVCQzYwMEIzOUFG
OSAvKiBVc2VySW5wdXRCcmlkZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTcxQzkxNjA4MUQxNDgz
QTMwMEFDQTQ3RCAvKiBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwNzhFMDkyRTE3RDE0RDFDMDA0MjBBQTEgLyogVXNlck1lZGlhQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwNzhFMDkyRjE3RDE0RDFDMDA0MjBBQTEgLyogVXNlck1lZGlhQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcyOTdGQTgxQzE4ODFDNTAwM0YwNzM1IC8q
IFVzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODU2NCw3ICsy
ODcxNiw2IEBACiAJCQkJN0M3NEQ0M0MxODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJV
VEYxNi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUZBRkJGMTkxNUE1RkE3NDAwMDgzQTIwIC8qIFVU
SVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkUzQkJGMDgxMTYyREExMTAwQjk0MDlB
IC8qIFVVSUQuaCBpbiBIZWFkZXJzICovLAotCQkJCTgzODg2NzM1MUQxM0JBNUYwMDM2OTdEMCAv
KiBSZW5kZXJPYmplY3RFbnVtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjVBMTU0MjgxMjc5NTM0
RDAwRDBCMEMwIC8qIFZhbGlkYXRpb25NZXNzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTEz
QTNFQTE1RkY0ODQxMDAxNTI2REIgLyogVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE1Qzc3MDhEMTAwRDNDNkIwMDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI4NjE2LDYgKzI4NzY3LDcgQEAKIAkJCQlBNTZDNUI5QjE4OUYz
NDU3MDA4MkQxM0MgLyogV2ViQ29uc29sZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTlC
RTc1OTFCQzdGNDJCMDBFMUM4NUIgLyogV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkQzRUY0NEExOTE3OTE1QzAwMDM0MTg0IC8qIFdlYkNvcmVDQUxheWVyRXh0cmFz
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTVGNzk1NDFDRkNBM0Q1MDBDQ0VEOTMgLyogV2ViQ29y
ZUNyb3NzVGhyZWFkQ29waWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTlBODA4MjQ1RTU5
MDAxRTlBQkMgLyogV2ViQ29yZUZyYW1lVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDNjlE
REExNjM3MUZENDAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDREM2OURENjE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1
bGxTY3JlZW5XYXJuaW5nVmlldy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODk0NSw2ICsyOTA5Nyw4
IEBACiAJCQlpc2EgPSBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTJENTBBNEI3MUNFMTBFMDAwMDE5ODA0
OSAvKiBBdHRhY2htZW50UGxhY2Vob2xkZXIucG5nIGluIFJlc291cmNlcyAqLywKKwkJCQkyRDUw
QTRCODFDRTEwRTAwMDAxOTgwNDkgLyogQXR0YWNobWVudFBsYWNlaG9sZGVyQDJ4LnBuZyBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkJQTExRThDMDUxQjFFMjhGNDAwMDNBN0M3IC8qIGNvcHlDdXJzb3Iu
cG5nIGluIFJlc291cmNlcyAqLywKIAkJCQlEMDJCNjRCMjE0MDg5RTU2MDA2RUZBMjEgLyogRGlj
dGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc0RvdC5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJ
CUQwMkI2NEIzMTQwODlFNTYwMDZFRkEyMSAvKiBEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRp
dmVzRG90QDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8sCkBAIC0yODk1Myw3ICsyOTEwNyw2IEBACiAJ
CQkJQkNBRDE4MEExMzFDN0EwRDAwOTkwNDA2IC8qIExvY2FsaXphYmxlLnN0cmluZ3MgaW4gUmVz
b3VyY2VzICovLAogCQkJCTMxMUMwOEJEMThFQjdDQUYwMEI2NTYxNSAvKiBtZWRpYUNvbnRyb2xz
QXBwbGUuY3NzIGluIFJlc291cmNlcyAqLywKIAkJCQkzMTFDMDhCRTE4RUI3Q0FGMDBCNjU2MTUg
LyogbWVkaWFDb250cm9sc0FwcGxlLmpzIGluIFJlc291cmNlcyAqLywKLQkJCQkyRDUwQTRCNzFD
RTEwRTAwMDAxOTgwNDkgLyogQXR0YWNobWVudFBsYWNlaG9sZGVyLnBuZyBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkJMzExQzA4QkYxOEVCN0NBRjAwQjY1NjE1IC8qIG1lZGlhQ29udHJvbHNpT1MuY3Nz
IGluIFJlc291cmNlcyAqLywKIAkJCQkzMTFDMDhDMDE4RUI3Q0FGMDBCNjU2MTUgLyogbWVkaWFD
b250cm9sc2lPUy5qcyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJN0ExRDdGQ0IxOEY4NUYwRjAwQzM4
NUFEIC8qIG1lZGlhQ29udHJvbHNMb2NhbGl6ZWRTdHJpbmdzLmpzIGluIFJlc291cmNlcyAqLywK
QEAgLTI4OTY1LDcgKzI5MTE4LDYgQEAKIAkJCQlBMTFFOEMwODFCMUUyOTAyMDAwM0E3QzcgLyog
bm9ydGhTb3V0aFJlc2l6ZUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCUExMUU4QzA5
MUIxRTI5MDcwMDAzQTdDNyAvKiBub3J0aFdlc3RTb3V0aEVhc3RSZXNpemVDdXJzb3IucG5nIGlu
IFJlc291cmNlcyAqLywKIAkJCQlCRThDNzUzMTEwNjgxMzI0MDAxRTkzRjUgLyogU3BlbGxpbmdE
b3QucG5nIGluIFJlc291cmNlcyAqLywKLQkJCQkyRDUwQTRCODFDRTEwRTAwMDAxOTgwNDkgLyog
QXR0YWNobWVudFBsYWNlaG9sZGVyQDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMDFFNkMy
RTQxMTk0QjI4MjAwNTA4MjFDIC8qIFNwZWxsaW5nRG90QDJ4LnBuZyBpbiBSZXNvdXJjZXMgKi8s
CiAJCQkJMUMyNDE3QkExOTkyQzA0MTAwRUY5OTM4IC8qIFNwZWxsaW5nRG90QDN4LnBuZyBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkJOTMxNTNCREMxNDE5NTlCQzAwRkNGNUJFIC8qIHRleHRBcmVhUmVz
aXplQ29ybmVyLnBuZyBpbiBSZXNvdXJjZXMgKi8sCkBAIC0yOTA3MiwxOCArMjkyMjQsMTggQEAK
IAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTUxNzE0RUFDMUNGNjU5NTEwMDQ3MjNDNCAvKiBH
Q09ic2VydmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxN0RBNkQ5MTM3MzRFNkUwMDdD
NTdGQiAvKiBJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE3OUYwREExQjk3NzRG
RTAwRUQwQTI3IC8qIEludGVybmFscy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE3QkY3RURGMTRD
OTE3NUEwMDE0NDg5RCAvKiBJbnRlcm5hbFNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUzRTI5RTVFMTY3QThBMTkwMDU4NkQzRCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTUxNzE0RUIwMUNGNjY1Q0UwMDQ3MjNDNCAvKiBKU0dDT2Jz
ZXJ2YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE3REE3MUQxMzczNURGQTAwN0M1N0ZC
IC8qIEpTSW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NDBCNUE3MTRDOTM1QUYw
MEE3N0ZBNCAvKiBKU0ludGVybmFsU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE3
MTRFQUMxQ0Y2NTk1MTAwNDcyM0M0IC8qIEdDT2JzZXJ2YXRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTNFRDNGREUxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVy
YXRlZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzQwQjU5NzE0QzkzNUFGMDBBNzdGQTQgLyog
SlNNYWxsb2NTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENTM5M0QzMTc1RTAx
ODYwMEMwNzEyMyAvKiBKU01lbW9yeUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE5QUVB
MjIxQUFBODA4QTAwQjUyQjI1IC8qIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk1MTcxNEVCMDFDRjY2NUNFMDA0NzIzQzQgLyogSlNHQ09ic2VydmF0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExRTVCMzFGMUFBRDFEQTQwMDZFQkVGQiAvKiBK
U01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkQ0MTUwREUxQzFGODY4QzAwMEEzQkEyIC8qIEpTTW9ja1BhZ2VPdmVybGF5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUVCRjUxMjFDMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9u
cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5MTA3LDYgKzI5MjU5LDcgQEAKIAkJCQkzN0Y1N0FC
QjFBNTA3MjczMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTI5MTRFMzA3MUNBQjVBNDQwMDQ5OTY2RiAvKiBBY2Nlc3NpYmlsaXR5QXR0
YWNobWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzN0Y1N0FCQzFBNTA3Mjc3MDA4NzZGOTgg
LyogQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNTJB
OEZENzFEMEE4RDBFMDA3M0NGNDIgLyogQWNjZXNzaWJpbGl0eUxhYmVsLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTM3RjU3QUJEMUE1MDcyN0EwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5TGlzdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkzN0Y1N0FCRTFBNTA3MjdFMDA4NzZGOTggLyogQWNjZXNz
aWJpbGl0eUxpc3RCb3guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdGNTdBQkYxQTUwNzI4MTAw
ODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMjkxNDIsNyArMjkyOTUsNiBAQAogCQkJCUNFN0IyREI0MTU4NkFCQUQwMDk4QjNGQSAvKiBB
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAz
RDEyQjAyNjc2MDBDMUEzNTkgLyogQW5hbHlzZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTMxQTc5NUM4MTg4OEJDQjUwMDM4MkY5MCAvKiBBTkdMRUluc3RhbmNlZEFycmF5cy5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk0NjBCQjYxNTFEMEExQkYwMDAyMjE4MTIgLyogQmFzZTY0VXRpbGl0
aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5MDcwN0U2MTIxOUMwNDMwMEQ5MEU1MSAvKiBB
TkdMRVdlYktpdEJyaWRnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUU5MTJBQTBFRkFDOTA2
MDA5RDBDQUYgLyogQW5pbWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxNkZFMTExMEU2
RTFEQTcwMEJGNjA4OCAvKiBBbmltYXRpb25CYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkx
NTEsNiArMjkzMDMsMTIgQEAKIAkJCQk0OUU5MTJBQzBFRkFDOTA2MDA5RDBDQUYgLyogQW5pbWF0
aW9uTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxMjIxRTA2MzFDMDJENjIzMDA2QTFBMDAg
LyogQW5pbWF0aW9uVGltZWxpbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlERDYwOTlF
NjQ5MjAwNTZFNTgxIC8qIEFwcGVuZE5vZGVDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTFBOEE2NDUxMUQxOUZDRkIwMEQwRTAwRiAvKiBBcHBsZVBheVBheW1lbnRBdXRob3JpemVkRXZl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUE4QTY0NTQxRDE5RkNGQzAwRDBFMDBGIC8qIEFw
cGxlUGF5UGF5bWVudE1ldGhvZFNlbGVjdGVkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MUE4QTY0NTgxRDE5RkNGQzAwRDBFMDBGIC8qIEFwcGxlUGF5U2Vzc2lvbi5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkxQThBNjQ1QjFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBwbGVQYXlTaGlwcGluZ0Nv
bnRhY3RTZWxlY3RlZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBOEE2NDVGMUQxOUZD
RkMwMEQwRTAwRiAvKiBBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkxQThBNjQ2MjFEMTlGQ0ZDMDBEMEUwMEYgLyogQXBwbGVQYXlWYWxp
ZGF0ZU1lcmNoYW50RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4RjZCQkMwREI1NUNE
QzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4
RjZCQkUwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyNEY1NEVBQzEwMUZFOTE0MDAwQUU3NDEgLyogQXBwbGljYXRpb25DYWNo
ZUhvc3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTIxNSw2ICsyOTM3Myw3IEBACiAJCQkJQThD
RkYwNTAwQTE1NEYwOTAwMEE0MjM0IC8qIEF1dG9UYWJsZUxheW91dC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwNzAzNjNFMTE4MUExQ0RDMDBDMDc0QTUgLyogQVZBdWRpb0NhcHR1cmVTb3VyY2Uu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzAzNjNFMzE4MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0
dXJlRGV2aWNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3MTk0MjdGMUQwODhGMjEw
MDJBQTUxRCAvKiBBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMDcwMzYzRTUxODFBMUNEQzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0QzMzZGNjExN0Y5RjY0NzAwREREQ0QwIC8qIEFWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGwubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzAzNjNFNzE4MUExQ0RDMDBD
MDc0QTUgLyogQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gaW4gU291cmNlcyAqLywKQEAgLTI5MjI1
LDYgKzI5Mzg0LDcgQEAKIAkJCQlCQ0E4QzgxRjExRTNEMzY5MDA4MTJGQjcgLyogQmFja0Zvcndh
cmRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQThDQTVGMTFFNEU2RDEwMDgx
MkZCNyAvKiBCYWNrRm9yd2FyZExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMjRFRTcw
QzI2NDFDRDAwOUUyMzQ5IC8qIEJhclByb3AuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDYwQkI2
MTUxRDBBMUJGMDAwMjIxODEyIC8qIEJhc2U2NFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkzNzlFNjFDOTEyNkNBNUMzMDBCNjNFOEQgLyogQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzNzlFNjFDQjEyNkNBNUM0MDBCNjNFOEQgLyogQmFzZUNoZWNr
YWJsZUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNUUwQzY1QjE2NDNDNDJDMDBE
NkNCNjkgLyogQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0yOTMxMiw3ICsyOTQ3Miw2IEBACiAJCQkJNjU1MEI2OUYwOTlERjAyNzAwOTBE
NzgxIC8qIENoYXJhY3RlckRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMyNkRDMEMwOURB
RDVENjAwQUZDODQ3IC8qIENoYXJzZXREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIz
REIxMTI1MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk5M0Y5MjU0NDBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25Hcm91cHMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRDYxOUEzMDcxNDRFMDBCRTAwNEJDMzAyIC8qIENoaWxkTGlz
dE11dGF0aW9uU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxODcyMjUwOTc3RDNDMDAw
NTgyNkQ5IC8qIENoaWxkTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTREODIzOEIw
QUY5MkRGNjAwMDRGMDU3IC8qIENocm9tZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5MzkxLDYg
KzI5NTUwLDcgQEAKIAkJCQlFMUI0Q0QyNTEwQjMyMkUyMDBCRkZEN0UgLyogQ3JlZGVudGlhbFN0
b3JhZ2VNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDQ4MUYwMDE0NkI1QzRDMDBBQTc4MzQg
LyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFDNDE2
MTcwRjY1NjMxODAwOTJEMkZCIC8qIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk0MUFCRTY3QzFEMDU4MEUwMDA2RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQzQxNURFMEY2NTVEN0MwMDky
RDJGQiAvKiBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUUxNjk4MDQ5MTEzMzY0NDcwMDg5NDExNSAvKiBDUnVudGltZU9iamVjdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5NzVDQTI4QTEzMDM2NUY4MDBFOTlBRDkgLyogQ3J5cHRvLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjk0NTUsNiArMjk2MTUsNyBAQAogCQkJCUNEN0RCQjI4MThDQTE5
QTQwMEMxMTA2NiAvKiBDU1NHcmlkTGluZU5hbWVzVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0QzRTI1MjMxODA0NkJDRDAwRTI3RjU2IC8qIENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkJGODkwNDUxNjlFOUYxRjAwNTJEODZFIC8qIENTU0dy
b3VwaW5nUnVsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQUU5NkE5QTFEMUExMDA3MDBCODY3
NjggLyogSlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudEN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzIzRTc2QzBEQUU4OEE5MDA5RkRDOTEgLyogQ1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzkzRTVGRjE1MUE5OUYyMDAwNjZG
MDYgLyogQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFNkNGRTBB
MTk4OUNBMDA3RkI4QzUgLyogQ1NTSW1hZ2VWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5
NjY4LDcgKzI5ODI5LDYgQEAKIAkJCQk4NURGMkM1RDBBQTM0MUY2MDBBRDY0QzUgLyogRE9NSFRN
TEZvcm1FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVERjgxOTYwQUE3N0U0QjAwNDg2
QUQ3IC8qIERPTUhUTUxGcmFtZUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NURGODE5
ODBBQTc3RTRCMDA0ODZBRDcgLyogRE9NSFRNTEZyYW1lU2V0RWxlbWVudC5tbSBpbiBTb3VyY2Vz
ICovLAotCQkJCTgzQTRBOUY5MUNFN0ZEODEwMDcwOUIwMCAvKiBKU1hNTERvY3VtZW50Q3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1OTkyRUJCMEFBNTA2OTUwMEFDMDc4NSAvKiBET01I
VE1MSGVhZEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTE4M0I0NTBBQTY5MjYxMDBG
MTlGQTMgLyogRE9NSFRNTEhlYWRpbmdFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVF
Q0JFRjIwQUE3NjI2OTAwNTQ0RjBCIC8qIERPTUhUTUxIUkVsZW1lbnQubW0gaW4gU291cmNlcyAq
LywKQEAgLTI5NzYxLDEyICsyOTkyMSwxMiBAQAogCQkJCTE1RkNDOUZDMUI0REY3RjIwMEU3MjMy
NiAvKiBET01VUkxNZWRpYVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzFBMzdCRjA5
N0M3MTVGMDAxOUYzRDggLyogRE9NVXRpbGl0eS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTE1Qzc3
MEE1MTAwRDQxQ0QwMDVCQTI2NyAvKiBET01WYWxpZGl0eVN0YXRlLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJNDFBQkU2N0MxRDA1ODBFMDAwNkQ4NjJEIC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hl
Y2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUMwRkY0QTBFNENFRkREMDA3RDZGRTUgLyog
RE9NV2ViS2l0QW5pbWF0aW9uRXZlbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTA2MDM3QTE0
MzI4MUNEMDBBQkY0QkEgLyogRE9NV2ViS2l0Q1NTRmlsdGVyVmFsdWUubW0gaW4gU291cmNlcyAq
LywKIAkJCQk0OTgzOTE1MTBGMUU3NkI0MDBDMjM3ODIgLyogRE9NV2ViS2l0Q1NTTWF0cml4Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJOEFEMEE1OTcxNEM4ODM1ODAwMEQ4M0M1IC8qIERPTVdlYktp
dENTU1JlZ2lvblJ1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTYxMUU2MjBFMUM0RTE0MDBG
NkE1NzkgLyogRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUubW0gaW4gU291cmNlcyAqLywKKwkJ
CQkxQUU5NkE5ODFEMUExMDA3MDBCODY3NjggLyogSlNBcHBsZVBheVNlc3Npb25DdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJM0YyQjMzRUMxNjVBRjE1NjAwRTM5ODdDIC8qIERPTVdlYktp
dENTU1ZpZXdwb3J0UnVsZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCThBMTk1OTMzMTQ3RUExNkUw
MEQxRUE2MSAvKiBET01XZWJLaXROYW1lZEZsb3cubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMUMw
RkY0RDBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lm1tIGluIFNv
dXJjZXMgKi8sCkBAIC0yOTgxOCw3ICsyOTk3OCw2IEBACiAJCQkJRkU2OTM4QjYxMDQ1RDY3RTAw
OEVBQkI2IC8qIEV2ZW50SGFuZGxlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzQzA5QTdG
MEIwNjRFRUYwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlBRDQ0OTVGMzE0MUZDMDg5MDA1NDFFREYgLyogRXZlbnRMaXN0ZW5lck1hcC5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlGNTJBOEZENzFEMEE4RDBFMDA3M0NGNDIgLyogQWNjZXNzaWJpbGl0eUxh
YmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM0MDBEMTA5MThGMUM4RjYwMDkwRDg2MyAvKiBF
dmVudExvb3BJbnB1dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5OUNDMEI1MDE4QkU5ODQ5MDA2
Q0VCQ0MgLyogRXZlbnRMb29wSW5wdXREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTI2RjQwRDRBMTQ5MDRBNjMwMENBNjdDNCAvKiBFdmVudExvb3BJT1MubW0gaW4gU291cmNlcyAq
LywKQEAgLTI5ODY1LDcgKzMwMDI0LDYgQEAKIAkJCQk4NDczMEQ4QzEyNDhGMEIzMDBEM0E5Qzkg
LyogRkVUdXJidWxlbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDk0MTJCMDI2Rjcw
MEMxQTM1OSAvKiBGRlRDb252b2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwOTYx
MkIwMjZGNzAwQzFBMzU5IC8qIEZGVEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFBNThF
ODY3MUQxOUQ4MEUwMEMwRUE3MyAvKiBQYXltZW50UmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGRDMxNjBDMDEyQjAyNzJBMDBDMUEzNTkgLyogRkZURnJhbWVNYWMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTc2RDZDODAxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTM0RkU5RTUwQjVDQTUzOTAwM0U0QTczIC8qIEZpbGVDaG9vc2VyLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjk5NjEsNiArMzAxMTksNyBAQAogCQkJCTRGQjM5MEFEMTVFRjYx
RjMwMDdBRDUxRiAvKiBHZW5lcmF0ZWRJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzAw
MzBGNTFCN0QzM0I1MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTA3MjBCMEEwMTREMzMyMzUwMDY0Mjk1NSAvKiBHZW5lcmljRXZl
bnRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRDRCRTUyQTFDRTEzNkVGMDA5RDg3REEg
LyogR2VuZXJpY1Rhc2tRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzQ2QUYyMzE0RjRE
REU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc0NkFG
MjYxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkI2MjUyRTE4REUxQjE1MDBBMDdDMDUgLyogR2VvbWV0cnlVdGlsaXRpZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDE0Nyw2ICszMDMwNiw3IEBACiAJCQkJNTE4NUZDOTYx
QkI0QzRFODAwMTI4OThGIC8qIElEQktleURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4
NUZDOTgxQkI0QzRFODAwMTI4OThGIC8qIElEQktleVBhdGguY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTE4NUZDOUExQkI0QzRFODAwMTI4OThGIC8qIElEQktleVJhbmdlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTFBRTk2QThBMUQxQTBEREQwMEI4Njc2OCAvKiBKU0FwcGxlUGF5UGF5bWVudEF1
dGhvcml6ZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTg1RkM5RDFCQjRDNEU4MDAx
Mjg5OEYgLyogSURCS2V5UmFuZ2VEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxODVGQzlG
MUJCNEM0RTgwMDEyODk4RiAvKiBJREJPYmplY3RTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MTYwNzEyRTFCRDgzMDc4MDBEQkM0RjIgLyogSURCT2JqZWN0U3RvcmVJbmZvLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMzAxOTYsNyArMzAzNTYsNiBAQAogCQkJCURCMjNDMkNCMEE1MDhEMjkw
MDI0ODlFQiAvKiBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MTcxMzhFRjFCRUQxRDFBMDAwRDVGMDEgLyogSW5kZXhLZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTFFRUFBNzMxQkVGRkFCMTAwMjE4MDA4IC8qIEluZGV4VmFsdWVFbnRyeS5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk4MzZDMTQ0MzFDREVBRkQ4MDA3MzQ5M0YgLyogSlNYUGF0aE5TUmVzb2x2
ZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3MTM4RjcxQkYxMjhCQjAwMEQ1RjAx
IC8qIEluZGV4VmFsdWVTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOENGRjVFNjBBMTU1
QTA1MDAwQTQyMzQgLyogSW5saW5lQm94LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1N0NCNTJE
MTgyQTNFRUQwMDc5QTY0NyAvKiBJbmxpbmVFbGVtZW50Qm94LmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMzAyMTUsNyArMzAzNzQsNiBAQAogCQkJCTkzMzA5REVGMDk5RTY0OTIwMDU2RTU4MSAvKiBJ
bnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkz
MzA5REYxMDk5RTY0OTIwMDU2RTU4MSAvKiBJbnNlcnRUZXh0Q29tbWFuZC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCODg1RThENDExRTA2REQyMDA5RkZCRjQgLyogSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTgzODg2OUVDMUNFODFFQTMwMEQx
NkE5RSAvKiBKU1RleHRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ExRjJCNTIxMjZD
NjFCMjAwMDZBN0U2IC8qIEluc3BlY3RvckNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QzgxQjk1QjBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4MkFCMTc0MzEyNEI5OUVDMDBDNTA2OUQgLyogSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDIzOCw3ICszMDM5Niw2IEBACiAJCQkJN0M1MjJE
NEIxNUI0NzdFODAwOUI3Qzk1IC8qIEluc3BlY3Rvck92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNEY2RkRENjQxMzQxREVERDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5OUNDMEI2NjE4QkU5RjE1MDA2Q0VCQ0MgLyogSW5zcGVjdG9y
UmVwbGF5QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTU2RDAyQTMxRDBCQUQ2ODAwOTVF
NUQzIC8qIEpTRXJyb3JFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MkFCMTc3
MzEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3NTQxMzNBQTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGMzUwQjczNTEzRjEzNzdEMDA4ODBDNDMgLyogSW5z
dHJ1bWVudGluZ0FnZW50cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwNDA0LDYgKzMwNTYxLDcg
QEAKIAkJCQk2NURGMzFGOTA5RDFDQzYwMDAwQkUzMjUgLyogSlNFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDMkVENTU1MEM2QjlCRDMwMDkyMEJGRiAvKiBKU0VsZW1lbnRDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkVDRjdBREMxMDE2MkIzODAwNDI3REU3IC8qIEpTRXJy
b3JFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTZEMDJBMzFEMEJBRDY4MDA5NUU1RDMg
LyogSlNFcnJvckV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzRDQ2MTQ4MTE2
MUQ1MzIwMENBMEQwOSAvKiBKU0Vycm9ySGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NEU4Mzc4NDA5Rjg1RDFDMDBCODVBRTQgLyogSlNFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0VGQUY0RTBDMzE3RTY5MDBGQTgxRjYgLyogSlNFdmVudEN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTMwNDg2LDYgKzMwNjQ0LDggQEAKIAkJCQlCQzkyNkY4MDBDMDU1MjQ3MDA4Mjc3
NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDQx
QUJCMEMwNjBERTgwMEMwRTQ0NiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTgwRTdCMTQwQTE5RDYwNjAwN0ZCOEM1IC8qIEpTSFRNTEhlYWRF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBRTk2QTkyMUQxQTBEREQwMEI4Njc2OCAv
KiBKU0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTFBRTk2QTkwMUQxQTBEREQwMEI4Njc2OCAvKiBKU0FwcGxlUGF5U2hpcHBpbmdDb250
YWN0U2VsZWN0ZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUEyRTBBMUNEQUI0
MDBCNDJCMjUgLyogSlNIVE1MSGVhZGluZ0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFFMkFBMzAwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEhSRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTg1QjE4RjBBMUIxOEEyMDBEOEM4N0MgLyogSlNIVE1MSHRtbEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDYxNSw2ICszMDc3NSw3IEBACiAJCQkJNjVERjMxRkIw
OUQxQ0M2MDAwMEJFMzI1IC8qIEpTTXV0YXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDNkYwOTAyQzE0MzI3RDRGMDA2ODU4NDkgLyogSlNNdXRhdGlvbk9ic2VydmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUM2RjA5MTdGMTQzQTJCQjkwMDY4NTg0OSAvKiBKU011dGF0aW9uT2Jz
ZXJ2ZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUFFOTZBOEMxRDFBMERERDAwQjg2
NzY4IC8qIEpTQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0ZWRFdmVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlDNkYwOEZDOTE0MzEwMDBEMDA2ODU4NDkgLyogSlNNdXRhdGlvblJlY29yZC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Q5QzJDMDBDMTdCNjlFMDA1QzkwQTIgLyogSlNOYW1l
ZE5vZGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNEOUMyNjMwQzE3QUE2NzAwNUM5MEEy
IC8qIEpTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA2NzEsNiAr
MzA4MzIsNyBAQAogCQkJCTQxMjlERjg1MUJCNUI4MDcwMDMyMkExNiAvKiBKU1JlYWRhYmxlU3Ry
ZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzRDOTZERTFB
RDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3RTRDOTZEQzFBRDQ0ODM1MDAzNjVBNTEgLyogSlNSZWFkYWJsZVN0cmVhbVNvdXJj
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQUU5NkE4RTFEMUEwREREMDBCODY3NjggLyogSlNB
cHBsZVBheVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE4QzM5NjAxQzhGMEFBRTAw
NTFDOEEzIC8qIEpTUmVhZGFibGVTdHJlYW1Tb3VyY2VDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkNGRTJGMTEwQzFCNTgzNzAwMjAyMzVGIC8qIEpTUmVjdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0OTk4QUVDRDEzRjlENkM5MDA5MEIxQUEgLyogSlNSZXF1ZXN0QW5pbWF0aW9uRnJh
bWVDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwODcwLDYgKzMxMDMyLDcgQEAKIAkJ
CQk3MURDQjcwMTE1NjgxOTc2MDA4NjIyNzEgLyogSlNTVkdab29tQW5kUGFuLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyRkEzRTE4MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1pvb21FdmVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGMzIwMzA5RDFDQzYwMDAwQkUzMjUgLyogSlNUZXh0
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTgzODg2OUVDMUNFODFFQTMwMEQxNkE5RSAvKiBKU1Rl
eHRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzQTE0QjgwQjdEMUQ1MjAwQTUzRkZE
IC8qIEpTVGV4dEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUY0NUY1MEU2ODdCNUMw
MDFDMTI4NyAvKiBKU1RleHRNZXRyaWNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MDc1Njk0
MTQyMjY2OEQwMDQxNDE2MSAvKiBKU1RleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMw
OTU5LDYgKzMxMTIyLDcgQEAKIAkJCQlFMTI3MUE1OTBFRUVDREU0MDBGNjEyMTMgLyogSlNXb3Jr
ZXJOYXZpZ2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M0Qzk2REMxQUQ0NDgzNTAwMzY1
QTYwIC8qIEpTV3JpdGFibGVTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODM1OENCNkYx
QzUzMjc3MjAwRTBDMkQ4IC8qIEpTWE1MRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
ODNBNEE5RjkxQ0U3RkQ4MTAwNzA5QjAwIC8qIEpTWE1MRG9jdW1lbnRDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkMzNDhCRDMwREI3RjgwNDAwNEFCQUI5IC8qIEpTWE1MSHR0cFJlcXVl
c3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMzNDhCQkUwREI3RjUzMTAwNEFCQUI5IC8qIEpT
WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODNEMzVBRjExQzcx
OEQ5MDAwRjcwRDVBIC8qIEpTWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTMwOTY5LDYgKzMxMTMzLDcgQEAKIAkJCQlCQzYwREI0OTBEMkEzRDFFMDBCOTkx
OEYgLyogSlNYUGF0aEV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTc2MkM3NTBB
MDc0RjI2MDA5ODlGNUIgLyogSlNYUGF0aEV4cHJlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUE3NjJDNzcwQTA3NEYyNjAwOTg5RjVCIC8qIEpTWFBhdGhOU1Jlc29sdmVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTgzNkMxNDQzMUNERUFGRDgwMDczNDkzRiAvKiBKU1hQYXRoTlNSZXNv
bHZlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTc2MkM3OTBBMDc0RjI2MDA5ODlG
NUIgLyogSlNYUGF0aFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUM3RkFBMjEzM0E1
RDM1MDBENjczMkQgLyogSlNYUGF0aFJlc3VsdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0VGRTFFQTBEQ0E1RjY0MDA3MzkyMTkgLyogSlNYU0xUUHJvY2Vzc29yLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMzEwMTIsNiArMzExNzcsNyBAQAogCQkJCUZGQjY5OENGMTgzNDAyQkIwMDE1
OEEzMSAvKiBMaW5lSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRkRCQzA0ODE4M0QyN0I3
MDA0MDcxMDkgLyogTGluZVdpZHRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QUQyRjg3MEVD
ODlEMDcwMDhBQjAwMiAvKiBMaW5rSGFzaC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQTREQTQy
MTFDREQzQTgzMDBGNDQ3M0MgLyogTGlua0ljb25Db2xsZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOThDRTQzMjYxMjlFMDBCRDAwNTgyMURDIC8qIExpbmtMb2FkZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTg1QkI5NkQxM0E5NDA1ODAwN0EwQjY5IC8qIExpbmtSZWxBdHRyaWJ1dGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3RkE2MjAwRDFGMENCRDAwREIyMkE5IC8qIExpdmVO
b2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxMDQ0LDYgKzMxMjEwLDcgQEAKIAkJCQk0
MzkwNDZERjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZFRDQ4MzkwQ0VENjZDMzI1NUY3MkM1OSAvKiBNYXRoTUxTZWxl
Y3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZBNjU0QTZCMTEwOEFCRUQwMDI2MTVF
MCAvKiBNYXRoTUxUZXh0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MzkwNDZFOTEy
REEyNUU4MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5
RDVEQzJCMEY0MjNBNzMwMDhGMjBGRCAvKiBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0OUU5MTFDNjBFRjg2RDQ3MDA5RDBDQUYgLyogTWF0cml4VHJh
bnNmb3JtT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDQkM4REFDMUFBQTMwMjIw
MEUxQzgwMyAvKiBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTMxMDUyLDEyICszMTIxOSwxMiBAQAogCQkJCTQxNzI1M0FBMTM1NEJCQkMwMDM2MEYyQSAv
KiBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlERUJDQ0RENTE2
NjQ2RUIyMDBBNDUyRTEgLyogTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNEMjdGNkU3MTQ1NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNUU1RTJCMTMxQ0ZDM0U3MDAwMEMwRDg1IC8qIFJUQ1J0cFRy
YW5zY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFGM0MzQkVBMTM1Q0FGM0MwMEI4QzFB
QyAvKiBNZWRpYUNvbnRyb2xzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNTdBRjgxMTJGMUZC
MDQwMEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xzQXBwbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0RBQjZEMjgxN0M3REU2QzAwQzYwQjM0IC8qIE1lZGlhQ29udHJvbHNIb3N0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE1OUFFODJCMUIzQTQwMkYwMDM3NDc4QiAvKiBNZWRpYURldmljZUluZm8u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUVBNzI1RDIxQUNBQkQ0NzAwRUFEMTdCIC8qIE1lZGlh
RGV2aWNlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQUU5NkE5NzFEMUExMDA3MDBCODY3Njgg
LyogSlNBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50Q3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTA3Mzk0RUM4MUJBQjJDQ0QwMEJFOTlDRCAvKiBNZWRpYURldmljZXNSZXF1
ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MjA1QUI3MTIzOTI5MTAwMEIxNzM4MCAvKiBN
ZWRpYURvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENkYyNTJDMTNGNUVGMEUwMDY1
MTY1RiAvKiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0zMTA2NSw2ICszMTIzMiw3IEBACiAJCQkJNUVCQjg5MzQxQzc3NzgyOTAwQzY1RDQxIC8qIE1l
ZGlhRW5kcG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUVCQjg5MzYxQzc3NzgyOTAwQzY1
RDQxIC8qIE1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTVFMTZBMkU1MUJGQTY1MEYwMDI5QTIxRSAvKiBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUU0RUFCMDUxRDA3MTY2RTAwMDZBMTg0IC8qIE1lZGlh
RW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEUxOTU5
MjEwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTA3QTZEMUVCMTQ5MTEzNzcwMDA1MUQwQyAvKiBNZWRpYUZyYWdtZW50VVJJUGFyc2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQjg1OUY3MTYwRDQ4QTQwMEU1QjA3RiAvKiBNZWRp
YUtleUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzEyNTYsNiArMzE0MjQsMTIgQEAKIAkJ
CQkyRDUwMDJGQjFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEZBNkU1RTBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBODBBMzhGRTBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTFBOEE2NDZDMUQxOUZGODcwMEQwRTAwRiAvKiBQYXltZW50Q29j
b2EubW0gaW4gU291cmNlcyAqLywKKwkJCQkxQThBNjQ2RDFEMTlGRjg3MDBEMEUwMEYgLyogUGF5
bWVudENvbnRhY3RDb2NvYS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTFBNThFODZEMUQxOUU0MkQw
MEMwRUE3MyAvKiBQYXltZW50Q29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUE4
QTY0NkUxRDE5RkY4NzAwRDBFMDBGIC8qIFBheW1lbnRNZXRob2RDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTFBNThFODY3MUQxOUQ4MEUwMEMwRUE3MyAvKiBQYXltZW50UmVxdWVzdC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkxQThBNjQ2NzFEMTlGREZGMDBEMEUwMEYgLyogUGF5bWVudFJl
cXVlc3RWYWxpZGF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1NjQwQjA1MzgxNDAw
MkNFNjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ2RTQ2
ODQxN0Q2NjBGNTAwRUNGOEJCIC8qIFBERkRvY3VtZW50SW1hZ2VNYWMubW0gaW4gU291cmNlcyAq
LywKIAkJCQk4QTdDQzk3MDEyMDc2RjhBMDAxRDQ1ODggLyogUGVuZGluZ1NjcmlwdC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTMxMjcxLDcgKzMxNDQ1LDYgQEAKIAkJCQlDRDdEMzM0MzFDN0ExMjNG
MDAwNDEyOTMgLyogUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkRGNDVBNzFCRDFDNkZEMDBFNEZBOEMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0OTU4NzgyMTEyQTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUFu
aW1hdGlvbkNvY29hLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMUE1OEU4NkQxRDE5RTQyRDAwQzBF
QTczIC8qIFBheW1lbnRDb29yZGluYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjEzMTY0
MDE2RUQwQ0RFMDAzNUNDMDQgLyogUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTJENzBCQTE1MTgwNzRGODYwMDAxOTA4QSAvKiBQbGF0Zm9ybUNBTGF5ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDk1ODc4MjIxMkE1N0RERjAwNzIzOEFDIC8qIFBsYXRmb3Jt
Q0FMYXllckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zMTMyNiw2ICszMTQ5OSw3IEBACiAJ
CQkJMDcyQUUxRTYxODNDMDc0MTAwMEE1OTg4IC8qIFF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc5RTM3MTYxMzczNkE2NjAwQjlFOTE5IC8qIFF1b3Rl
ZFByaW50YWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QTU3NEYyODEzMURCOTZEMDA0NzFC
ODggLyogUXVvdGVzRGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5M0Y5MjU0NDBGN0VGNUI4
MDA3RTM3QzkgLyogUmFkaW9CdXR0b25Hcm91cHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1
QjNEQ0IxMjUxRjEyRDAwM0VGMjY5IC8qIFJhZGlvSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUI2NThGRkE1MTUyMkVGQUEwMERENTU5NSAvKiBSYWRpb05vZGVMaXN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTkzRjE5QUI5MDgyNDVFNTkwMDFFOUFCQyAvKiBSYW5nZS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTMxNDAwLDcgKzMxNTc0LDYgQEAKIAkJCQk1QjdBMjA4RDJFMTI5NzlC
NEFFMTlERTYgLyogUmVuZGVyTWF0aE1MU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM5
MDQ2RUIxMkRBMjVFODAwQUY4MEE5IC8qIFJlbmRlck1hdGhNTFRva2VuLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQzOTA0NkU5MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxVbmRlck92
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDM5MDQ2RTkxMkRBMjVFODEyQUY4MEFDIC8qIE1h
dGhPcGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEMyNzk1ODBDRjk3NDE5MDBFOTdC
OTggLyogUmVuZGVyTWVkaWEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREU0OUIzMDkxNjVGMkZF
MTAwMTAzMzhEIC8qIFJlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQxRkEzMDNFMTMxNkMyOUMwMEMwQkZDNSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xzLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMzE0MTYsOSArMzE1ODksNyBAQAogCQkJCTVBNTc0RjI0MTMx
REI5MzkwMDQ3MUI4OCAvKiBSZW5kZXJRdW90ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlENzBB
RDY1NzEzRTEzNDJCMDA1QjUwQjQgLyogUmVuZGVyUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDRTkzRjQ3MTUxN0M2RDUwMDhDQ0Y3NCAvKiBSZW5kZXJSZWdpb25TZXQuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJNTE1Rjc5NTMxQ0ZDQTNEMDAwQ0NFRDkzIC8qIFdlYkNvcmVDcm9zc1Ro
cmVhZENvcGllci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODcxREZFMjBBMTUzNzZCMDBCMTJB
NjggLyogUmVuZGVyUmVwbGFjZWQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQ0Q0QkU1MkExQ0Ux
MzZFRjAwOUQ4N0RBIC8qIEdlbmVyaWNUYXNrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNBODQ2RDYwREM2N0EzNTAwMjZDMzA5IC8qIFJlbmRlclJlcGxpY2EuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTQ3OUZBRUQxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnkuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQ3OUZBRUYxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlCYXNl
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzE0ODMsNiArMzE2NTQsNyBAQAogCQkJCTZCNjkzQTM0
MUM1MUE5NUQwMEIwM0JFRiAvKiBSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3QTkyOUNBNjFDNTk4QTlFMDA0REYyMjYgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QUQzQ0REOTFDOEEwMDJGMDBGMTI2OTggLyogUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBRTk2QTk2
MUQxQTEwMDcwMEI4Njc2OCAvKiBKU0FwcGxlUGF5UGF5bWVudEF1dGhvcml6ZWRFdmVudEN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzlCODYwQzFDMjFFM0M5MDAxMTBGMzYgLyogUmVz
b3VyY2VMb2FkVGltaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2N0MwQ0U5MjNBMTAw
N0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0VF
Njg0NkUxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdENGTmV0LmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMzE0OTIsNiArMzE2NjQsNyBAQAogCQkJCTUxNEM3NjdFMENFOTIzQTEwMDdF
RjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2
ODQ3MTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUExRjc4RDBDMUMyNTQyNEMwMDI0NTQ0NiAvKiBSZXNvdXJjZVJlc3BvbnNl
Q29jb2EubW0gaW4gU291cmNlcyAqLywKKwkJCQlDQkMyRDIyRjFDRTVCODlEMDBEMTg4MEIgLyog
UmVzb3VyY2VUaW1pbmdJbmZvcm1hdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTA3MUU4
QjFDNTZGQjMxMDA5OTUxQkUgLyogUmVzb3VyY2VVc2FnZURhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQURCQUQ2RUUxQkNERDk1NTAwMzgxMzI1IC8qIFJlc291cmNlVXNhZ2VPdmVybGF5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUFERkUyQjU1MUJENUY2MTIwMERBQjQ1NyAvKiBSZXNvdXJj
ZVVzYWdlT3ZlcmxheUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zMTUxMiw3ICszMTY4NSw2
IEBACiAJCQkJMDczNzk0RjkxOUY1ODY0RTAwRTVBMDQ1IC8qIFJUQ0RhdGFDaGFubmVsSGFuZGxl
ck1vY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA5MDcxN0QxNENFRTAwNDIwQUExIC8q
IFJUQ0RUTUZTZW5kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDczNzk0RkIxOUY1ODY0RTAw
RTVBMDQ1IC8qIFJUQ0RUTUZTZW5kZXJIYW5kbGVyTW9jay5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQkwNzE5NDI3RjFEMDg4RjIxMDAyQUE1MUQgLyogQVZGb3VuZGF0aW9uTUlNRVR5cGVDYWNoZS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTA4MTdEMTRDRUUwMDQyMEFBMSAvKiBSVENEVE1G
VG9uZUNoYW5nZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTA5MTdEMTRDRUUw
MDQyMEFBMSAvKiBSVENJY2VDYW5kaWRhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDczQkUz
NEYxN0QxODE4MzAwMkJENDMxIC8qIFJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0zMTUyNCw2ICszMTY5Niw3IEBACiAJCQkJMDczNzk0RjExOUVFMzdCQjAw
RTVBMDQ1IC8qIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2suY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUUyQzQzNjIxQkNFRTMyQjAwMDFFMkJDIC8qIFJUQ1J0cFJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTVFMkM0MzYwMUJDRUUzMjMwMDAxRTJCQyAvKiBSVENSdHBTZW5kZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUU1RTJCMTMxQ0ZDM0U3MDAwMEMwRDg1IC8qIFJUQ1J0
cFRyYW5zY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OEUwOTBDMTdEMTRDRUUwMDQy
MEFBMSAvKiBSVENTZXNzaW9uRGVzY3JpcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcz
QkUzNEUxN0QxODBCMjAwMkJENDMxIC8qIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4RTA5MEUxN0QxNENFRTAwNDIwQUExIC8qIFJUQ1N0
YXRzUmVwb3J0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzE1MzEsNiArMzE3MDQsNyBAQAogCQkJ
CTVFMkM0MzY3MUJDRUUzNzcwMDAxRTJCQyAvKiBSVENUcmFja0V2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTU4MjRBQkEyMUFFODExMTYwMDkwNzRCNyAvKiBSdWJ5RWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1ODI0QUJBNjFBRTgxMzg0MDA5MDc0QjcgLyogUnVieVRleHRFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBRTk2QTk5MUQxQTEwMDcwMEI4Njc2OCAvKiBK
U0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudEN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNzlCQURBMTE2MUU3RjNGMDBDMkU2NTIgLyogUnVsZUZlYXR1cmUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTc5QkFEQTMxNjFFN0YzRjAwQzJFNjUyIC8qIFJ1bGVTZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ3NkJCODQxOTQ1NkY4MTAwQ0ZEMjlBIC8qIFJ1bkxvb3BP
YnNlcnZlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxNzI1LDcgKzMxODk5LDYgQEAKIAkJCQlF
NEQ1OEVCODE3QjRFRDg5MDBDQkRDQTggLyogU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0VGNDQ3RDBFNjc0ODA2MDAxQzEyODcgLyogU3R5bGVHZW5lcmF0
ZWRJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTBEQzc2QTE0NzQ3QkFCMDA1RTI0NzEg
LyogU3R5bGVHcmlkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1RTRFQUIwNTFEMDcxNjZF
MDAwNkExODQgLyogTWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBMTEwREI5RDE0RjVERjg3MDBBMDNCOTMgLyogU3R5bGVHcmlkSXRlbURhdGEu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyMjczMDMwRTgyRjFFNjAwRTdGOTc1IC8qIFN0eWxl
SW5oZXJpdGVkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDcxMjdDQTE2MzQzOEExMDBF
RDZGNUEgLyogU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpcy5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTMxNzM1LDcgKzMxOTA4LDYgQEAKIAkJCQlBODBFNkRGQjBBMTk5MDY3MDA3RkI4QzUgLyogU3R5
bGVQcm9wZXJ0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQjI1MTA2MTUyQTBCQUYwMDY5
Qjc3OSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgz
QzA1QTVBMUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25z
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFBOEE2NDMyMUQxOUU2OUIwMEQwRTAwRiAvKiBQYXlt
ZW50Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzIyNzJFMzBFODJFRTlCMDBFN0Y5NzUg
LyogU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzIyNzJC
QzBFODJFQUFFMDBFN0Y5NzUgLyogU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFNDYxODAyRjFDOERENEQyMDAyNkMwMkMgLyogU3R5bGVSZWxhdGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTc4MSw3ICszMTk1Myw2IEBACiAJCQkJNDMzMUFDNzgx
M0I2ODcwMDAwQTlFNUFFIC8qIFNWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0MzFBMkY5RDEzQjZGMkIwMDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWROdW1iZXJPcHRp
b25hbE51bWJlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwOEI1RjI1NTEzQjVGRkYyMDAyOTU5
RUMgLyogU1ZHQW5pbWF0ZWRQYXRoLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFBNERBNDIxMUNE
RDNBODMwMEY0NDczQyAvKiBMaW5rSWNvbkNvbGxlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0M0I5MzM2QTEzQjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDMxQTMwMjExM0I4OURDQzAwNzc5MUU0IC8qIFNWR0FuaW1hdGVk
UHJlc2VydmVBc3BlY3RSYXRpby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzZGQkNFQzE3OEMx
MTdGMDBCMjFBMTUgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTMyMDQwLDYgKzMyMjExLDcgQEAKIAkJCQlBQTQ3MzlEMTE3NTdBRkVDMDBFNzY3NjcgLyogVUlS
ZXF1ZXN0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4ODY0RTAxQkJBRjU3MTAwRTU0
MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxOThGN0E0
MUJCREI3OTMwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMUFFOTZBOTQxRDFBMERERDAwQjg2NzY4IC8qIEpTQXBwbGVQYXlWYWxp
ZGF0ZU1lcmNoYW50RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE5OEY3QTgxQkJERDM4
NTAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRDA4NkZFOTkwOUQ1M0FBQjAwNUJDNzREIC8qIFVubGlua0NvbW1hbmQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkQxNzYyREYxNzY2ODZEOTAwRDgzNkE4IC8qIFVwU2FtcGxlci5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTMyMTE0LDYgKzMyMjg2LDcgQEAKIAkJCQlBNTZDNUI5QTE4
OUYzNDU3MDA4MkQxM0MgLyogV2ViQ29uc29sZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUNEN0UwNTIyMTY1MUMyODIwMEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0g
aW4gU291cmNlcyAqLywKIAkJCQkyRDNFRjQ0QjE5MTc5MTVDMDAwMzQxODQgLyogV2ViQ29yZUNB
TGF5ZXJFeHRyYXMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTVGNzk1MzFDRkNBM0QwMDBDQ0VE
OTMgLyogV2ViQ29yZUNyb3NzVGhyZWFkQ29waWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNE
QzY5RERCMTYzNzFGRDQwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmll
dy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQzY5REQ3MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJD
b3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QxMjdERUQx
NEYzMDk3RDAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93Lm1tIGluIFNvdXJjZXMg
Ki8sCkBAIC0zMjE4Nyw3ICszMjM2MCw2IEBACiAJCQkJMUExNDE0QjUxM0EwRjA1MDAwMTk5OTZD
IC8qIFdlYktpdEZvbnRGYW1pbHlOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlENzYxM0E1
MDE0NzRGMTNGMDBEQjg2MDYgLyogV2ViS2l0TmFtZWRGbG93LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDNDhBNkQwMTkxQzlENjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJQ0JDMkQyMkYxQ0U1Qjg5RDAwRDE4ODBCIC8qIFJlc291cmNlVGltaW5n
SW5mb3JtYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVERUJEQTMxNkZCOTA4NzAwODM2
RkUwIC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMzFDMEZGMjQwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRpb25F
dmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkNGMzMyRTBGMkI5QTI1MDA0QjY3OTUgLyog
V2ViTGF5ZXIubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50
Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNWQ4MGQyOTRmYmZiYzQyYTgxMWEyMDgyYmU3NzhhYTNj
MGU1ZjQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNB
cHBsZVBheVBheW1lbnRBdXRob3JpemVkRXZlbnRDdXN0b20uY3BwCkBAIC0wLDAgKzEsNDUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNBcHBsZVBheVBh
eW1lbnRBdXRob3JpemVkRXZlbnQuaCIKKworI2lmIEVOQUJMRShBUFBMRV9QQVkpCisKKyNpbmNs
dWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworSlNDOjpKU1ZhbHVlIEpTQXBwbGVQYXlQYXltZW50QXV0aG9yaXplZEV2ZW50OjpwYXltZW50
KEpTQzo6RXhlY1N0YXRlJiBleGVjKSBjb25zdAoreworICAgIGlmICghbV9wYXltZW50KQorICAg
ICAgICBtX3BheW1lbnQuc2V0KGV4ZWMudm0oKSwgdGhpcywgd3JhcHBlZCgpLnBheW1lbnQoKS50
b0pTKGV4ZWMpKTsKKworICAgIHJldHVybiBtX3BheW1lbnQuZ2V0KCk7Cit9CisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FwcGxlUGF5UGF5
bWVudE1ldGhvZFNlbGVjdGVkRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNBcHBsZVBheVBheW1lbnRNZXRob2RTZWxlY3RlZEV2ZW50Q3VzdG9tLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zMWEzY2M2NmNlMDE1ZjMwNDExMGUyZjllMjYzZTYxZjUzNmExYWEyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcHBsZVBheVBheW1lbnRN
ZXRob2RTZWxlY3RlZEV2ZW50Q3VzdG9tLmNwcApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQXBwbGVQYXlQYXltZW50TWV0aG9k
U2VsZWN0ZWRFdmVudC5oIgorCisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKworI2luY2x1ZGUgPHJ1
bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitKU1ZhbHVlIEpTQXBwbGVQYXlQYXltZW50TWV0aG9kU2VsZWN0
ZWRFdmVudDo6cGF5bWVudE1ldGhvZChFeGVjU3RhdGUmIGV4ZWMpIGNvbnN0Cit7CisgICAgaWYg
KCFtX3BheW1lbnRNZXRob2QpCisgICAgICAgIG1fcGF5bWVudE1ldGhvZC5zZXQoZXhlYy52bSgp
LCB0aGlzLCB3cmFwcGVkKCkucGF5bWVudE1ldGhvZCgpLnRvSlMoZXhlYykpOworCisgICAgcmV0
dXJuIG1fcGF5bWVudE1ldGhvZC5nZXQoKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNzaW9uQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNzaW9uQ3VzdG9tLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45MDhmZWMyMjY4NjMxODY3MGNkODc2ZmNlODQ5NzhhYTM4ZTkxOGM3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcHBsZVBheVNlc3Np
b25DdXN0b20uY3BwCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkpTQXBwbGVQYXlTZXNzaW9uLmgiCisKKyNpZiBFTkFCTEUoQVBQ
TEVfUEFZKQorCisjaW5jbHVkZSAiQXJyYXlWYWx1ZS5oIgorI2luY2x1ZGUgIkRpY3Rpb25hcnku
aCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIK
KyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworSlNWYWx1ZSBKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVT
aGlwcGluZ01ldGhvZFNlbGVjdGlvbihFeGVjU3RhdGUmIHN0YXRlKQoreworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7CisgICAgSlNBcHBsZVBheVNlc3Npb24qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTQXBwbGVQYXlTZXNzaW9uKj4odGhpc1ZhbHVlKTsK
KyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgIkFwcGxlUGF5U2Vzc2lvbiIsICJjb21w
bGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uIikpOworCisgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU0FwcGxlUGF5U2Vzc2lvbjo6aW5mbygpKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS5h
cmd1bWVudENvdW50KCkgPCAzKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJv
d1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKSk7
CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICB1aW50MTZfdCBzdGF0dXMgPSBjb252
ZXJ0PHVpbnQxNl90PihzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24p
OworICAgIGlmIChVTkxJS0VMWShzdGF0ZS5oYWRFeGNlcHRpb24oKSkpCisgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworCisgICAgRGljdGlvbmFyeSBuZXdUb3RhbCA9IHsgJnN0YXRlLCBz
dGF0ZS5hcmd1bWVudCgxKSB9OworICAgIGlmIChVTkxJS0VMWShzdGF0ZS5oYWRFeGNlcHRpb24o
KSkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgQXJyYXlWYWx1ZSBuZXdM
aW5lSXRlbXMgeyAmc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDIpIH07CisgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cisg
ICAgaW1wbC5jb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHN0YXR1cywgbmV3VG90YWws
IG5ld0xpbmVJdGVtcywgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKKwor
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitKU1ZhbHVlIEpTQXBwbGVQYXlTZXNzaW9u
Ojpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihFeGVjU3RhdGUmIHN0YXRlKQorewor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7CisgICAgSlNBcHBsZVBh
eVNlc3Npb24qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTQXBwbGVQYXlTZXNzaW9uKj4o
dGhpc1ZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgIkFwcGxlUGF5U2Vz
c2lvbiIsICJjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbiIpKTsKKworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNBcHBsZVBheVNlc3Npb246OmluZm8o
KSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBpZiAoVU5M
SUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgNCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSkpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgdWludDE2X3Qg
c3RhdHVzID0gY29udmVydDx1aW50MTZfdD4oc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLCBOb3Jt
YWxDb252ZXJzaW9uKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFkRXhjZXB0aW9uKCkpKQor
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIEFycmF5VmFsdWUgbmV3U2hpcHBp
bmdNZXRob2RzIHsgJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgxKSB9OworICAgIGlmIChVTkxJS0VM
WShzdGF0ZS5oYWRFeGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
CisgICAgRGljdGlvbmFyeSBuZXdUb3RhbCA9IHsgJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgyKSB9
OworICAgIGlmIChVTkxJS0VMWShzdGF0ZS5oYWRFeGNlcHRpb24oKSkpCisgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworCisgICAgQXJyYXlWYWx1ZSBuZXdMaW5lSXRlbXMgeyAmc3RhdGUs
IHN0YXRlLmFyZ3VtZW50KDMpIH07CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlv
bigpKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaW1wbC5jb21wbGV0ZVNo
aXBwaW5nQ29udGFjdFNlbGVjdGlvbihzdGF0dXMsIG5ld1NoaXBwaW5nTWV0aG9kcywgbmV3VG90
YWwsIG5ld0xpbmVJdGVtcywgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsK
KworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitKU1ZhbHVlIEpTQXBwbGVQYXlTZXNz
aW9uOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSkKK3sK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOworICAgIEpTQXBwbGVQ
YXlTZXNzaW9uKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0FwcGxlUGF5U2Vzc2lvbio+
KHRoaXNWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsICJBcHBsZVBheVNl
c3Npb24iLCAiY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uIikpOworCisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU0FwcGxlUGF5U2Vzc2lvbjo6aW5mbygp
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAyKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmRlY29kZSh0aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cigmc3RhdGUpKSk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBEaWN0aW9uYXJ5
IG5ld1RvdGFsID0geyAmc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApIH07CisgICAgaWYgKFVOTElL
RUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CisKKyAgICBBcnJheVZhbHVlIG5ld0xpbmVJdGVtcyB7ICZzdGF0ZSwgc3RhdGUuYXJndW1lbnQo
MSkgfTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFkRXhjZXB0aW9uKCkpKQorICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpbXBsLmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVj
dGlvbihuZXdUb3RhbCwgbmV3TGluZUl0ZW1zLCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKCZz
dGF0ZSwgZWMpOworCisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FwcGxlUGF5U2hpcHBp
bmdDb250YWN0U2VsZWN0ZWRFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0FwcGxlUGF5U2hpcHBpbmdDb250YWN0U2VsZWN0ZWRFdmVudEN1c3RvbS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzkwODVlZTlkNjQ5ZmQ4ZWE5Yjk3Mjg3ZGU3M2ZiZjFlNDU3MjE3ZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXBwbGVQYXlTaGlwcGlu
Z0NvbnRhY3RTZWxlY3RlZEV2ZW50Q3VzdG9tLmNwcApAQCAtMCwwICsxLDQ3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQXBwbGVQYXlTaGlwcGluZ0Nv
bnRhY3RTZWxlY3RlZEV2ZW50LmgiCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCisjaW5jbHVk
ZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTVmFsdWUgSlNBcHBsZVBheVNoaXBwaW5nQ29udGFj
dFNlbGVjdGVkRXZlbnQ6OnNoaXBwaW5nQ29udGFjdChFeGVjU3RhdGUmIGV4ZWMpIGNvbnN0Cit7
CisgICAgaWYgKCFtX3NoaXBwaW5nQ29udGFjdCkKKyAgICAgICAgbV9zaGlwcGluZ0NvbnRhY3Qu
c2V0KGV4ZWMudm0oKSwgdGhpcywgd3JhcHBlZCgpLnNoaXBwaW5nQ29udGFjdCgpLnRvSlMoZXhl
YykpOworCisgICAgcmV0dXJuIG1fc2hpcHBpbmdDb250YWN0LmdldCgpOworfQorCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcHBsZVBheVNo
aXBwaW5nTWV0aG9kU2VsZWN0ZWRFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0FwcGxlUGF5U2hpcHBpbmdNZXRob2RTZWxlY3RlZEV2ZW50Q3VzdG9tLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40N2IyYjc4YWM3ZDVmZDBkOTkwN2E0ZDA0OTc0YWUwYTlhYmU5MDQzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcHBsZVBheVNoaXBw
aW5nTWV0aG9kU2VsZWN0ZWRFdmVudEN1c3RvbS5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0FwcGxlUGF5U2hpcHBpbmdN
ZXRob2RTZWxlY3RlZEV2ZW50LmgiCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCisjaW5jbHVk
ZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvT2JqZWN0
Q29uc3RydWN0b3IuaD4KKyNpbmNsdWRlIDxydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgSlNW
YWx1ZSB0b0pTKEV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IFBheW1lbnRSZXF1ZXN0OjpTaGlwcGlu
Z01ldGhvZCYgc2hpcHBpbmdNZXRob2QpCit7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNvbnN0
cnVjdEVtcHR5T2JqZWN0KCZzdGF0ZSk7CisKKyAgICBvYmplY3QtPnB1dERpcmVjdChzdGF0ZS52
bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImxhYmVsIiksIGpzU3RyaW5nKCZz
dGF0ZSwgc2hpcHBpbmdNZXRob2QubGFiZWwpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChzdGF0
ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImRldGFpbCIpLCBqc1N0cmlu
Zygmc3RhdGUsIHNoaXBwaW5nTWV0aG9kLmRldGFpbCkpOworCisgICAgU3RyaW5nQnVpbGRlciBh
bW91bnRTdHJpbmc7CisgICAgYW1vdW50U3RyaW5nLmFwcGVuZE51bWJlcihzaGlwcGluZ01ldGhv
ZC5hbW91bnQgLyAxMDApOworICAgIGFtb3VudFN0cmluZy5hcHBlbmRMaXRlcmFsKCIuIik7CisK
KyAgICB1bnNpZ25lZCBkZWNpbWFscyA9IHNoaXBwaW5nTWV0aG9kLmFtb3VudCAlIDEwMDsKKyAg
ICBpZiAoZGVjaW1hbHMgPCAxMCkKKyAgICAgICAgYW1vdW50U3RyaW5nLmFwcGVuZExpdGVyYWwo
IjAiKTsKKyAgICBhbW91bnRTdHJpbmcuYXBwZW5kTnVtYmVyKGRlY2ltYWxzKTsKKyAgICBvYmpl
Y3QtPnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwg
ImFtb3VudCIpLCBqc1N0cmluZygmc3RhdGUsIGFtb3VudFN0cmluZy50b1N0cmluZygpKSk7CisK
KyAgICBvYmplY3QtPnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZzdGF0ZSwgImlkZW50aWZpZXIiKSwganNTdHJpbmcoJnN0YXRlLCBzaGlwcGluZ01ldGhvZC5p
ZGVudGlmaWVyKSk7CisKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitKU1ZhbHVlIEpTQXBwbGVQ
YXlTaGlwcGluZ01ldGhvZFNlbGVjdGVkRXZlbnQ6OnNoaXBwaW5nTWV0aG9kKEV4ZWNTdGF0ZSYg
ZXhlYykgY29uc3QKK3sKKyAgICBpZiAoIW1fc2hpcHBpbmdNZXRob2QpCisgICAgICAgIG1fc2hp
cHBpbmdNZXRob2Quc2V0KGV4ZWMudm0oKSwgdGhpcywgdG9KUyhleGVjLCB3cmFwcGVkKCkuc2hp
cHBpbmdNZXRob2QoKSkpOworCisgICAgcmV0dXJuIG1fc2hpcHBpbmdNZXRob2QuZ2V0KCk7Cit9
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCmluZGV4IDQxMGFjOGE2NzM1
NGRmYzdmYWVhYzc0OTI4NTJmZTZlZDE3MjYzZjQuLjhiZWM5YTRjZTM2ZTIzZDg0NzM1MjRkY2U4
NTk0NTk3MWYzMjU2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVz
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCkBAIC0zMSw2ICszMSwx
MSBAQCBXZWJLaXRBbmltYXRpb25FdmVudAogV2ViS2l0VHJhbnNpdGlvbkV2ZW50CiBXaGVlbEV2
ZW50CiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQKK0FwcGxlUGF5UGF5bWVudEF1dGhvcml6
ZWRFdmVudCBjb25kaXRpb25hbD1BUFBMRV9QQVkKK0FwcGxlUGF5UGF5bWVudE1ldGhvZFNlbGVj
dGVkRXZlbnQgY29uZGl0aW9uYWw9QVBQTEVfUEFZCitBcHBsZVBheVNoaXBwaW5nQ29udGFjdFNl
bGVjdGVkRXZlbnQgY29uZGl0aW9uYWw9QVBQTEVfUEFZCitBcHBsZVBheVNoaXBwaW5nTWV0aG9k
U2VsZWN0ZWRFdmVudCBjb25kaXRpb25hbD1BUFBMRV9QQVkKK0FwcGxlUGF5VmFsaWRhdGVNZXJj
aGFudEV2ZW50IGNvbmRpdGlvbmFsPUFQUExFX1BBWQogQXVkaW9Qcm9jZXNzaW5nRXZlbnQgY29u
ZGl0aW9uYWw9V0VCX0FVRElPCiBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQgY29uZGl0aW9u
YWw9V0VCX0FVRElPCiBNZWRpYVN0cmVhbUV2ZW50IGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggODQ0OTQzZmYxZTNm
ODI5NmI1ZDM1MjI4YWQyNTIxYWJiMWU5OGE3Ny4uZGNkMWJlYWM5NzJiMjk5Y2E2MzQxYjI4ZGM5
ZjBmMTdmNjFhNmJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5Lmlu
CkBAIC0xLDUgKzEsNiBAQAogbmFtZXNwYWNlPSJFdmVudFRhcmdldCIKIAorQXBwbGVQYXlTZXNz
aW9uIGNvbmRpdGlvbmFsPUFQUExFX1BBWQogQXVkaW9Ob2RlIGNvbmRpdGlvbmFsPVdFQl9BVURJ
TwogQXVkaW9Db250ZXh0IGNvbmRpdGlvbmFsPVdFQl9BVURJTwogQXVkaW9UcmFja0xpc3QgY29u
ZGl0aW9uYWw9VklERU9fVFJBQ0sK
</data>
<flag name="review"
          id="305618"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>