<?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>173040</bug_id>
          
          <creation_ts>2017-06-06 16:54:19 -0700</creation_ts>
          <short_desc>Merge TreeScopeAdopter into TreeScope</short_desc>
          <delta_ts>2017-06-07 01:02:52 -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>DOM</component>
          <version>Other</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1316312</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-06 16:54:19 -0700</bug_when>
    <thetext>There is no need to have a separate class for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316317</commentid>
    <comment_count>1</comment_count>
      <attachid>312141</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-06 17:04:59 -0700</bug_when>
    <thetext>Created attachment 312141
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316318</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-06-06 17:05:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/32602229&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316354</commentid>
    <comment_count>3</comment_count>
      <attachid>312152</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-06 18:53:11 -0700</bug_when>
    <thetext>Created attachment 312152
Fixed builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316369</commentid>
    <comment_count>4</comment_count>
      <attachid>312157</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-06 20:04:45 -0700</bug_when>
    <thetext>Created attachment 312157
Fixed Windows build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316401</commentid>
    <comment_count>5</comment_count>
      <attachid>312157</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-06-07 00:10:57 -0700</bug_when>
    <thetext>Comment on attachment 312157
Fixed Windows build

This is so much more straightforward and understandable. TreeScopeAdopter was not a great factoring. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316402</commentid>
    <comment_count>6</comment_count>
      <attachid>312157</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-07 00:34:16 -0700</bug_when>
    <thetext>Comment on attachment 312157
Fixed Windows build

Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316403</commentid>
    <comment_count>7</comment_count>
      <attachid>312157</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-07 01:02:50 -0700</bug_when>
    <thetext>Comment on attachment 312157
Fixed Windows build

Clearing flags on attachment: 312157

Committed r217876: &lt;http://trac.webkit.org/changeset/217876&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316404</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-07 01:02:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312141</attachid>
            <date>2017-06-06 17:04:59 -0700</date>
            <delta_ts>2017-06-06 18:53:10 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-173040-20170606170459.patch</filename>
            <type>text/plain</type>
            <size>52100</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDE3LTA2LTA2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1lcmdlIFRyZWVTY29wZUFkb3B0
ZXIgaW50byBUcmVlU2NvcGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MzA0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1lcmdlZCBUcmVlU2NvcGVBZG9wdGVyIGludG8gVHJlZVNjb3BlIHNpbmNlIGl0
J3MgdXNlZCBieSBUcmVlU2NvcGU6OmFkb3B0SWZOZWVkZWQuCisKKyAgICAgICAgTW9zdCBvZiBj
b2RlIGNoYW5nZXMgYXJlIGZvciBkaWRNb3ZlVG9OZXdEb2N1bWVudCB0YWtpbmcgdGhlIG5ldyBk
b2N1bWVudCBhcyBhbiBhcmd1bWVudCwKKyAgICAgICAgd2hpY2ggaXMgdXNlZCBieSBTaGFkb3dS
b290OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCB0byB1cGRhdGUgaXRzIGRvY3VtZW50IHNjb3BlLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGVyZSBzaG91bGQgYmUgbm8gYmVoYXZpb3Jh
bCBjaGFuZ2UuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAg
ICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOiBNb3ZlZCB0aGUgY29kZSB0byBtb3Zl
cyB0aGUgbm9kZSBsaXN0cyBhbmQgbm9kZSBpdGVyYXRvcnMgaGVyZQorICAgICAgICBmcm9tIFRy
ZWVTY29wZUFkb3B0ZXI6Om1vdmVOb2RlVG9OZXdEb2N1bWVudC4KKyAgICAgICAgKiBkb20vTm9k
ZS5oOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd1Jvb3Q6OmRpZE1vdmVUb05ld0RvY3VtZW50KTogTW92ZWQgdGhlIGNvZGUgdG8gdXBkYXRl
IHRoZSBkb2N1bWVudCBzY29wZSBoZXJlCisgICAgICAgIGZyb20gVHJlZVNjb3BlQWRvcHRlcjo6
bW92ZU5vZGVUb05ld0RvY3VtZW50LgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAg
ICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmFk
b3B0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjptb3ZlVHJlZVRvTmV3
U2NvcGUpOiBNb3ZlZCBmcm9tIFRyZWVTY29wZUFkb3B0ZXIuIE5vdyB0YWtlcyB0aGUgb2xkIHRy
ZWUgc2NvcGUgYW5kCisgICAgICAgIHRoZSBuZXcgdHJlZSBzY29wZSBhcyBhcmd1bWVudHMgKHRo
ZXkgdXNlZCB0byBiZSBtZW1iZXJzIG9mIFRyZWVTY29wZUFkb3B0ZXIpLiBBbHNvIG1lcmdlZCB1
cGRhdGVUcmVlU2NvcGUKKyAgICAgICAgaW50byB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAoV2Vi
Q29yZTo6VHJlZVNjb3BlOjplbnN1cmVEaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZCk6IE1v
dmVkIGZyb20gVHJlZVNjb3BlQWRvcHRlci4KKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6
bW92ZU5vZGVUb05ld0RvY3VtZW50KTogRGl0dG8uIFRoZSBjb2RlIHRvIGFkb3B0IG5vZGUgbGlz
dHMgYW5kIG5vZGUgaXRlcmF0b3JzIGhhdmUKKyAgICAgICAgYmVlbiBtb3ZlZCB0byBOb2RlOjpk
aWRNb3ZlVG9OZXdEb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6bW92ZVNo
YWRvd1RyZWVUb05ld0RvY3VtZW50KTogTW92ZWQgZnJvbSBUcmVlU2NvcGVBZG9wdGVyLgorICAg
ICAgICAqIGRvbS9UcmVlU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6ZW5z
dXJlRGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQpOgorICAgICAgICAqIGRvbS9UcmVlU2Nv
cGVBZG9wdGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vVHJlZVNjb3BlQWRvcHRlci5o
OiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50
KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojpk
aWRNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KTogR3JvdXBlZCByZWxhdGVk
IGZ1bmN0aW9uIGNhbGxzIG9uIG5ldy9vbGQgZG9jdW1lbnRzLgorICAgICAgICAqIGh0bWwvSFRN
TElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6
ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxQaWN0dXJlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGljdHVyZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAg
KiBodG1sL0hUTUxQaWN0dXJlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUZW1wbGF0ZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToK
KyAgICAgICAgKiBodG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6
ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURvY3VtZW50RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIHN2
Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50
OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1NWR0VsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHU1ZH
RWxlbWVudC5oOgorCiAyMDE3LTA1LTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBDb2RlR2VuZXJhdG9ySlMncyBJbnN0YW5jZU5lZWRzVmlzaXRDaGlsZHJlbiBz
aG91bGQgbm90IHJldHVybiB0cnVlIGp1c3QgYmVjYXVzZSBhIGNsYXNzIGlzIC8gZXh0ZW5kcyBF
dmVudFRhcmdldC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMTc2NDIpCisr
KyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTU2OSw3
ICsxNTY5LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9UcmFuc2l0aW9uRXZlbnQu
Y3BwCiAgICAgZG9tL1RyYXZlcnNhbC5jcHAKICAgICBkb20vVHJlZVNjb3BlLmNwcAotICAgIGRv
bS9UcmVlU2NvcGVBZG9wdGVyLmNwcAogICAgIGRvbS9UcmVlV2Fsa2VyLmNwcAogICAgIGRvbS9V
SUV2ZW50LmNwcAogICAgIGRvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmNwcApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjE3NjQyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NDg5LDggKzQ0ODksNiBAQAogCQlBNzc5NzkyOTBE
NkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Nzk3OTI1MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0ltYWdl
RGF0YS5oICovOyB9OwogCQlBNzdCNDFBMDEyRTY3NUE5MDA1NDM0M0QgLyogVGV4dEV2ZW50SW5w
dXRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NzdCNDE5RjEyRTY3NUE5MDA1NDM0M0QgLyogVGV4dEV2ZW50SW5wdXRUeXBlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc3RDAwMTIxMzNCMEFF
QjAwRDY2NThDIC8qIFRleHRDaGVja2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc3RDAwMTExMzNCMEFFQjAwRDY2NThDIC8qIFRleHRDaGVja2lu
Zy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE3
N0UxRkVGMTRBQUNCNkUwMDVCN0NCNiAvKiBUcmVlU2NvcGVBZG9wdGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3N0UxRkVEMTRBQUNCNkUwMDVC
N0NCNiAvKiBUcmVlU2NvcGVBZG9wdGVyLmNwcCAqLzsgfTsKLQkJQTc3RTFGRjAxNEFBQ0I2RTAw
NUI3Q0I2IC8qIFRyZWVTY29wZUFkb3B0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3N0UxRkVFMTRBQUNCNkUwMDVCN0NCNiAvKiBUcmVlU2NvcGVB
ZG9wdGVyLmggKi87IH07CiAJCUE3ODQ5NDFCMEI1RkU1MDcwMDFFMjM3QSAvKiBEYXRhVHJhbnNm
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4
NDk0MUEwQjVGRTUwNzAwMUUyMzdBIC8qIERhdGFUcmFuc2Zlci5jcHAgKi87IH07CiAJCUE3OEZF
MTNCMTIzNjZCMTAwMEFDRThEMCAvKiBTcGVsbENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4RkUxMzkxMjM2NkIxMDAwQUNFOEQwIC8q
IFNwZWxsQ2hlY2tlci5jcHAgKi87IH07CiAJCUE3OEZFMTNDMTIzNjZCMTAwMEFDRThEMCAvKiBT
cGVsbENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3OEZFMTNBMTIzNjZCMTAwMEFDRThEMCAvKiBTcGVsbENoZWNrZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI3NjYsOCArMTI3NjQs
NiBAQAogCQlBNzc5NzkyNTBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbWFnZURhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTc3QjQxOUYxMkU2NzVBOTAwNTQzNDNEIC8qIFRleHRFdmVudElucHV0
VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0RXZlbnRJbnB1dFR5
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc3RDAwMTExMzNCMEFFQjAwRDY2
NThDIC8qIFRleHRDaGVja2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZXh0Q2hlY2tpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTc3RTFGRUQxNEFB
Q0I2RTAwNUI3Q0I2IC8qIFRyZWVTY29wZUFkb3B0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVHJlZVNjb3BlQWRvcHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUE3N0UxRkVFMTRBQUNCNkUwMDVCN0NCNiAvKiBUcmVlU2NvcGVBZG9wdGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyZWVTY29wZUFkb3B0ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc4NDk0MUEwQjVGRTUwNzAwMUUyMzdBIC8q
IERhdGFUcmFuc2Zlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGF0YVRyYW5zZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc4RkUxMzkx
MjM2NkIxMDAwQUNFOEQwIC8qIFNwZWxsQ2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTcGVsbENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNzhGRTEzQTEyMzY2QjEwMDBBQ0U4RDAgLyogU3BlbGxDaGVja2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gU3BlbGxDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yNjAwMiw4ICsyNTk5OCw2IEBACiAJCQkJMzdGRDQyOTcxMTgzNjg0
NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExpbWl0LmggKi8sCiAJCQkJMTRENjRCNUExMzRBNUI2QjAw
RTU4RkRBIC8qIFRyZWVTY29wZS5jcHAgKi8sCiAJCQkJMTRENjRCNUIxMzRBNUI2QjAwRTU4RkRB
IC8qIFRyZWVTY29wZS5oICovLAotCQkJCUE3N0UxRkVEMTRBQUNCNkUwMDVCN0NCNiAvKiBUcmVl
U2NvcGVBZG9wdGVyLmNwcCAqLywKLQkJCQlBNzdFMUZFRTE0QUFDQjZFMDA1QjdDQjYgLyogVHJl
ZVNjb3BlQWRvcHRlci5oICovLAogCQkJCTg1NEZFNzJFMEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVl
V2Fsa2VyLmNwcCAqLywKIAkJCQk4NTRGRTcyRjBBMjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtl
ci5oICovLAogCQkJCTFBNzUwRDNDMEE5MERFMzUwMDBGRjIxNSAvKiBUcmVlV2Fsa2VyLmlkbCAq
LywKQEAgLTI5OTYwLDcgKzI5OTU0LDYgQEAKIAkJCQk4NTRGRTczNzBBMjI5N0JFMDA1OEQ3QUQg
LyogVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0ZENDI5ODExODM2ODQ2MDA5M0Mw
MjkgLyogVHJlZURlcHRoTGltaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RDY0QjVEMTM0QTVC
NkIwMEU1OEZEQSAvKiBUcmVlU2NvcGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUE3N0UxRkYwMTRB
QUNCNkUwMDVCN0NCNiAvKiBUcmVlU2NvcGVBZG9wdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NTRGRTczOTBBMjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkQyMzJDMDAxQTMyNkYwMjAwNkJGMkRCIC8qIFRVQ2FsbFNQSS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzM3NUQ3RkUxNjYzOTUxOTAwNjE4NEFCIC8qIFR5cGVBaGVhZC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zMzY4OSw3ICszMzY4Miw2IEBACiAJCQkJNDlFOTExRDEwRUY4NkQ0NzAwOUQwQ0FG
IC8qIFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NTRGRTczNjBBMjI5N0JFMDA1OEQ3QUQgLyogVHJhdmVyc2FsLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0RDY0QjVDMTM0QTVCNkIwMEU1OEZEQSAvKiBUcmVlU2NvcGUuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQTc3RTFGRUYxNEFBQ0I2RTAwNUI3Q0I2IC8qIFRyZWVTY29wZUFkb3B0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODU0RkU3MzgwQTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxr
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzM3NUQ3RkQxNjYzOTUxOTAwNjE4NEFCIC8qIFR5
cGVBaGVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxOTA5OUU2NDkyMDA1NkU1ODEg
LyogVHlwaW5nQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTUzMCw5ICsxNTMwLDEwIEBAIHZvaWQgRWxlbWVudDo6cGFy
c2VyRGlkU2V0QXR0cmlidXRlcygpCiB7CiB9CiAKLXZvaWQgRWxlbWVudDo6ZGlkTW92ZVRvTmV3
RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50KQordm9pZCBFbGVtZW50OjpkaWRNb3ZlVG9O
ZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkK
IHsKLSAgICBOb2RlOjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7CisgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJmRvY3VtZW50KCkgPT0gJm5ld0RvY3VtZW50
KTsKKyAgICBOb2RlOjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1l
bnQpOwogCiAgICAgaWYgKG9sZERvY3VtZW50LmluUXVpcmtzTW9kZSgpICE9IGRvY3VtZW50KCku
aW5RdWlya3NNb2RlKCkpIHsKICAgICAgICAgLy8gRWxlbWVudERhdGE6Om1fY2xhc3NOYW1lcyBv
ciBFbGVtZW50RGF0YTo6bV9pZEZvclN0eWxlUmVzb2x1dGlvbiBuZWVkIHRvIGJlIHVwZGF0ZWQg
d2l0aCB0aGUgcmlnaHQgY2FzZS4KQEAgLTE1NDMsNyArMTU0NCw3IEBAIHZvaWQgRWxlbWVudDo6
ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW0KICAgICB9CiAKICAgICBpZiAoVU5MSUtFTFkoaXNE
ZWZpbmVkQ3VzdG9tRWxlbWVudCgpKSkKLSAgICAgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVl
dWU6OmVucXVldWVBZG9wdGVkQ2FsbGJhY2tJZk5lZWRlZCgqdGhpcywgb2xkRG9jdW1lbnQsIGRv
Y3VtZW50KCkpOworICAgICAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5xdWV1ZUFk
b3B0ZWRDYWxsYmFja0lmTmVlZGVkKCp0aGlzLCBvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwog
fQogCiBib29sIEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZXMoKSBjb25zdApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCShyZXZpc2lvbiAyMTc2NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NjcsNyArNTY3LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBy
ZW1vdmVBbGxFdmVudExpc3RlbmVycygpIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZXJE
aWRTZXRBdHRyaWJ1dGVzKCk7Ci0gICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVu
dCYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9s
ZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBj
bGVhclRhYkluZGV4RXhwbGljaXRseUlmTmVlZGVkKCk7CiAgICAgdm9pZCBzZXRUYWJJbmRleEV4
cGxpY2l0bHkoaW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDIxNzY0MikKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgs
NiBAQAogI2luY2x1ZGUgIlRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNs
dWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCi0jaW5jbHVkZSAiVHJl
ZVNjb3BlQWRvcHRlci5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJYTUxO
U05hbWVzLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKQEAgLTE5MjUsMTQgKzE5MjQsMjIgQEAg
RXZlbnRUYXJnZXRJbnRlcmZhY2UgTm9kZTo6ZXZlbnRUYXJnZXRJbgogICAgIHJldHVybiBOb2Rl
RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwogfQogCi12b2lkIE5vZGU6OmRpZE1vdmVUb05ld0Rv
Y3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkKK3ZvaWQgTm9kZTo6ZGlkTW92ZVRvTmV3RG9j
dW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCiB7Ci0g
ICAgVHJlZVNjb3BlQWRvcHRlcjo6ZW5zdXJlRGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQo
b2xkRG9jdW1lbnQpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZkb2N1
bWVudCgpID09ICZuZXdEb2N1bWVudCk7CisgICAgVHJlZVNjb3BlOjplbnN1cmVEaWRNb3ZlVG9O
ZXdEb2N1bWVudFdhc0NhbGxlZChvbGREb2N1bWVudCk7CisKKyAgICBpZiAoaGFzUmFyZURhdGEo
KSkgeworICAgICAgICBpZiAoYXV0byogbm9kZUxpc3RzID0gcmFyZURhdGEoKS0+bm9kZUxpc3Rz
KCkpCisgICAgICAgICAgICBub2RlTGlzdHMtPmFkb3B0RG9jdW1lbnQob2xkRG9jdW1lbnQsIG5l
d0RvY3VtZW50KTsKKyAgICB9CisKKyAgICBvbGREb2N1bWVudC5tb3ZlTm9kZUl0ZXJhdG9yc1Rv
TmV3RG9jdW1lbnQoKnRoaXMsIG5ld0RvY3VtZW50KTsKIAogICAgIGlmIChhdXRvKiBldmVudFRh
cmdldERhdGEgPSB0aGlzLT5ldmVudFRhcmdldERhdGEoKSkgewogICAgICAgICBpZiAoIWV2ZW50
VGFyZ2V0RGF0YS0+ZXZlbnRMaXN0ZW5lck1hcC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGZv
ciAoYXV0byYgdHlwZSA6IGV2ZW50VGFyZ2V0RGF0YS0+ZXZlbnRMaXN0ZW5lck1hcC5ldmVudFR5
cGVzKCkpCi0gICAgICAgICAgICAgICAgZG9jdW1lbnQoKS5hZGRMaXN0ZW5lclR5cGVJZk5lZWRl
ZCh0eXBlKTsKKyAgICAgICAgICAgICAgICBuZXdEb2N1bWVudC5hZGRMaXN0ZW5lclR5cGVJZk5l
ZWRlZCh0eXBlKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTk0NCw3ICsxOTUxLDcgQEAgdm9p
ZCBOb2RlOjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudAogICAgIHVuc2lnbmVkIG51bVdo
ZWVsRXZlbnRIYW5kbGVycyA9IGV2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3VzZXdoZWVs
RXZlbnQpLnNpemUoKSArIGV2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50KS5z
aXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVdoZWVsRXZlbnRIYW5kbGVy
czsgKytpKSB7CiAgICAgICAgIG9sZERvY3VtZW50LmRpZFJlbW92ZVdoZWVsRXZlbnRIYW5kbGVy
KCp0aGlzKTsKLSAgICAgICAgZG9jdW1lbnQoKS5kaWRBZGRXaGVlbEV2ZW50SGFuZGxlcigqdGhp
cyk7CisgICAgICAgIG5ld0RvY3VtZW50LmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKCp0aGlzKTsK
ICAgICB9CiAKICAgICB1bnNpZ25lZCBudW1Ub3VjaEV2ZW50TGlzdGVuZXJzID0gMDsKQEAgLTE5
NTMsMTEgKzE5NjAsMTEgQEAgdm9pZCBOb2RlOjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVu
dAogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVRvdWNoRXZlbnRMaXN0ZW5lcnM7
ICsraSkgewogICAgICAgICBvbGREb2N1bWVudC5kaWRSZW1vdmVUb3VjaEV2ZW50SGFuZGxlcigq
dGhpcyk7Ci0gICAgICAgIGRvY3VtZW50KCkuZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIoKnRoaXMp
OworICAgICAgICBuZXdEb2N1bWVudC5kaWRBZGRUb3VjaEV2ZW50SGFuZGxlcigqdGhpcyk7CiAK
ICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpCiAgICAgICAgIG9sZERv
Y3VtZW50LnJlbW92ZVRvdWNoRXZlbnRMaXN0ZW5lcigqdGhpcyk7Ci0gICAgICAgIGRvY3VtZW50
KCkuYWRkVG91Y2hFdmVudExpc3RlbmVyKCp0aGlzKTsKKyAgICAgICAgbmV3RG9jdW1lbnQuYWRk
VG91Y2hFdmVudExpc3RlbmVyKCp0aGlzKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTk2OCwxOCAr
MTk3NSwxOCBAQCB2b2lkIE5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50CiAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtR2VzdHVyZUV2ZW50TGlzdGVuZXJzOyArK2kp
IHsKICAgICAgICAgb2xkRG9jdW1lbnQucmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIoKnRoaXMpOwot
ICAgICAgICBkb2N1bWVudCgpLmFkZFRvdWNoRXZlbnRIYW5kbGVyKCp0aGlzKTsKKyAgICAgICAg
bmV3RG9jdW1lbnQuYWRkVG91Y2hFdmVudEhhbmRsZXIoKnRoaXMpOwogICAgIH0KICNlbmRpZgog
CiAgICAgaWYgKGF1dG8qIHJlZ2lzdHJ5ID0gbXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCkpIHsK
ICAgICAgICAgZm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiAqcmVnaXN0cnkpCi0gICAgICAgICAg
ICBkb2N1bWVudCgpLmFkZE11dGF0aW9uT2JzZXJ2ZXJUeXBlcyhyZWdpc3RyYXRpb24tPm11dGF0
aW9uVHlwZXMoKSk7CisgICAgICAgICAgICBuZXdEb2N1bWVudC5hZGRNdXRhdGlvbk9ic2VydmVy
VHlwZXMocmVnaXN0cmF0aW9uLT5tdXRhdGlvblR5cGVzKCkpOwogICAgIH0KIAogICAgIGlmIChh
dXRvKiB0cmFuc2llbnRSZWdpc3RyeSA9IHRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
eSgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgcmVnaXN0cmF0aW9uIDogKnRyYW5zaWVudFJlZ2lz
dHJ5KQotICAgICAgICAgICAgZG9jdW1lbnQoKS5hZGRNdXRhdGlvbk9ic2VydmVyVHlwZXMocmVn
aXN0cmF0aW9uLT5tdXRhdGlvblR5cGVzKCkpOworICAgICAgICAgICAgbmV3RG9jdW1lbnQuYWRk
TXV0YXRpb25PYnNlcnZlclR5cGVzKHJlZ2lzdHJhdGlvbi0+bXV0YXRpb25UeXBlcygpKTsKICAg
ICB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05T
KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiAyMTc2NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MzEsNyArNjMxLDcgQEAgcHJvdGVjdGVkOgog
ICAgIH07CiAgICAgTm9kZShEb2N1bWVudCYsIENvbnN0cnVjdGlvblR5cGUpOwogCi0gICAgdmly
dHVhbCB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCk7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVu
dCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3Vi
cmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCB7IH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsMTUgKzEw
MiwxNyBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vCiAgICAgICAg
IGRvY3VtZW50KCkuZGlkUmVtb3ZlSW5Eb2N1bWVudFNoYWRvd1Jvb3QoKnRoaXMpOwogfQogCi12
b2lkIFNoYWRvd1Jvb3Q6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVu
dCkKK3ZvaWQgU2hhZG93Um9vdDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERv
Y3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCiB7Ci0gICAgQVNTRVJUKCZkb2N1bWVudCgp
ICE9ICZvbGREb2N1bWVudCk7Ci0gICAgQVNTRVJUKCZtX3N0eWxlU2NvcGUtPmRvY3VtZW50KCkg
PT0gJm9sZERvY3VtZW50KTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigm
ZG9jdW1lbnQoKSA9PSAmb2xkRG9jdW1lbnQgfHwgJmRvY3VtZW50KCkgPT0gJm5ld0RvY3VtZW50
KTsKKyAgICBzZXREb2N1bWVudFNjb3BlKG5ld0RvY3VtZW50KTsKKyAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTigmZG9jdW1lbnQoKSA9PSAmbmV3RG9jdW1lbnQpOworICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZtX3N0eWxlU2NvcGUtPmRvY3VtZW50KCkg
PT0gJm9sZERvY3VtZW50KTsKIAogICAgIC8vIFN0eWxlIHNjb3BlcyBhcmUgZG9jdW1lbnQgc3Bl
Y2lmaWMuCiAgICAgbV9zdHlsZVNjb3BlID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+
KCp0aGlzKTsKIAotICAgIERvY3VtZW50RnJhZ21lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9s
ZERvY3VtZW50KTsKKyAgICBEb2N1bWVudEZyYWdtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChv
bGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogfQogCiBTdHlsZTo6U2NvcGUmIFNoYWRvd1Jvb3Q6
OnN0eWxlU2NvcGUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCShyZXZpc2lvbiAyMTc2
NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAKICAgICBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRp
b25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2lu
dCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xk
RG9jdW1lbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1l
bnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSB7IGZhbHNlIH07CiAgICAgU2hhZG93Um9vdE1v
ZGUgbV90eXBlIHsgU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1RyZWVTY29wZS5jcHAJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAKKyNpbmNsdWRlICJBdHRyLmgiCiAj
aW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCkBAIC0zOCwxMiArMzksMTIgQEAKICNpbmNsdWRlICJI
VE1MTWFwRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIK
ICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiVHJlZVNjb3BlQWRvcHRlci5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MzcxLDkgKzM3Miw5NSBAQCB2b2lkIFRyZWVTY29wZTo6YWRvcHRJZk5lZWRlZChOb2RlJiBub2Rl
CiB7CiAgICAgQVNTRVJUKCFub2RlLmlzRG9jdW1lbnROb2RlKCkpOwogICAgIEFTU0VSVCghbm9k
ZS5tX2RlbGV0aW9uSGFzQmVndW4pOwotICAgIFRyZWVTY29wZUFkb3B0ZXIgYWRvcHRlcihub2Rl
LCAqdGhpcyk7Ci0gICAgaWYgKGFkb3B0ZXIubmVlZHNTY29wZUNoYW5nZSgpKQotICAgICAgICBh
ZG9wdGVyLmV4ZWN1dGUoKTsKKyAgICBUcmVlU2NvcGUmIHRyZWVTY29wZU9mTm9kZSA9IG5vZGUu
dHJlZVNjb3BlKCk7CisgICAgaWYgKHRoaXMgIT0gJnRyZWVTY29wZU9mTm9kZSkKKyAgICAgICAg
bW92ZVRyZWVUb05ld1Njb3BlKG5vZGUsIHRyZWVTY29wZU9mTm9kZSwgKnRoaXMpOworfQorCit2
b2lkIFRyZWVTY29wZTo6bW92ZVRyZWVUb05ld1Njb3BlKE5vZGUmIHJvb3QsIFRyZWVTY29wZSYg
b2xkU2NvcGUsIFRyZWVTY29wZSYgbmV3U2NvcGUpCit7CisgICAgQVNTRVJUKCZvbGRTY29wZSAh
PSAmbmV3U2NvcGUpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZyb290
LnRyZWVTY29wZSgpID09ICZvbGRTY29wZSk7CisKKyAgICAvLyBJZiBhbiBlbGVtZW50IGlzIG1v
dmVkIGZyb20gYSBkb2N1bWVudCBhbmQgdGhlbiBldmVudHVhbGx5IGJhY2sgYWdhaW4gdGhlIGNv
bGxlY3Rpb24gY2FjaGUgZm9yCisgICAgLy8gdGhhdCBlbGVtZW50IG1heSBjb250YWluIHN0YWxl
IGRhdGEgYXMgY2hhbmdlcyBtYWRlIHRvIGl0IHdpbGwgaGF2ZSB1cGRhdGVkIHRoZSBET01UcmVl
VmVyc2lvbgorICAgIC8vIG9mIHRoZSBkb2N1bWVudCBpdCB3YXMgbW92ZWQgdG8uIEJ5IGluY3Jl
YXNpbmcgdGhlIERPTVRyZWVWZXJzaW9uIG9mIHRoZSBkb25hdGluZyBkb2N1bWVudCBoZXJlCisg
ICAgLy8gd2UgZW5zdXJlIHRoYXQgdGhlIGNvbGxlY3Rpb24gY2FjaGUgd2lsbCBiZSBpbnZhbGlk
YXRlZCBhcyBuZWVkZWQgd2hlbiB0aGUgZWxlbWVudCBpcyBtb3ZlZCBiYWNrLgorICAgIERvY3Vt
ZW50JiBvbGREb2N1bWVudCA9IG9sZFNjb3BlLmRvY3VtZW50U2NvcGUoKTsKKyAgICBEb2N1bWVu
dCYgbmV3RG9jdW1lbnQgPSBuZXdTY29wZS5kb2N1bWVudFNjb3BlKCk7CisgICAgYm9vbCB3aWxs
TW92ZVRvTmV3RG9jdW1lbnQgPSAmb2xkRG9jdW1lbnQgIT0gJm5ld0RvY3VtZW50OworICAgIGlm
ICh3aWxsTW92ZVRvTmV3RG9jdW1lbnQpIHsKKyAgICAgICAgb2xkRG9jdW1lbnQuaW5jcmVtZW50
UmVmZXJlbmNpbmdOb2RlQ291bnQoKTsKKyAgICAgICAgb2xkRG9jdW1lbnQuaW5jRE9NVHJlZVZl
cnNpb24oKTsKKyAgICB9CisKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSAmcm9vdDsgbm9kZTsgbm9k
ZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUsICZyb290KSkgeworICAgICAgICBBU1NFUlQo
IW5vZGUtPmlzVHJlZVNjb3BlKCkpOworICAgICAgICBBU1NFUlQoJm5vZGUtPnRyZWVTY29wZSgp
ID09ICZvbGRTY29wZSk7CisgICAgICAgIG5vZGUtPnNldFRyZWVTY29wZShuZXdTY29wZSk7CisK
KyAgICAgICAgaWYgKHdpbGxNb3ZlVG9OZXdEb2N1bWVudCkKKyAgICAgICAgICAgIG1vdmVOb2Rl
VG9OZXdEb2N1bWVudCgqbm9kZSwgb2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKKyAgICAgICAg
ZWxzZSBpZiAobm9kZS0+aGFzUmFyZURhdGEoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIG5v
ZGVMaXN0cyA9IG5vZGUtPnJhcmVEYXRhKCktPm5vZGVMaXN0cygpKQorICAgICAgICAgICAgICAg
IG5vZGVMaXN0cy0+YWRvcHRUcmVlU2NvcGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
aXM8RWxlbWVudD4oKm5vZGUpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYg
KG5vZGUtPmhhc1N5bnRoZXRpY0F0dHJDaGlsZE5vZGVzKCkpIHsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgYXR0ciA6IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKS5hdHRyTm9kZUxpc3QoKSkKKyAg
ICAgICAgICAgICAgICBtb3ZlVHJlZVRvTmV3U2NvcGUoKmF0dHIsIG9sZFNjb3BlLCBuZXdTY29w
ZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYXV0byogc2hhZG93ID0gbm9kZS0+c2hhZG93
Um9vdCgpKSB7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigm
c2hhZG93LT5kb2N1bWVudCgpID09ICZvbGREb2N1bWVudCk7CisgICAgICAgICAgICBzaGFkb3ct
PnNldFBhcmVudFRyZWVTY29wZShuZXdTY29wZSk7CisgICAgICAgICAgICBpZiAod2lsbE1vdmVU
b05ld0RvY3VtZW50KQorICAgICAgICAgICAgICAgIG1vdmVTaGFkb3dUcmVlVG9OZXdEb2N1bWVu
dCgqc2hhZG93LCBvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOworICAgICAgICB9CisgICAgfQor
CisgICAgaWYgKHdpbGxNb3ZlVG9OZXdEb2N1bWVudCkKKyAgICAgICAgb2xkRG9jdW1lbnQuZGVj
cmVtZW50UmVmZXJlbmNpbmdOb2RlQ291bnQoKTsKK30KKworI2lmICFBU1NFUlRfRElTQUJMRUQg
fHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCitzdGF0aWMgYm9vbCBkaWRNb3ZlVG9OZXdE
b2N1bWVudFdhc0NhbGxlZCA9IGZhbHNlOworc3RhdGljIERvY3VtZW50KiBvbGREb2N1bWVudERp
ZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkV2l0aCA9IG51bGxwdHI7CisKK3ZvaWQgVHJlZVNj
b3BlOjplbnN1cmVEaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZChEb2N1bWVudCYgb2xkRG9j
dW1lbnQpCit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRpZE1vdmVU
b05ld0RvY3VtZW50V2FzQ2FsbGVkKTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTigmb2xkRG9jdW1lbnQgPT0gb2xkRG9jdW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0Nh
bGxlZFdpdGgpOworICAgIGRpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkID0gdHJ1ZTsKK30K
KyNlbmRpZgorCit2b2lkIFRyZWVTY29wZTo6bW92ZU5vZGVUb05ld0RvY3VtZW50KE5vZGUmIG5v
ZGUsIERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQoreworICAg
IEFTU0VSVCghbm9kZS5pc0Nvbm5lY3RlZCgpIHx8ICZvbGREb2N1bWVudCAhPSAmbmV3RG9jdW1l
bnQpOworCisgICAgbmV3RG9jdW1lbnQuaW5jcmVtZW50UmVmZXJlbmNpbmdOb2RlQ291bnQoKTsK
KyAgICBvbGREb2N1bWVudC5kZWNyZW1lbnRSZWZlcmVuY2luZ05vZGVDb3VudCgpOworCisjaWYg
IUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKKyAgICBkaWRN
b3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZCA9IGZhbHNlOworICAgIG9sZERvY3VtZW50RGlkTW92
ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWRXaXRoID0gJm9sZERvY3VtZW50OworI2VuZGlmCisKKyAg
ICBub2RlLmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7Cisg
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oZGlkTW92ZVRvTmV3RG9jdW1lbnRX
YXNDYWxsZWQpOworfQorCit2b2lkIFRyZWVTY29wZTo6bW92ZVNoYWRvd1RyZWVUb05ld0RvY3Vt
ZW50KFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QsIERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1l
bnQmIG5ld0RvY3VtZW50KQoreworICAgIGZvciAoTm9kZSogbm9kZSA9ICZzaGFkb3dSb290OyBu
b2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSwgJnNoYWRvd1Jvb3QpKSB7Cisg
ICAgICAgIG1vdmVOb2RlVG9OZXdEb2N1bWVudCgqbm9kZSwgb2xkRG9jdW1lbnQsIG5ld0RvY3Vt
ZW50KTsKKyAgICAgICAgaWYgKGF1dG8qIHNoYWRvdyA9IG5vZGUtPnNoYWRvd1Jvb3QoKSkKKyAg
ICAgICAgICAgIG1vdmVTaGFkb3dUcmVlVG9OZXdEb2N1bWVudCgqc2hhZG93LCBvbGREb2N1bWVu
dCwgbmV3RG9jdW1lbnQpOworICAgIH0KIH0KIAogc3RhdGljIEVsZW1lbnQqIGZvY3VzZWRGcmFt
ZU93bmVyRWxlbWVudChGcmFtZSogZm9jdXNlZEZyYW1lLCBGcmFtZSogY3VycmVudEZyYW1lKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSwxMSBAQCBw
dWJsaWM6CiAKICAgICAvLyBVc2VkIGJ5IHRoZSBiYXNpYyBET00gbXV0YXRpb24gbWV0aG9kcyAo
ZS5nLiwgYXBwZW5kQ2hpbGQoKSkuCiAgICAgdm9pZCBhZG9wdElmTmVlZGVkKE5vZGUmKTsKKyNp
ZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQorICAgIHN0
YXRpYyB2b2lkIGVuc3VyZURpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkKERvY3VtZW50JiBv
bGREb2N1bWVudCk7CisjZWxzZQorICAgIHN0YXRpYyB2b2lkIGVuc3VyZURpZE1vdmVUb05ld0Rv
Y3VtZW50V2FzQ2FsbGVkKCkgeyB9CisjZW5kaWYKIAogICAgIENvbnRhaW5lck5vZGUmIHJvb3RO
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9yb290Tm9kZTsgfQogCkBAIC0xMTgsNiArMTIzLDEwIEBA
IHByb3RlY3RlZDoKICAgICBOb2RlKiBub2RlRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBj
bGllbnRQb2ludCwgTGF5b3V0UG9pbnQqIGxvY2FsUG9pbnQpOwogCiBwcml2YXRlOgorICAgIHZv
aWQgbW92ZVRyZWVUb05ld1Njb3BlKE5vZGUmLCBUcmVlU2NvcGUmIG9sZFNjb3BlLCBUcmVlU2Nv
cGUmIG5ld1Njb3BlKTsKKyAgICB2b2lkIG1vdmVOb2RlVG9OZXdEb2N1bWVudChOb2RlJiwgRG9j
dW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpOworICAgIHZvaWQgbW92
ZVNoYWRvd1RyZWVUb05ld0RvY3VtZW50KFNoYWRvd1Jvb3QmLCBEb2N1bWVudCYgb2xkRG9jdW1l
bnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCk7CisKICAgICBDb250YWluZXJOb2RlJiBtX3Jvb3RO
b2RlOwogICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RG9jdW1lbnQ+IG1fZG9jdW1lbnRTY29w
ZTsKICAgICBUcmVlU2NvcGUqIG1fcGFyZW50VHJlZVNjb3BlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTM3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9y
ZykKLSAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9y
ZykKLSAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykK
LSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4g
KGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiVHJlZVNjb3BlQWRvcHRlci5oIgotCi0jaW5jbHVkZSAiQXR0ci5oIgotI2luY2x1ZGUgIkVs
ZW1lbnRSYXJlRGF0YS5oIgotI2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi0vLyBGSVhNRTogRG8gd2UgZXZlciBjaGFuZ2UgdHJlZSBzY29wZXMgZXhj
ZXB0IGJldHdlZW4gZG9jdW1lbnRzPwotdm9pZCBUcmVlU2NvcGVBZG9wdGVyOjptb3ZlVHJlZVRv
TmV3U2NvcGUoTm9kZSYgcm9vdCkgY29uc3QKLXsKLSAgICBBU1NFUlQobmVlZHNTY29wZUNoYW5n
ZSgpKTsKLQotICAgIC8vIElmIGFuIGVsZW1lbnQgaXMgbW92ZWQgZnJvbSBhIGRvY3VtZW50IGFu
ZCB0aGVuIGV2ZW50dWFsbHkgYmFjayBhZ2FpbiB0aGUgY29sbGVjdGlvbiBjYWNoZSBmb3IKLSAg
ICAvLyB0aGF0IGVsZW1lbnQgbWF5IGNvbnRhaW4gc3RhbGUgZGF0YSBhcyBjaGFuZ2VzIG1hZGUg
dG8gaXQgd2lsbCBoYXZlIHVwZGF0ZWQgdGhlIERPTVRyZWVWZXJzaW9uCi0gICAgLy8gb2YgdGhl
IGRvY3VtZW50IGl0IHdhcyBtb3ZlZCB0by4gQnkgaW5jcmVhc2luZyB0aGUgRE9NVHJlZVZlcnNp
b24gb2YgdGhlIGRvbmF0aW5nIGRvY3VtZW50IGhlcmUKLSAgICAvLyB3ZSBlbnN1cmUgdGhhdCB0
aGUgY29sbGVjdGlvbiBjYWNoZSB3aWxsIGJlIGludmFsaWRhdGVkIGFzIG5lZWRlZCB3aGVuIHRo
ZSBlbGVtZW50IGlzIG1vdmVkIGJhY2suCi0gICAgRG9jdW1lbnQmIG9sZERvY3VtZW50ID0gbV9v
bGRTY29wZS5kb2N1bWVudFNjb3BlKCk7Ci0gICAgRG9jdW1lbnQmIG5ld0RvY3VtZW50ID0gbV9u
ZXdTY29wZS5kb2N1bWVudFNjb3BlKCk7Ci0gICAgYm9vbCB3aWxsTW92ZVRvTmV3RG9jdW1lbnQg
PSAmb2xkRG9jdW1lbnQgIT0gJm5ld0RvY3VtZW50OwotICAgIGlmICh3aWxsTW92ZVRvTmV3RG9j
dW1lbnQpIHsKLSAgICAgICAgb2xkRG9jdW1lbnQuaW5jcmVtZW50UmVmZXJlbmNpbmdOb2RlQ291
bnQoKTsKLSAgICAgICAgb2xkRG9jdW1lbnQuaW5jRE9NVHJlZVZlcnNpb24oKTsKLSAgICB9Ci0K
LSAgICBmb3IgKE5vZGUqIG5vZGUgPSAmcm9vdDsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6
Om5leHQoKm5vZGUsICZyb290KSkgewotICAgICAgICB1cGRhdGVUcmVlU2NvcGUoKm5vZGUpOwot
Ci0gICAgICAgIGlmICh3aWxsTW92ZVRvTmV3RG9jdW1lbnQpCi0gICAgICAgICAgICBtb3ZlTm9k
ZVRvTmV3RG9jdW1lbnQoKm5vZGUsIG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7Ci0gICAgICAg
IGVsc2UgaWYgKG5vZGUtPmhhc1JhcmVEYXRhKCkpIHsKLSAgICAgICAgICAgIE5vZGVSYXJlRGF0
YSogcmFyZURhdGEgPSBub2RlLT5yYXJlRGF0YSgpOwotICAgICAgICAgICAgaWYgKHJhcmVEYXRh
LT5ub2RlTGlzdHMoKSkKLSAgICAgICAgICAgICAgICByYXJlRGF0YS0+bm9kZUxpc3RzKCktPmFk
b3B0VHJlZVNjb3BlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KCpu
b2RlKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChub2RlLT5oYXNTeW50
aGV0aWNBdHRyQ2hpbGROb2RlcygpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGF0dHIgOiBk
b3duY2FzdDxFbGVtZW50Pigqbm9kZSkuYXR0ck5vZGVMaXN0KCkpCi0gICAgICAgICAgICAgICAg
bW92ZVRyZWVUb05ld1Njb3BlKCphdHRyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChhdXRv
KiBzaGFkb3cgPSBub2RlLT5zaGFkb3dSb290KCkpIHsKLSAgICAgICAgICAgIHNoYWRvdy0+c2V0
UGFyZW50VHJlZVNjb3BlKG1fbmV3U2NvcGUpOwotICAgICAgICAgICAgaWYgKHdpbGxNb3ZlVG9O
ZXdEb2N1bWVudCkKLSAgICAgICAgICAgICAgICBtb3ZlU2hhZG93VHJlZVRvTmV3RG9jdW1lbnQo
KnNoYWRvdywgb2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGlmICh3aWxsTW92ZVRvTmV3RG9jdW1lbnQpCi0gICAgICAgIG9sZERvY3VtZW50LmRlY3Jl
bWVudFJlZmVyZW5jaW5nTm9kZUNvdW50KCk7Ci19Ci0KLXZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6
bW92ZVNoYWRvd1RyZWVUb05ld0RvY3VtZW50KFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QsIERvY3Vt
ZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBjb25zdAotewotICAgIGZv
ciAoTm9kZSogbm9kZSA9ICZzaGFkb3dSb290OyBub2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6
bmV4dCgqbm9kZSwgJnNoYWRvd1Jvb3QpKSB7Ci0gICAgICAgIG1vdmVOb2RlVG9OZXdEb2N1bWVu
dCgqbm9kZSwgb2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKLSAgICAgICAgaWYgKGF1dG8qIHNo
YWRvdyA9IG5vZGUtPnNoYWRvd1Jvb3QoKSkKLSAgICAgICAgICAgIG1vdmVTaGFkb3dUcmVlVG9O
ZXdEb2N1bWVudCgqc2hhZG93LCBvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwotICAgIH0KLX0K
LQotI2lmbmRlZiBOREVCVUcKLXN0YXRpYyBib29sIGRpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2Fs
bGVkID0gZmFsc2U7Ci1zdGF0aWMgRG9jdW1lbnQqIG9sZERvY3VtZW50RGlkTW92ZVRvTmV3RG9j
dW1lbnRXYXNDYWxsZWRXaXRoID0gbnVsbHB0cjsKLQotdm9pZCBUcmVlU2NvcGVBZG9wdGVyOjpl
bnN1cmVEaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZChEb2N1bWVudCYgb2xkRG9jdW1lbnQp
Ci17Ci0gICAgQVNTRVJUKCFkaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZCk7Ci0gICAgQVNT
RVJUX1VOVVNFRChvbGREb2N1bWVudCwgJm9sZERvY3VtZW50ID09IG9sZERvY3VtZW50RGlkTW92
ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWRXaXRoKTsKLSAgICBkaWRNb3ZlVG9OZXdEb2N1bWVudFdh
c0NhbGxlZCA9IHRydWU7Ci19Ci0jZW5kaWYKLQotaW5saW5lIHZvaWQgVHJlZVNjb3BlQWRvcHRl
cjo6dXBkYXRlVHJlZVNjb3BlKE5vZGUmIG5vZGUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFub2Rl
LmlzVHJlZVNjb3BlKCkpOwotICAgIEFTU0VSVCgmbm9kZS50cmVlU2NvcGUoKSA9PSAmbV9vbGRT
Y29wZSk7Ci0gICAgbm9kZS5zZXRUcmVlU2NvcGUobV9uZXdTY29wZSk7Ci19Ci0KLWlubGluZSB2
b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVOb2RlVG9OZXdEb2N1bWVudChOb2RlJiBub2RlLCBE
b2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkgY29uc3QKLXsKLSAg
ICBBU1NFUlQoIW5vZGUuaXNDb25uZWN0ZWQoKSB8fCAmb2xkRG9jdW1lbnQgIT0gJm5ld0RvY3Vt
ZW50KTsKLQotICAgIG5ld0RvY3VtZW50LmluY3JlbWVudFJlZmVyZW5jaW5nTm9kZUNvdW50KCk7
Ci0gICAgb2xkRG9jdW1lbnQuZGVjcmVtZW50UmVmZXJlbmNpbmdOb2RlQ291bnQoKTsKLQotICAg
IGlmIChub2RlLmhhc1JhcmVEYXRhKCkpIHsKLSAgICAgICAgTm9kZVJhcmVEYXRhKiByYXJlRGF0
YSA9IG5vZGUucmFyZURhdGEoKTsKLSAgICAgICAgaWYgKGF1dG8qIG5vZGVMaXN0cyA9IHJhcmVE
YXRhLT5ub2RlTGlzdHMoKSkKLSAgICAgICAgICAgIG5vZGVMaXN0cy0+YWRvcHREb2N1bWVudChv
bGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwotICAgIH0KLQotICAgIG9sZERvY3VtZW50Lm1vdmVO
b2RlSXRlcmF0b3JzVG9OZXdEb2N1bWVudChub2RlLCBuZXdEb2N1bWVudCk7Ci0KLSAgICBpZiAo
aXM8U2hhZG93Um9vdD4obm9kZSkpCi0gICAgICAgIGRvd25jYXN0PFNoYWRvd1Jvb3Q+KG5vZGUp
LnNldERvY3VtZW50U2NvcGUobmV3RG9jdW1lbnQpOwotCi0jaWZuZGVmIE5ERUJVRwotICAgIGRp
ZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkID0gZmFsc2U7Ci0gICAgb2xkRG9jdW1lbnREaWRN
b3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZFdpdGggPSAmb2xkRG9jdW1lbnQ7Ci0jZW5kaWYKLQot
ICAgIG5vZGUuZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOwotICAgIEFTU0VSVChk
aWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZCk7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZUFkb3B0ZXIuaAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dlYkNv
cmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDY1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKLSAq
ICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAq
ICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6
Ly93d3cudG9yY2htb2JpbGUuY29tLykKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIk5vZGUuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBUcmVlU2NvcGU7Ci0KLWNsYXNzIFRyZWVT
Y29wZUFkb3B0ZXIgewotcHVibGljOgotICAgIGV4cGxpY2l0IFRyZWVTY29wZUFkb3B0ZXIoTm9k
ZSYgdG9BZG9wdCwgVHJlZVNjb3BlJiBuZXdTY29wZSk7Ci0KLSAgICB2b2lkIGV4ZWN1dGUoKSBj
b25zdCB7IG1vdmVUcmVlVG9OZXdTY29wZShtX3RvQWRvcHQpOyB9Ci0gICAgYm9vbCBuZWVkc1Nj
b3BlQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gJm1fb2xkU2NvcGUgIT0gJm1fbmV3U2NvcGU7IH0K
LQotI2lmZGVmIE5ERUJVRwotICAgIHN0YXRpYyB2b2lkIGVuc3VyZURpZE1vdmVUb05ld0RvY3Vt
ZW50V2FzQ2FsbGVkKERvY3VtZW50JikgeyB9Ci0jZWxzZQotICAgIHN0YXRpYyB2b2lkIGVuc3Vy
ZURpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkKERvY3VtZW50Jik7Ci0jZW5kaWYKLQotcHJp
dmF0ZToKLSAgICB2b2lkIHVwZGF0ZVRyZWVTY29wZShOb2RlJikgY29uc3Q7Ci0gICAgdm9pZCBt
b3ZlVHJlZVRvTmV3U2NvcGUoTm9kZSYpIGNvbnN0OwotICAgIHZvaWQgbW92ZVNoYWRvd1RyZWVU
b05ld0RvY3VtZW50KFNoYWRvd1Jvb3QmLCBEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50
JiBuZXdEb2N1bWVudCkgY29uc3Q7Ci0gICAgdm9pZCBtb3ZlTm9kZVRvTmV3RG9jdW1lbnQoTm9k
ZSYsIERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBjb25zdDsK
LQotICAgIE5vZGUmIG1fdG9BZG9wdDsKLSAgICBUcmVlU2NvcGUmIG1fbmV3U2NvcGU7Ci0gICAg
VHJlZVNjb3BlJiBtX29sZFNjb3BlOwotfTsKLQotaW5saW5lIFRyZWVTY29wZUFkb3B0ZXI6OlRy
ZWVTY29wZUFkb3B0ZXIoTm9kZSYgdG9BZG9wdCwgVHJlZVNjb3BlJiBuZXdTY29wZSkKLSAgICA6
IG1fdG9BZG9wdCh0b0Fkb3B0KQotICAgICwgbV9uZXdTY29wZShuZXdTY29wZSkKLSAgICAsIG1f
b2xkU2NvcGUodG9BZG9wdC50cmVlU2NvcGUoKSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyMTc2NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsMTIgKzEyMiwxMyBAQCB2b2lkIEhUTUxG
aWVsZFNldEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlCiAgICAgICAgIHVwZGF0ZUZyb21Db250cm9s
RWxlbWVudHNBbmNlc3RvckRpc2FibGVkU3RhdGVVbmRlcigqbGVnZW5kLCB0cnVlKTsKIH0KIAot
dm9pZCBIVE1MRmllbGRTZXRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYg
b2xkRG9jdW1lbnQpCit2b2lkIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3Vt
ZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogewotICAg
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50
KTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigmZG9jdW1lbnQoKSA9PSAm
bmV3RG9jdW1lbnQpOworICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05ld0Rv
Y3VtZW50KG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7CiAgICAgaWYgKG1faGFzRGlzYWJsZWRB
dHRyaWJ1dGUpIHsKICAgICAgICAgb2xkRG9jdW1lbnQucmVtb3ZlRGlzYWJsZWRGaWVsZHNldEVs
ZW1lbnQoKTsKLSAgICAgICAgZG9jdW1lbnQoKS5hZGREaXNhYmxlZEZpZWxkc2V0RWxlbWVudCgp
OworICAgICAgICBuZXdEb2N1bWVudC5hZGREaXNhYmxlZEZpZWxkc2V0RWxlbWVudCgpOwogICAg
IH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgJ
KHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKSBmaW5hbDsKICAgICB2b2lkIGRpc2FibGVkU3Rh
dGVDaGFuZ2VkKCkgZmluYWw7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRD
aGFuZ2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBv
bGREb2N1bWVudCkgZmluYWw7CisgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVu
dCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkgZmluYWw7CiAKICAgICBib29s
IG1hdGNoZXNWYWxpZFBzZXVkb0NsYXNzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBtYXRjaGVz
SW52YWxpZFBzZXVkb0NsYXNzKCkgY29uc3QgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDIxNzY0MikKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI1MCwxMCArMjUwLDEwIEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6
ZGlkQXR0YWNoUmUKICAgICB9CiB9CiAKLXZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlk
TW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50KQordm9pZCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQs
IERvY3VtZW50JiBuZXdEb2N1bWVudCkKIHsKICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmRp
ZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsKLSAgICBIVE1MRWxlbWVudDo6ZGlkTW92
ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOworICAgIEhUTUxFbGVtZW50OjpkaWRNb3ZlVG9O
ZXdEb2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogfQogCiBzdGF0aWMgdm9pZCBh
ZGRJbnZhbGlkRWxlbWVudFRvQW5jZXN0b3JGcm9tSW5zZXJ0aW9uUG9pbnQoY29uc3QgSFRNTEZv
cm1Db250cm9sRWxlbWVudCYgZWxlbWVudCwgQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAko
cmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw3ICsxMzgsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9k
ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRJbnNlcnRpbmdTdWJ0cmVlKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBE
b2N1bWVudCYgbmV3RG9jdW1lbnQpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzdXBwb3J0c0ZvY3Vz
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJk
RXZlbnQmKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5jcHAJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODU5LDE0ICs4NTksMTQgQEAgdm9p
ZCBIVE1MRm9ybUVsZW1lbnQ6OnJlc3VtZUZyb21Eb2N1bWVudAogICAgIHJlc2V0QXNzb2NpYXRl
ZEZvcm1Db250cm9sRWxlbWVudHMoKTsKIH0KIAotdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmRpZE1v
dmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkKK3ZvaWQgSFRNTEZvcm1FbGVt
ZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50
JiBuZXdEb2N1bWVudCkKIHsKICAgICBpZiAoIXNob3VsZEF1dG9jb21wbGV0ZSgpKSB7CiAgICAg
ICAgIG9sZERvY3VtZW50LnVucmVnaXN0ZXJGb3JEb2N1bWVudFN1c3BlbnNpb25DYWxsYmFja3Mo
dGhpcyk7CiAgICAgICAgIGRvY3VtZW50KCkucmVnaXN0ZXJGb3JEb2N1bWVudFN1c3BlbnNpb25D
YWxsYmFja3ModGhpcyk7CiAgICAgfQogCi0gICAgSFRNTEVsZW1lbnQ6OmRpZE1vdmVUb05ld0Rv
Y3VtZW50KG9sZERvY3VtZW50KTsKKyAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1l
bnQob2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKIH0KIAogYm9vbCBIVE1MRm9ybUVsZW1lbnQ6
OnNob3VsZEF1dG9jb21wbGV0ZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmgJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCByZXN1bWVGcm9tRG9jdW1lbnRTdXNwZW5zaW9uKCkgZmluYWw7CiAKLSAg
ICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkgZmluYWw7
CisgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERv
Y3VtZW50JiBuZXdEb2N1bWVudCkgZmluYWw7CiAKICAgICB2b2lkIGNvcHlOb25BdHRyaWJ1dGVQ
cm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIGZpbmFsOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIxNzY0MikKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU0NSwxMCArNTQ1LDEwIEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6YWRkU3VicmVzb3Vy
Y2VBdHQKICAgICBhZGRTdWJyZXNvdXJjZVVSTCh1cmxzLCBkb2N1bWVudCgpLmNvbXBsZXRlVVJM
KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odXNlbWFwQXR0cikpKTsKIH0KIAotdm9p
ZCBIVE1MSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9j
dW1lbnQpCit2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3Vt
ZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogewogICAgIG1faW1hZ2VM
b2FkZXIuZWxlbWVudERpZE1vdmVUb05ld0RvY3VtZW50KCk7Ci0gICAgSFRNTEVsZW1lbnQ6OmRp
ZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsKKyAgICBIVE1MRWxlbWVudDo6ZGlkTW92
ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKIH0KIAogYm9vbCBIVE1M
SW1hZ2VFbGVtZW50Ojppc1NlcnZlck1hcCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAg
cHVibGljOgogcHJvdGVjdGVkOgogICAgIEhUTUxJbWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50KiA9IDApOwogCi0gICAgdm9pZCBkaWRN
b3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYg
bmV3RG9jdW1lbnQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MTc2NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTIyLDMxICsxNTIyLDI2IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6
cmVtb3ZlZEZyb20oQ29udGEKICNlbmRpZgogfQogCi12b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRp
ZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkKK3ZvaWQgSFRNTElucHV0
RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1
bWVudCYgbmV3RG9jdW1lbnQpCiB7CiAgICAgaWYgKGltYWdlTG9hZGVyKCkpCiAgICAgICAgIGlt
YWdlTG9hZGVyKCktPmVsZW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudCgpOwogCi0gICAgYm9vbCBu
ZWVkc1N1c3BlbnNpb25DYWxsYmFjayA9IHRoaXMtPm5lZWRzU3VzcGVuc2lvbkNhbGxiYWNrKCk7
CiAgICAgLy8gQWx3YXlzIHVucmVnaXN0ZXIgZm9yIGNhY2hlIGNhbGxiYWNrcyB3aGVuIGxlYXZp
bmcgYSBkb2N1bWVudCwgZXZlbiBpZiB3ZSB3b3VsZCBvdGhlcndpc2UgbGlrZSB0byBiZSByZWdp
c3RlcmVkCi0gICAgaWYgKG5lZWRzU3VzcGVuc2lvbkNhbGxiYWNrKQorICAgIGlmIChuZWVkc1N1
c3BlbnNpb25DYWxsYmFjaygpKSB7CiAgICAgICAgIG9sZERvY3VtZW50LnVucmVnaXN0ZXJGb3JE
b2N1bWVudFN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7CisgICAgICAgIG5ld0RvY3VtZW50LnJl
Z2lzdGVyRm9yRG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOworICAgIH0KICAgICBp
ZiAoaXNSYWRpb0J1dHRvbigpKQogICAgICAgICBvbGREb2N1bWVudC5mb3JtQ29udHJvbGxlcigp
LnJhZGlvQnV0dG9uR3JvdXBzKCkucmVtb3ZlQnV0dG9uKHRoaXMpOwogI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCi0gICAgaWYgKG1faGFzVG91Y2hFdmVudEhhbmRsZXIpCisgICAgaWYgKG1faGFz
VG91Y2hFdmVudEhhbmRsZXIpIHsKICAgICAgICAgb2xkRG9jdW1lbnQuZGlkUmVtb3ZlRXZlbnRU
YXJnZXROb2RlKCp0aGlzKTsKKyAgICAgICAgbmV3RG9jdW1lbnQuZGlkQWRkVG91Y2hFdmVudEhh
bmRsZXIoKnRoaXMpOworICAgIH0KICNlbmRpZgogCi0gICAgaWYgKG5lZWRzU3VzcGVuc2lvbkNh
bGxiYWNrKQotICAgICAgICBkb2N1bWVudCgpLnJlZ2lzdGVyRm9yRG9jdW1lbnRTdXNwZW5zaW9u
Q2FsbGJhY2tzKHRoaXMpOwotCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBpZiAobV9o
YXNUb3VjaEV2ZW50SGFuZGxlcikKLSAgICAgICAgZG9jdW1lbnQoKS5kaWRBZGRUb3VjaEV2ZW50
SGFuZGxlcigqdGhpcyk7Ci0jZW5kaWYKLQotICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7CisgICAgSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50LCBuZXdEb2N1bWVu
dCk7CiB9CiAKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVV
UkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0OCw3ICszNDgsNyBA
QCBwcml2YXRlOgogICAgIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRv
KENvbnRhaW5lck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaGVkSW5zZXJ0aW5nU3VidHJl
ZSgpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIGZpbmFsOwot
ICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50KSBmaW5h
bDsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwg
RG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5hbDsKIAogICAgIGJvb2wgaGFzQ3VzdG9tRm9jdXNM
b2dpYygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2Fy
ZEV2ZW50JikgY29uc3QgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczMywxOCArNzMzLDE4IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6dW5yZWdpc3RlcldpdGhEb2MKIAogfQogCi12b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkK
K3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9s
ZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCiB7CisgICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oJmRvY3VtZW50KCkgPT0gJm5ld0RvY3VtZW50KTsKICAgICBpZiAo
bV9zaG91bGREZWxheUxvYWRFdmVudCkgewogICAgICAgICBvbGREb2N1bWVudC5kZWNyZW1lbnRM
b2FkRXZlbnREZWxheUNvdW50KCk7Ci0gICAgICAgIGRvY3VtZW50KCkuaW5jcmVtZW50TG9hZEV2
ZW50RGVsYXlDb3VudCgpOworICAgICAgICBuZXdEb2N1bWVudC5pbmNyZW1lbnRMb2FkRXZlbnRE
ZWxheUNvdW50KCk7CiAgICAgfQogCiAgICAgdW5yZWdpc3RlcldpdGhEb2N1bWVudChvbGREb2N1
bWVudCk7CisgICAgcmVnaXN0ZXJXaXRoRG9jdW1lbnQobmV3RG9jdW1lbnQpOwogCi0gICAgcmVn
aXN0ZXJXaXRoRG9jdW1lbnQoZG9jdW1lbnQoKSk7Ci0KLSAgICBIVE1MRWxlbWVudDo6ZGlkTW92
ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOworICAgIEhUTUxFbGVtZW50OjpkaWRNb3ZlVG9O
ZXdEb2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogICAgIHVwZGF0ZVNob3VsZEF1
dG9wbGF5KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CShyZXZpc2lvbiAyMTc2NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMxLDcgKzUzMSw3IEBAIHByb3RlY3RlZDoKICAgICB2
b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZERldGFjaFJl
bmRlcmVycygpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1
bWVudCYgb2xkRG9jdW1lbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1l
bnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIG92ZXJyaWRl
OwogCiAgICAgZW51bSBEaXNwbGF5TW9kZSB7IFVua25vd24sIE5vbmUsIFBvc3RlciwgUG9zdGVy
V2FpdGluZ0ZvclZpZGVvLCBWaWRlbyB9OwogICAgIERpc3BsYXlNb2RlIGRpc3BsYXlNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TW9kZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTUsMTAg
KzQ5NSwxMCBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0CiAgICAg
ICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIGRvY3VtZW50KCkuY29tcGxldGVVUkwodXNlTWFw
KSk7CiB9CiAKLXZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERv
Y3VtZW50JiBvbGREb2N1bWVudCkKK3ZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OmRpZE1vdmVUb05l
d0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQog
ewogICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9j
dW1lbnQpOwotICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50
KG9sZERvY3VtZW50KTsKKyAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdE
b2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogfQogCiBib29sIEhUTUxPYmplY3RF
bGVtZW50OjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGVuY29kaW5nLCBib29sKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAkocmV2aXNpb24gMjE3NjQy
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5pc2hlZEluc2VydGlu
Z1N1YnRyZWUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBm
aW5hbDsKIAotICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3Vt
ZW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGRE
b2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5hbDsKIAogICAgIHZvaWQgY2hpbGRy
ZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgZmluYWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBpY3R1cmVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQaWN0dXJlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIxNzY0MikKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBpY3R1cmVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEsMTAgKzQxLDEwIEBAIEhUTUxQaWN0dXJlRWxlbWVudDo6fkhUTUxQaWN0dXJlRWxlbWVu
dCgKICAgICBkb2N1bWVudCgpLnJlbW92ZVZpZXdwb3J0RGVwZW5kZW50UGljdHVyZSgqdGhpcyk7
CiB9CiAKLXZvaWQgSFRNTFBpY3R1cmVFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1
bWVudCYgb2xkRG9jdW1lbnQpCit2b2lkIEhUTUxQaWN0dXJlRWxlbWVudDo6ZGlkTW92ZVRvTmV3
RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCiB7
CiAgICAgb2xkRG9jdW1lbnQucmVtb3ZlVmlld3BvcnREZXBlbmRlbnRQaWN0dXJlKCp0aGlzKTsK
LSAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOworICAg
IEhUTUxFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1l
bnQpOwogICAgIHNvdXJjZXNDaGFuZ2VkKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBpY3R1cmVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGljdHVyZUVsZW1lbnQuaAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGljdHVyZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxQaWN0dXJlRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQo
RG9jdW1lbnQmIG9sZERvY3VtZW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3Vt
ZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5hbDsK
IAogICAgIFdlYWtQdHJGYWN0b3J5PEhUTUxQaWN0dXJlRWxlbWVudD4gbV93ZWFrRmFjdG9yeSB7
IHRoaXMgfTsKICAgICBWZWN0b3I8TWVkaWFRdWVyeVJlc3VsdD4gbV92aWV3cG9ydERlcGVuZGVu
dE1lZGlhUXVlcnlSZXN1bHRzOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMTc2NDIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYs
MTcgKzI2NiwxOCBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmZpbmlzaFBhcnNpCiAg
ICAgICAgIGludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKIH0KIAotdm9pZCBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQp
Cit2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3Vt
ZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogeworICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZkb2N1bWVudCgpID09ICZuZXdEb2N1bWVudCk7CiAg
ICAgaWYgKG1fbmVlZHNEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3MpIHsKICAgICAgICAgb2xk
RG9jdW1lbnQudW5yZWdpc3RlckZvckRvY3VtZW50U3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsK
LSAgICAgICAgZG9jdW1lbnQoKS5yZWdpc3RlckZvckRvY3VtZW50U3VzcGVuc2lvbkNhbGxiYWNr
cyh0aGlzKTsKKyAgICAgICAgbmV3RG9jdW1lbnQucmVnaXN0ZXJGb3JEb2N1bWVudFN1c3BlbnNp
b25DYWxsYmFja3ModGhpcyk7CiAgICAgfQogCiAgICAgaWYgKG1faW1hZ2VMb2FkZXIpCiAgICAg
ICAgIG1faW1hZ2VMb2FkZXItPmVsZW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudCgpOwogCi0gICAg
SFRNTFBsdWdJbkVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsKKyAg
ICBIVE1MUGx1Z0luRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQsIG5l
d0RvY3VtZW50KTsKIH0KIAogdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpwcmVwYXJlRm9y
RG9jdW1lbnRTdXNwZW5zaW9uKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5oCShyZXZpc2lvbiAyMTc2NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMs
NyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2Vy
KTsKIAotICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGRE
b2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBvdmVycmlkZTsKICAgICBib29sIHJlcXVl
c3RPYmplY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1W
YWx1ZXMpIGZpbmFsOwogCiAgICAgYm9vbCBpc0ltYWdlVHlwZSgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMTc2NDIpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MiwxMiArODIsMTMgQEAgUmVmPE5vZGU+IEhUTUxUZW1wbGF0ZUVsZW1lbnQ6OmNs
b25lTm9kZQogICAgIHJldHVybiBjbG9uZS5yZWxlYXNlTm9uTnVsbCgpOwogfQogCi12b2lkIEhU
TUxUZW1wbGF0ZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1
bWVudCkKK3ZvaWQgSFRNTFRlbXBsYXRlRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9j
dW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCiB7Ci0gICAgSFRNTEVs
ZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsKKyAgICBIVE1MRWxlbWVu
dDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKICAgICBp
ZiAoIW1fY29udGVudCkKICAgICAgICAgcmV0dXJuOwotICAgIGRvY3VtZW50KCkuZW5zdXJlVGVt
cGxhdGVEb2N1bWVudCgpLmFkb3B0SWZOZWVkZWQoKm1fY29udGVudCk7CisgICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJmRvY3VtZW50KCkgPT0gJm5ld0RvY3VtZW50KTsKKyAg
ICBuZXdEb2N1bWVudC5lbnN1cmVUZW1wbGF0ZURvY3VtZW50KCkuYWRvcHRJZk5lZWRlZCgqbV9j
b250ZW50KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmgJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgSFRNTFRlbXBsYXRlRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIFJlZjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5h
bChEb2N1bWVudCYsIENsb25pbmdPcGVyYXRpb24pIGZpbmFsOwotICAgIHZvaWQgZGlkTW92ZVRv
TmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZE1v
dmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3Vt
ZW50KSBmaW5hbDsKIAogICAgIG11dGFibGUgUmVmUHRyPFRlbXBsYXRlQ29udGVudERvY3VtZW50
RnJhZ21lbnQ+IG1fY29udGVudDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHAJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MCwxMSArMzYwLDExIEBA
IHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0V2Via2l0V2lyZWxlc3MKIH0KICNlbmRpZgogCi12
b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGRE
b2N1bWVudCkKK3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9j
dW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCiB7CiAgICAgaWYgKG1f
aW1hZ2VMb2FkZXIpCiAgICAgICAgIG1faW1hZ2VMb2FkZXItPmVsZW1lbnREaWRNb3ZlVG9OZXdE
b2N1bWVudCgpOwotICAgIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9s
ZERvY3VtZW50KTsKKyAgICBIVE1MTWVkaWFFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChv
bGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NUQVRJU1RJ
Q1MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAkocmV2aXNpb24g
MjE3NjQyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBoYXNBdmFp
bGFibGVWaWRlb0ZyYW1lKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVEaXNwbGF5U3RhdGUoKSBm
aW5hbDsKLSAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVu
dCkgZmluYWw7CisgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9j
dW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkgZmluYWw7CiAgICAgdm9pZCBzZXREaXNwbGF5
TW9kZShEaXNwbGF5TW9kZSkgZmluYWw7CiAKICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVk
aWFUeXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6VmlkZW87IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmNwcAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3Vt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAgICAg
fQogCiAgICAgdmlydHVhbCB+SW1hZ2VEb2N1bWVudEVsZW1lbnQoKTsKLSAgICB2b2lkIGRpZE1v
dmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBu
ZXdEb2N1bWVudCkgb3ZlcnJpZGU7CiAKICAgICBJbWFnZURvY3VtZW50KiBtX2ltYWdlRG9jdW1l
bnQ7CiB9OwpAQCAtNDI2LDEzICs0MjYsMTMgQEAgSW1hZ2VEb2N1bWVudEVsZW1lbnQ6On5JbWFn
ZURvY3VtZW50RWxlbQogICAgICAgICBtX2ltYWdlRG9jdW1lbnQtPmRpc2Nvbm5lY3RJbWFnZUVs
ZW1lbnQoKTsKIH0KIAotdm9pZCBJbWFnZURvY3VtZW50RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9j
dW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50KQordm9pZCBJbWFnZURvY3VtZW50RWxlbWVudDo6
ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3
RG9jdW1lbnQpCiB7CiAgICAgaWYgKG1faW1hZ2VEb2N1bWVudCkgewogICAgICAgICBtX2ltYWdl
RG9jdW1lbnQtPmRpc2Nvbm5lY3RJbWFnZUVsZW1lbnQoKTsKICAgICAgICAgbV9pbWFnZURvY3Vt
ZW50ID0gbnVsbHB0cjsKICAgICB9Ci0gICAgSFRNTEltYWdlRWxlbWVudDo6ZGlkTW92ZVRvTmV3
RG9jdW1lbnQob2xkRG9jdW1lbnQpOworICAgIEhUTUxJbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05l
d0RvY3VtZW50KG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMTc2NDIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEy
LDEwICsyMTIsMTAgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cgog
ICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZigp
KSk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1
bWVudCYgb2xkRG9jdW1lbnQpCit2b2lkIFNWR0ltYWdlRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9j
dW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCiB7CiAg
ICAgbV9pbWFnZUxvYWRlci5lbGVtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnQoKTsKLSAgICBTVkdH
cmFwaGljc0VsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsKKyAgICBT
VkdHcmFwaGljc0VsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50LCBuZXdE
b2N1bWVudCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJ
KHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGF2
ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkgZmluYWw7CiAKICAgICBib29sIHNlbGZIYXNSZWxh
dGl2ZUxlbmd0aHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCBkaWRN
b3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQpIGZpbmFsOworICAgIHZvaWQg
ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3
RG9jdW1lbnQpIGZpbmFsOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVT
KFNWR0ltYWdlRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDIxNzY0MikK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTksMTEgKzk5LDExIEBAIFNWR1NWR0VsZW1lbnQ6On5TVkdTVkdFbGVtZW50KCkKICAgICBk
b2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZW1vdmVUaW1lQ29udGFpbmVyKHRoaXMp
OwogfQogCi12b2lkIFNWR1NWR0VsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50
JiBvbGREb2N1bWVudCkKK3ZvaWQgU1ZHU1ZHRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQo
RG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCiB7CiAgICAgb2xk
RG9jdW1lbnQudW5yZWdpc3RlckZvckRvY3VtZW50U3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsK
ICAgICBkb2N1bWVudCgpLnJlZ2lzdGVyRm9yRG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tzKHRo
aXMpOwotICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9j
dW1lbnQpOworICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xk
RG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdTVkdF
bGVtZW50Ojpjb250ZW50U2NyaXB0VHlwZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU1ZHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmgJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgflNWR1NWR0VsZW1lbnQoKTsKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERv
Y3VtZW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50
JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBvdmVycmlkZTsKICAgICB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBvdmVycmlkZTsKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUm
KSBvdmVycmlkZTsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRl
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312152</attachid>
            <date>2017-06-06 18:53:11 -0700</date>
            <delta_ts>2017-06-06 20:04:44 -0700</delta_ts>
            <desc>Fixed builds</desc>
            <filename>bug-173040-20170606185311.patch</filename>
            <type>text/plain</type>
            <size>52109</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDE3LTA2LTA2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1lcmdlIFRyZWVTY29wZUFkb3B0
ZXIgaW50byBUcmVlU2NvcGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MzA0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1lcmdlZCBUcmVlU2NvcGVBZG9wdGVyIGludG8gVHJlZVNjb3BlIHNpbmNlIGl0
J3MgdXNlZCBieSBUcmVlU2NvcGU6OmFkb3B0SWZOZWVkZWQuCisKKyAgICAgICAgTW9zdCBvZiBj
b2RlIGNoYW5nZXMgYXJlIGZvciBkaWRNb3ZlVG9OZXdEb2N1bWVudCB0YWtpbmcgdGhlIG5ldyBk
b2N1bWVudCBhcyBhbiBhcmd1bWVudCwKKyAgICAgICAgd2hpY2ggaXMgdXNlZCBieSBTaGFkb3dS
b290OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCB0byB1cGRhdGUgaXRzIGRvY3VtZW50IHNjb3BlLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGVyZSBzaG91bGQgYmUgbm8gYmVoYXZpb3Jh
bCBjaGFuZ2UuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAg
ICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOiBNb3ZlZCB0aGUgY29kZSB0byBtb3Zl
cyB0aGUgbm9kZSBsaXN0cyBhbmQgbm9kZSBpdGVyYXRvcnMgaGVyZQorICAgICAgICBmcm9tIFRy
ZWVTY29wZUFkb3B0ZXI6Om1vdmVOb2RlVG9OZXdEb2N1bWVudC4KKyAgICAgICAgKiBkb20vTm9k
ZS5oOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd1Jvb3Q6OmRpZE1vdmVUb05ld0RvY3VtZW50KTogTW92ZWQgdGhlIGNvZGUgdG8gdXBkYXRl
IHRoZSBkb2N1bWVudCBzY29wZSBoZXJlCisgICAgICAgIGZyb20gVHJlZVNjb3BlQWRvcHRlcjo6
bW92ZU5vZGVUb05ld0RvY3VtZW50LgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAg
ICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmFk
b3B0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjptb3ZlVHJlZVRvTmV3
U2NvcGUpOiBNb3ZlZCBmcm9tIFRyZWVTY29wZUFkb3B0ZXIuIE5vdyB0YWtlcyB0aGUgb2xkIHRy
ZWUgc2NvcGUgYW5kCisgICAgICAgIHRoZSBuZXcgdHJlZSBzY29wZSBhcyBhcmd1bWVudHMgKHRo
ZXkgdXNlZCB0byBiZSBtZW1iZXJzIG9mIFRyZWVTY29wZUFkb3B0ZXIpLiBBbHNvIG1lcmdlZCB1
cGRhdGVUcmVlU2NvcGUKKyAgICAgICAgaW50byB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAoV2Vi
Q29yZTo6VHJlZVNjb3BlOjplbnN1cmVEaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZCk6IE1v
dmVkIGZyb20gVHJlZVNjb3BlQWRvcHRlci4KKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6
bW92ZU5vZGVUb05ld0RvY3VtZW50KTogRGl0dG8uIFRoZSBjb2RlIHRvIGFkb3B0IG5vZGUgbGlz
dHMgYW5kIG5vZGUgaXRlcmF0b3JzIGhhdmUKKyAgICAgICAgYmVlbiBtb3ZlZCB0byBOb2RlOjpk
aWRNb3ZlVG9OZXdEb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6bW92ZVNo
YWRvd1RyZWVUb05ld0RvY3VtZW50KTogTW92ZWQgZnJvbSBUcmVlU2NvcGVBZG9wdGVyLgorICAg
ICAgICAqIGRvbS9UcmVlU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6ZW5z
dXJlRGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQpOgorICAgICAgICAqIGRvbS9UcmVlU2Nv
cGVBZG9wdGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vVHJlZVNjb3BlQWRvcHRlci5o
OiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50
KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojpk
aWRNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KTogR3JvdXBlZCByZWxhdGVk
IGZ1bmN0aW9uIGNhbGxzIG9uIG5ldy9vbGQgZG9jdW1lbnRzLgorICAgICAgICAqIGh0bWwvSFRN
TElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6
ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxQaWN0dXJlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGljdHVyZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAg
KiBodG1sL0hUTUxQaWN0dXJlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUZW1wbGF0ZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToK
KyAgICAgICAgKiBodG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6
ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURvY3VtZW50RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIHN2
Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50
OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1NWR0VsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHU1ZH
RWxlbWVudC5oOgorCiAyMDE3LTA1LTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBDb2RlR2VuZXJhdG9ySlMncyBJbnN0YW5jZU5lZWRzVmlzaXRDaGlsZHJlbiBz
aG91bGQgbm90IHJldHVybiB0cnVlIGp1c3QgYmVjYXVzZSBhIGNsYXNzIGlzIC8gZXh0ZW5kcyBF
dmVudFRhcmdldC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMTc2NDIpCisr
KyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTU2OSw3
ICsxNTY5LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9UcmFuc2l0aW9uRXZlbnQu
Y3BwCiAgICAgZG9tL1RyYXZlcnNhbC5jcHAKICAgICBkb20vVHJlZVNjb3BlLmNwcAotICAgIGRv
bS9UcmVlU2NvcGVBZG9wdGVyLmNwcAogICAgIGRvbS9UcmVlV2Fsa2VyLmNwcAogICAgIGRvbS9V
SUV2ZW50LmNwcAogICAgIGRvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmNwcApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjE3NjQyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NDg5LDggKzQ0ODksNiBAQAogCQlBNzc5NzkyOTBE
NkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Nzk3OTI1MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0ltYWdl
RGF0YS5oICovOyB9OwogCQlBNzdCNDFBMDEyRTY3NUE5MDA1NDM0M0QgLyogVGV4dEV2ZW50SW5w
dXRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NzdCNDE5RjEyRTY3NUE5MDA1NDM0M0QgLyogVGV4dEV2ZW50SW5wdXRUeXBlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc3RDAwMTIxMzNCMEFF
QjAwRDY2NThDIC8qIFRleHRDaGVja2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc3RDAwMTExMzNCMEFFQjAwRDY2NThDIC8qIFRleHRDaGVja2lu
Zy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE3
N0UxRkVGMTRBQUNCNkUwMDVCN0NCNiAvKiBUcmVlU2NvcGVBZG9wdGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3N0UxRkVEMTRBQUNCNkUwMDVC
N0NCNiAvKiBUcmVlU2NvcGVBZG9wdGVyLmNwcCAqLzsgfTsKLQkJQTc3RTFGRjAxNEFBQ0I2RTAw
NUI3Q0I2IC8qIFRyZWVTY29wZUFkb3B0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3N0UxRkVFMTRBQUNCNkUwMDVCN0NCNiAvKiBUcmVlU2NvcGVB
ZG9wdGVyLmggKi87IH07CiAJCUE3ODQ5NDFCMEI1RkU1MDcwMDFFMjM3QSAvKiBEYXRhVHJhbnNm
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4
NDk0MUEwQjVGRTUwNzAwMUUyMzdBIC8qIERhdGFUcmFuc2Zlci5jcHAgKi87IH07CiAJCUE3OEZF
MTNCMTIzNjZCMTAwMEFDRThEMCAvKiBTcGVsbENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4RkUxMzkxMjM2NkIxMDAwQUNFOEQwIC8q
IFNwZWxsQ2hlY2tlci5jcHAgKi87IH07CiAJCUE3OEZFMTNDMTIzNjZCMTAwMEFDRThEMCAvKiBT
cGVsbENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3OEZFMTNBMTIzNjZCMTAwMEFDRThEMCAvKiBTcGVsbENoZWNrZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI3NjYsOCArMTI3NjQs
NiBAQAogCQlBNzc5NzkyNTBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbWFnZURhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTc3QjQxOUYxMkU2NzVBOTAwNTQzNDNEIC8qIFRleHRFdmVudElucHV0
VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0RXZlbnRJbnB1dFR5
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc3RDAwMTExMzNCMEFFQjAwRDY2
NThDIC8qIFRleHRDaGVja2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZXh0Q2hlY2tpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTc3RTFGRUQxNEFB
Q0I2RTAwNUI3Q0I2IC8qIFRyZWVTY29wZUFkb3B0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVHJlZVNjb3BlQWRvcHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUE3N0UxRkVFMTRBQUNCNkUwMDVCN0NCNiAvKiBUcmVlU2NvcGVBZG9wdGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyZWVTY29wZUFkb3B0ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc4NDk0MUEwQjVGRTUwNzAwMUUyMzdBIC8q
IERhdGFUcmFuc2Zlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGF0YVRyYW5zZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc4RkUxMzkx
MjM2NkIxMDAwQUNFOEQwIC8qIFNwZWxsQ2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTcGVsbENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNzhGRTEzQTEyMzY2QjEwMDBBQ0U4RDAgLyogU3BlbGxDaGVja2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gU3BlbGxDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yNjAwMiw4ICsyNTk5OCw2IEBACiAJCQkJMzdGRDQyOTcxMTgzNjg0
NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExpbWl0LmggKi8sCiAJCQkJMTRENjRCNUExMzRBNUI2QjAw
RTU4RkRBIC8qIFRyZWVTY29wZS5jcHAgKi8sCiAJCQkJMTRENjRCNUIxMzRBNUI2QjAwRTU4RkRB
IC8qIFRyZWVTY29wZS5oICovLAotCQkJCUE3N0UxRkVEMTRBQUNCNkUwMDVCN0NCNiAvKiBUcmVl
U2NvcGVBZG9wdGVyLmNwcCAqLywKLQkJCQlBNzdFMUZFRTE0QUFDQjZFMDA1QjdDQjYgLyogVHJl
ZVNjb3BlQWRvcHRlci5oICovLAogCQkJCTg1NEZFNzJFMEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVl
V2Fsa2VyLmNwcCAqLywKIAkJCQk4NTRGRTcyRjBBMjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtl
ci5oICovLAogCQkJCTFBNzUwRDNDMEE5MERFMzUwMDBGRjIxNSAvKiBUcmVlV2Fsa2VyLmlkbCAq
LywKQEAgLTI5OTYwLDcgKzI5OTU0LDYgQEAKIAkJCQk4NTRGRTczNzBBMjI5N0JFMDA1OEQ3QUQg
LyogVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0ZENDI5ODExODM2ODQ2MDA5M0Mw
MjkgLyogVHJlZURlcHRoTGltaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RDY0QjVEMTM0QTVC
NkIwMEU1OEZEQSAvKiBUcmVlU2NvcGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUE3N0UxRkYwMTRB
QUNCNkUwMDVCN0NCNiAvKiBUcmVlU2NvcGVBZG9wdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NTRGRTczOTBBMjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkQyMzJDMDAxQTMyNkYwMjAwNkJGMkRCIC8qIFRVQ2FsbFNQSS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzM3NUQ3RkUxNjYzOTUxOTAwNjE4NEFCIC8qIFR5cGVBaGVhZC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zMzY4OSw3ICszMzY4Miw2IEBACiAJCQkJNDlFOTExRDEwRUY4NkQ0NzAwOUQwQ0FG
IC8qIFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NTRGRTczNjBBMjI5N0JFMDA1OEQ3QUQgLyogVHJhdmVyc2FsLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0RDY0QjVDMTM0QTVCNkIwMEU1OEZEQSAvKiBUcmVlU2NvcGUuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQTc3RTFGRUYxNEFBQ0I2RTAwNUI3Q0I2IC8qIFRyZWVTY29wZUFkb3B0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODU0RkU3MzgwQTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxr
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzM3NUQ3RkQxNjYzOTUxOTAwNjE4NEFCIC8qIFR5
cGVBaGVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxOTA5OUU2NDkyMDA1NkU1ODEg
LyogVHlwaW5nQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTUzMCw5ICsxNTMwLDEwIEBAIHZvaWQgRWxlbWVudDo6cGFy
c2VyRGlkU2V0QXR0cmlidXRlcygpCiB7CiB9CiAKLXZvaWQgRWxlbWVudDo6ZGlkTW92ZVRvTmV3
RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50KQordm9pZCBFbGVtZW50OjpkaWRNb3ZlVG9O
ZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkK
IHsKLSAgICBOb2RlOjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7CisgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJmRvY3VtZW50KCkgPT0gJm5ld0RvY3VtZW50
KTsKKyAgICBOb2RlOjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1l
bnQpOwogCiAgICAgaWYgKG9sZERvY3VtZW50LmluUXVpcmtzTW9kZSgpICE9IGRvY3VtZW50KCku
aW5RdWlya3NNb2RlKCkpIHsKICAgICAgICAgLy8gRWxlbWVudERhdGE6Om1fY2xhc3NOYW1lcyBv
ciBFbGVtZW50RGF0YTo6bV9pZEZvclN0eWxlUmVzb2x1dGlvbiBuZWVkIHRvIGJlIHVwZGF0ZWQg
d2l0aCB0aGUgcmlnaHQgY2FzZS4KQEAgLTE1NDMsNyArMTU0NCw3IEBAIHZvaWQgRWxlbWVudDo6
ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW0KICAgICB9CiAKICAgICBpZiAoVU5MSUtFTFkoaXNE
ZWZpbmVkQ3VzdG9tRWxlbWVudCgpKSkKLSAgICAgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVl
dWU6OmVucXVldWVBZG9wdGVkQ2FsbGJhY2tJZk5lZWRlZCgqdGhpcywgb2xkRG9jdW1lbnQsIGRv
Y3VtZW50KCkpOworICAgICAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5xdWV1ZUFk
b3B0ZWRDYWxsYmFja0lmTmVlZGVkKCp0aGlzLCBvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwog
fQogCiBib29sIEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZXMoKSBjb25zdApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCShyZXZpc2lvbiAyMTc2NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NjcsNyArNTY3LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBy
ZW1vdmVBbGxFdmVudExpc3RlbmVycygpIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZXJE
aWRTZXRBdHRyaWJ1dGVzKCk7Ci0gICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVu
dCYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9s
ZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBj
bGVhclRhYkluZGV4RXhwbGljaXRseUlmTmVlZGVkKCk7CiAgICAgdm9pZCBzZXRUYWJJbmRleEV4
cGxpY2l0bHkoaW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDIxNzY0MikKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgs
NiBAQAogI2luY2x1ZGUgIlRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNs
dWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCi0jaW5jbHVkZSAiVHJl
ZVNjb3BlQWRvcHRlci5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJYTUxO
U05hbWVzLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKQEAgLTE5MjUsMTQgKzE5MjQsMjIgQEAg
RXZlbnRUYXJnZXRJbnRlcmZhY2UgTm9kZTo6ZXZlbnRUYXJnZXRJbgogICAgIHJldHVybiBOb2Rl
RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwogfQogCi12b2lkIE5vZGU6OmRpZE1vdmVUb05ld0Rv
Y3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkKK3ZvaWQgTm9kZTo6ZGlkTW92ZVRvTmV3RG9j
dW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCiB7Ci0g
ICAgVHJlZVNjb3BlQWRvcHRlcjo6ZW5zdXJlRGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQo
b2xkRG9jdW1lbnQpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZkb2N1
bWVudCgpID09ICZuZXdEb2N1bWVudCk7CisgICAgVHJlZVNjb3BlOjplbnN1cmVEaWRNb3ZlVG9O
ZXdEb2N1bWVudFdhc0NhbGxlZChvbGREb2N1bWVudCk7CisKKyAgICBpZiAoaGFzUmFyZURhdGEo
KSkgeworICAgICAgICBpZiAoYXV0byogbm9kZUxpc3RzID0gcmFyZURhdGEoKS0+bm9kZUxpc3Rz
KCkpCisgICAgICAgICAgICBub2RlTGlzdHMtPmFkb3B0RG9jdW1lbnQob2xkRG9jdW1lbnQsIG5l
d0RvY3VtZW50KTsKKyAgICB9CisKKyAgICBvbGREb2N1bWVudC5tb3ZlTm9kZUl0ZXJhdG9yc1Rv
TmV3RG9jdW1lbnQoKnRoaXMsIG5ld0RvY3VtZW50KTsKIAogICAgIGlmIChhdXRvKiBldmVudFRh
cmdldERhdGEgPSB0aGlzLT5ldmVudFRhcmdldERhdGEoKSkgewogICAgICAgICBpZiAoIWV2ZW50
VGFyZ2V0RGF0YS0+ZXZlbnRMaXN0ZW5lck1hcC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGZv
ciAoYXV0byYgdHlwZSA6IGV2ZW50VGFyZ2V0RGF0YS0+ZXZlbnRMaXN0ZW5lck1hcC5ldmVudFR5
cGVzKCkpCi0gICAgICAgICAgICAgICAgZG9jdW1lbnQoKS5hZGRMaXN0ZW5lclR5cGVJZk5lZWRl
ZCh0eXBlKTsKKyAgICAgICAgICAgICAgICBuZXdEb2N1bWVudC5hZGRMaXN0ZW5lclR5cGVJZk5l
ZWRlZCh0eXBlKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTk0NCw3ICsxOTUxLDcgQEAgdm9p
ZCBOb2RlOjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudAogICAgIHVuc2lnbmVkIG51bVdo
ZWVsRXZlbnRIYW5kbGVycyA9IGV2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3VzZXdoZWVs
RXZlbnQpLnNpemUoKSArIGV2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50KS5z
aXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVdoZWVsRXZlbnRIYW5kbGVy
czsgKytpKSB7CiAgICAgICAgIG9sZERvY3VtZW50LmRpZFJlbW92ZVdoZWVsRXZlbnRIYW5kbGVy
KCp0aGlzKTsKLSAgICAgICAgZG9jdW1lbnQoKS5kaWRBZGRXaGVlbEV2ZW50SGFuZGxlcigqdGhp
cyk7CisgICAgICAgIG5ld0RvY3VtZW50LmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKCp0aGlzKTsK
ICAgICB9CiAKICAgICB1bnNpZ25lZCBudW1Ub3VjaEV2ZW50TGlzdGVuZXJzID0gMDsKQEAgLTE5
NTMsMTEgKzE5NjAsMTEgQEAgdm9pZCBOb2RlOjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVu
dAogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVRvdWNoRXZlbnRMaXN0ZW5lcnM7
ICsraSkgewogICAgICAgICBvbGREb2N1bWVudC5kaWRSZW1vdmVUb3VjaEV2ZW50SGFuZGxlcigq
dGhpcyk7Ci0gICAgICAgIGRvY3VtZW50KCkuZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIoKnRoaXMp
OworICAgICAgICBuZXdEb2N1bWVudC5kaWRBZGRUb3VjaEV2ZW50SGFuZGxlcigqdGhpcyk7CiAK
ICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpCiAgICAgICAgIG9sZERv
Y3VtZW50LnJlbW92ZVRvdWNoRXZlbnRMaXN0ZW5lcigqdGhpcyk7Ci0gICAgICAgIGRvY3VtZW50
KCkuYWRkVG91Y2hFdmVudExpc3RlbmVyKCp0aGlzKTsKKyAgICAgICAgbmV3RG9jdW1lbnQuYWRk
VG91Y2hFdmVudExpc3RlbmVyKCp0aGlzKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTk2OCwxOCAr
MTk3NSwxOCBAQCB2b2lkIE5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50CiAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtR2VzdHVyZUV2ZW50TGlzdGVuZXJzOyArK2kp
IHsKICAgICAgICAgb2xkRG9jdW1lbnQucmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIoKnRoaXMpOwot
ICAgICAgICBkb2N1bWVudCgpLmFkZFRvdWNoRXZlbnRIYW5kbGVyKCp0aGlzKTsKKyAgICAgICAg
bmV3RG9jdW1lbnQuYWRkVG91Y2hFdmVudEhhbmRsZXIoKnRoaXMpOwogICAgIH0KICNlbmRpZgog
CiAgICAgaWYgKGF1dG8qIHJlZ2lzdHJ5ID0gbXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCkpIHsK
ICAgICAgICAgZm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiAqcmVnaXN0cnkpCi0gICAgICAgICAg
ICBkb2N1bWVudCgpLmFkZE11dGF0aW9uT2JzZXJ2ZXJUeXBlcyhyZWdpc3RyYXRpb24tPm11dGF0
aW9uVHlwZXMoKSk7CisgICAgICAgICAgICBuZXdEb2N1bWVudC5hZGRNdXRhdGlvbk9ic2VydmVy
VHlwZXMocmVnaXN0cmF0aW9uLT5tdXRhdGlvblR5cGVzKCkpOwogICAgIH0KIAogICAgIGlmIChh
dXRvKiB0cmFuc2llbnRSZWdpc3RyeSA9IHRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
eSgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgcmVnaXN0cmF0aW9uIDogKnRyYW5zaWVudFJlZ2lz
dHJ5KQotICAgICAgICAgICAgZG9jdW1lbnQoKS5hZGRNdXRhdGlvbk9ic2VydmVyVHlwZXMocmVn
aXN0cmF0aW9uLT5tdXRhdGlvblR5cGVzKCkpOworICAgICAgICAgICAgbmV3RG9jdW1lbnQuYWRk
TXV0YXRpb25PYnNlcnZlclR5cGVzKHJlZ2lzdHJhdGlvbi0+bXV0YXRpb25UeXBlcygpKTsKICAg
ICB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05T
KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiAyMTc2NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MzEsNyArNjMxLDcgQEAgcHJvdGVjdGVkOgog
ICAgIH07CiAgICAgTm9kZShEb2N1bWVudCYsIENvbnN0cnVjdGlvblR5cGUpOwogCi0gICAgdmly
dHVhbCB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCk7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVu
dCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3Vi
cmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCB7IH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsMTUgKzEw
MiwxNyBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vCiAgICAgICAg
IGRvY3VtZW50KCkuZGlkUmVtb3ZlSW5Eb2N1bWVudFNoYWRvd1Jvb3QoKnRoaXMpOwogfQogCi12
b2lkIFNoYWRvd1Jvb3Q6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVu
dCkKK3ZvaWQgU2hhZG93Um9vdDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERv
Y3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCiB7Ci0gICAgQVNTRVJUKCZkb2N1bWVudCgp
ICE9ICZvbGREb2N1bWVudCk7Ci0gICAgQVNTRVJUKCZtX3N0eWxlU2NvcGUtPmRvY3VtZW50KCkg
PT0gJm9sZERvY3VtZW50KTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigm
ZG9jdW1lbnQoKSA9PSAmb2xkRG9jdW1lbnQgfHwgJmRvY3VtZW50KCkgPT0gJm5ld0RvY3VtZW50
KTsKKyAgICBzZXREb2N1bWVudFNjb3BlKG5ld0RvY3VtZW50KTsKKyAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTigmZG9jdW1lbnQoKSA9PSAmbmV3RG9jdW1lbnQpOworICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZtX3N0eWxlU2NvcGUtPmRvY3VtZW50KCkg
PT0gJm9sZERvY3VtZW50KTsKIAogICAgIC8vIFN0eWxlIHNjb3BlcyBhcmUgZG9jdW1lbnQgc3Bl
Y2lmaWMuCiAgICAgbV9zdHlsZVNjb3BlID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+
KCp0aGlzKTsKIAotICAgIERvY3VtZW50RnJhZ21lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9s
ZERvY3VtZW50KTsKKyAgICBEb2N1bWVudEZyYWdtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChv
bGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogfQogCiBTdHlsZTo6U2NvcGUmIFNoYWRvd1Jvb3Q6
OnN0eWxlU2NvcGUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCShyZXZpc2lvbiAyMTc2
NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAKICAgICBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRp
b25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2lu
dCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xk
RG9jdW1lbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1l
bnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSB7IGZhbHNlIH07CiAgICAgU2hhZG93Um9vdE1v
ZGUgbV90eXBlIHsgU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1RyZWVTY29wZS5jcHAJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAKKyNpbmNsdWRlICJBdHRyLmgiCiAj
aW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCkBAIC0zOCwxMiArMzksMTIgQEAKICNpbmNsdWRlICJI
VE1MTWFwRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIK
ICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiVHJlZVNjb3BlQWRvcHRlci5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MzcxLDkgKzM3Miw5NSBAQCB2b2lkIFRyZWVTY29wZTo6YWRvcHRJZk5lZWRlZChOb2RlJiBub2Rl
CiB7CiAgICAgQVNTRVJUKCFub2RlLmlzRG9jdW1lbnROb2RlKCkpOwogICAgIEFTU0VSVCghbm9k
ZS5tX2RlbGV0aW9uSGFzQmVndW4pOwotICAgIFRyZWVTY29wZUFkb3B0ZXIgYWRvcHRlcihub2Rl
LCAqdGhpcyk7Ci0gICAgaWYgKGFkb3B0ZXIubmVlZHNTY29wZUNoYW5nZSgpKQotICAgICAgICBh
ZG9wdGVyLmV4ZWN1dGUoKTsKKyAgICBUcmVlU2NvcGUmIHRyZWVTY29wZU9mTm9kZSA9IG5vZGUu
dHJlZVNjb3BlKCk7CisgICAgaWYgKHRoaXMgIT0gJnRyZWVTY29wZU9mTm9kZSkKKyAgICAgICAg
bW92ZVRyZWVUb05ld1Njb3BlKG5vZGUsIHRyZWVTY29wZU9mTm9kZSwgKnRoaXMpOworfQorCit2
b2lkIFRyZWVTY29wZTo6bW92ZVRyZWVUb05ld1Njb3BlKE5vZGUmIHJvb3QsIFRyZWVTY29wZSYg
b2xkU2NvcGUsIFRyZWVTY29wZSYgbmV3U2NvcGUpCit7CisgICAgQVNTRVJUKCZvbGRTY29wZSAh
PSAmbmV3U2NvcGUpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZyb290
LnRyZWVTY29wZSgpID09ICZvbGRTY29wZSk7CisKKyAgICAvLyBJZiBhbiBlbGVtZW50IGlzIG1v
dmVkIGZyb20gYSBkb2N1bWVudCBhbmQgdGhlbiBldmVudHVhbGx5IGJhY2sgYWdhaW4gdGhlIGNv
bGxlY3Rpb24gY2FjaGUgZm9yCisgICAgLy8gdGhhdCBlbGVtZW50IG1heSBjb250YWluIHN0YWxl
IGRhdGEgYXMgY2hhbmdlcyBtYWRlIHRvIGl0IHdpbGwgaGF2ZSB1cGRhdGVkIHRoZSBET01UcmVl
VmVyc2lvbgorICAgIC8vIG9mIHRoZSBkb2N1bWVudCBpdCB3YXMgbW92ZWQgdG8uIEJ5IGluY3Jl
YXNpbmcgdGhlIERPTVRyZWVWZXJzaW9uIG9mIHRoZSBkb25hdGluZyBkb2N1bWVudCBoZXJlCisg
ICAgLy8gd2UgZW5zdXJlIHRoYXQgdGhlIGNvbGxlY3Rpb24gY2FjaGUgd2lsbCBiZSBpbnZhbGlk
YXRlZCBhcyBuZWVkZWQgd2hlbiB0aGUgZWxlbWVudCBpcyBtb3ZlZCBiYWNrLgorICAgIERvY3Vt
ZW50JiBvbGREb2N1bWVudCA9IG9sZFNjb3BlLmRvY3VtZW50U2NvcGUoKTsKKyAgICBEb2N1bWVu
dCYgbmV3RG9jdW1lbnQgPSBuZXdTY29wZS5kb2N1bWVudFNjb3BlKCk7CisgICAgYm9vbCB3aWxs
TW92ZVRvTmV3RG9jdW1lbnQgPSAmb2xkRG9jdW1lbnQgIT0gJm5ld0RvY3VtZW50OworICAgIGlm
ICh3aWxsTW92ZVRvTmV3RG9jdW1lbnQpIHsKKyAgICAgICAgb2xkRG9jdW1lbnQuaW5jcmVtZW50
UmVmZXJlbmNpbmdOb2RlQ291bnQoKTsKKyAgICAgICAgb2xkRG9jdW1lbnQuaW5jRE9NVHJlZVZl
cnNpb24oKTsKKyAgICB9CisKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSAmcm9vdDsgbm9kZTsgbm9k
ZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUsICZyb290KSkgeworICAgICAgICBBU1NFUlQo
IW5vZGUtPmlzVHJlZVNjb3BlKCkpOworICAgICAgICBBU1NFUlQoJm5vZGUtPnRyZWVTY29wZSgp
ID09ICZvbGRTY29wZSk7CisgICAgICAgIG5vZGUtPnNldFRyZWVTY29wZShuZXdTY29wZSk7CisK
KyAgICAgICAgaWYgKHdpbGxNb3ZlVG9OZXdEb2N1bWVudCkKKyAgICAgICAgICAgIG1vdmVOb2Rl
VG9OZXdEb2N1bWVudCgqbm9kZSwgb2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKKyAgICAgICAg
ZWxzZSBpZiAobm9kZS0+aGFzUmFyZURhdGEoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIG5v
ZGVMaXN0cyA9IG5vZGUtPnJhcmVEYXRhKCktPm5vZGVMaXN0cygpKQorICAgICAgICAgICAgICAg
IG5vZGVMaXN0cy0+YWRvcHRUcmVlU2NvcGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
aXM8RWxlbWVudD4oKm5vZGUpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYg
KG5vZGUtPmhhc1N5bnRoZXRpY0F0dHJDaGlsZE5vZGVzKCkpIHsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgYXR0ciA6IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKS5hdHRyTm9kZUxpc3QoKSkKKyAg
ICAgICAgICAgICAgICBtb3ZlVHJlZVRvTmV3U2NvcGUoKmF0dHIsIG9sZFNjb3BlLCBuZXdTY29w
ZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYXV0byogc2hhZG93ID0gbm9kZS0+c2hhZG93
Um9vdCgpKSB7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigm
c2hhZG93LT5kb2N1bWVudCgpID09ICZvbGREb2N1bWVudCk7CisgICAgICAgICAgICBzaGFkb3ct
PnNldFBhcmVudFRyZWVTY29wZShuZXdTY29wZSk7CisgICAgICAgICAgICBpZiAod2lsbE1vdmVU
b05ld0RvY3VtZW50KQorICAgICAgICAgICAgICAgIG1vdmVTaGFkb3dUcmVlVG9OZXdEb2N1bWVu
dCgqc2hhZG93LCBvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOworICAgICAgICB9CisgICAgfQor
CisgICAgaWYgKHdpbGxNb3ZlVG9OZXdEb2N1bWVudCkKKyAgICAgICAgb2xkRG9jdW1lbnQuZGVj
cmVtZW50UmVmZXJlbmNpbmdOb2RlQ291bnQoKTsKK30KKworI2lmICFBU1NFUlRfRElTQUJMRUQg
fHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCitzdGF0aWMgYm9vbCBkaWRNb3ZlVG9OZXdE
b2N1bWVudFdhc0NhbGxlZCA9IGZhbHNlOworc3RhdGljIERvY3VtZW50KiBvbGREb2N1bWVudERp
ZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkV2l0aCA9IG51bGxwdHI7CisKK3ZvaWQgVHJlZVNj
b3BlOjplbnN1cmVEaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZChEb2N1bWVudCYgb2xkRG9j
dW1lbnQpCit7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRpZE1vdmVU
b05ld0RvY3VtZW50V2FzQ2FsbGVkKTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTigmb2xkRG9jdW1lbnQgPT0gb2xkRG9jdW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0Nh
bGxlZFdpdGgpOworICAgIGRpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkID0gdHJ1ZTsKK30K
KyNlbmRpZgorCit2b2lkIFRyZWVTY29wZTo6bW92ZU5vZGVUb05ld0RvY3VtZW50KE5vZGUmIG5v
ZGUsIERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQoreworICAg
IEFTU0VSVCghbm9kZS5pc0Nvbm5lY3RlZCgpIHx8ICZvbGREb2N1bWVudCAhPSAmbmV3RG9jdW1l
bnQpOworCisgICAgbmV3RG9jdW1lbnQuaW5jcmVtZW50UmVmZXJlbmNpbmdOb2RlQ291bnQoKTsK
KyAgICBvbGREb2N1bWVudC5kZWNyZW1lbnRSZWZlcmVuY2luZ05vZGVDb3VudCgpOworCisjaWYg
IUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKKyAgICBkaWRN
b3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZCA9IGZhbHNlOworICAgIG9sZERvY3VtZW50RGlkTW92
ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWRXaXRoID0gJm9sZERvY3VtZW50OworI2VuZGlmCisKKyAg
ICBub2RlLmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7Cisg
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oZGlkTW92ZVRvTmV3RG9jdW1lbnRX
YXNDYWxsZWQpOworfQorCit2b2lkIFRyZWVTY29wZTo6bW92ZVNoYWRvd1RyZWVUb05ld0RvY3Vt
ZW50KFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QsIERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1l
bnQmIG5ld0RvY3VtZW50KQoreworICAgIGZvciAoTm9kZSogbm9kZSA9ICZzaGFkb3dSb290OyBu
b2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSwgJnNoYWRvd1Jvb3QpKSB7Cisg
ICAgICAgIG1vdmVOb2RlVG9OZXdEb2N1bWVudCgqbm9kZSwgb2xkRG9jdW1lbnQsIG5ld0RvY3Vt
ZW50KTsKKyAgICAgICAgaWYgKGF1dG8qIHNoYWRvdyA9IG5vZGUtPnNoYWRvd1Jvb3QoKSkKKyAg
ICAgICAgICAgIG1vdmVTaGFkb3dUcmVlVG9OZXdEb2N1bWVudCgqc2hhZG93LCBvbGREb2N1bWVu
dCwgbmV3RG9jdW1lbnQpOworICAgIH0KIH0KIAogc3RhdGljIEVsZW1lbnQqIGZvY3VzZWRGcmFt
ZU93bmVyRWxlbWVudChGcmFtZSogZm9jdXNlZEZyYW1lLCBGcmFtZSogY3VycmVudEZyYW1lKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSwxMSBAQCBw
dWJsaWM6CiAKICAgICAvLyBVc2VkIGJ5IHRoZSBiYXNpYyBET00gbXV0YXRpb24gbWV0aG9kcyAo
ZS5nLiwgYXBwZW5kQ2hpbGQoKSkuCiAgICAgdm9pZCBhZG9wdElmTmVlZGVkKE5vZGUmKTsKKyNp
ZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQorICAgIHN0
YXRpYyB2b2lkIGVuc3VyZURpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkKERvY3VtZW50JiBv
bGREb2N1bWVudCk7CisjZWxzZQorICAgIHN0YXRpYyB2b2lkIGVuc3VyZURpZE1vdmVUb05ld0Rv
Y3VtZW50V2FzQ2FsbGVkKERvY3VtZW50JikgeyB9CisjZW5kaWYKIAogICAgIENvbnRhaW5lck5v
ZGUmIHJvb3ROb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yb290Tm9kZTsgfQogCkBAIC0xMTgsNiAr
MTIzLDEwIEBAIHByb3RlY3RlZDoKICAgICBOb2RlKiBub2RlRnJvbVBvaW50KGNvbnN0IExheW91
dFBvaW50JiBjbGllbnRQb2ludCwgTGF5b3V0UG9pbnQqIGxvY2FsUG9pbnQpOwogCiBwcml2YXRl
OgorICAgIHZvaWQgbW92ZVRyZWVUb05ld1Njb3BlKE5vZGUmLCBUcmVlU2NvcGUmIG9sZFNjb3Bl
LCBUcmVlU2NvcGUmIG5ld1Njb3BlKTsKKyAgICB2b2lkIG1vdmVOb2RlVG9OZXdEb2N1bWVudChO
b2RlJiwgRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpOworICAg
IHZvaWQgbW92ZVNoYWRvd1RyZWVUb05ld0RvY3VtZW50KFNoYWRvd1Jvb3QmLCBEb2N1bWVudCYg
b2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCk7CisKICAgICBDb250YWluZXJOb2Rl
JiBtX3Jvb3ROb2RlOwogICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8RG9jdW1lbnQ+IG1fZG9j
dW1lbnRTY29wZTsKICAgICBUcmVlU2NvcGUqIG1fcGFyZW50VHJlZVNjb3BlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcAkocmV2aXNpb24gMjE3NjQyKQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCShub25leGlzdGVudCkKQEAg
LTEsMTM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25v
bGxAa2RlLm9yZykKLSAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlz
dG9Aa2RlLm9yZykKLSAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJA
a2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiVHJlZVNjb3BlQWRvcHRlci5oIgotCi0jaW5jbHVkZSAiQXR0ci5oIgotI2lu
Y2x1ZGUgIkVsZW1lbnRSYXJlRGF0YS5oIgotI2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBGSVhNRTogRG8gd2UgZXZlciBjaGFuZ2UgdHJlZSBz
Y29wZXMgZXhjZXB0IGJldHdlZW4gZG9jdW1lbnRzPwotdm9pZCBUcmVlU2NvcGVBZG9wdGVyOjpt
b3ZlVHJlZVRvTmV3U2NvcGUoTm9kZSYgcm9vdCkgY29uc3QKLXsKLSAgICBBU1NFUlQobmVlZHNT
Y29wZUNoYW5nZSgpKTsKLQotICAgIC8vIElmIGFuIGVsZW1lbnQgaXMgbW92ZWQgZnJvbSBhIGRv
Y3VtZW50IGFuZCB0aGVuIGV2ZW50dWFsbHkgYmFjayBhZ2FpbiB0aGUgY29sbGVjdGlvbiBjYWNo
ZSBmb3IKLSAgICAvLyB0aGF0IGVsZW1lbnQgbWF5IGNvbnRhaW4gc3RhbGUgZGF0YSBhcyBjaGFu
Z2VzIG1hZGUgdG8gaXQgd2lsbCBoYXZlIHVwZGF0ZWQgdGhlIERPTVRyZWVWZXJzaW9uCi0gICAg
Ly8gb2YgdGhlIGRvY3VtZW50IGl0IHdhcyBtb3ZlZCB0by4gQnkgaW5jcmVhc2luZyB0aGUgRE9N
VHJlZVZlcnNpb24gb2YgdGhlIGRvbmF0aW5nIGRvY3VtZW50IGhlcmUKLSAgICAvLyB3ZSBlbnN1
cmUgdGhhdCB0aGUgY29sbGVjdGlvbiBjYWNoZSB3aWxsIGJlIGludmFsaWRhdGVkIGFzIG5lZWRl
ZCB3aGVuIHRoZSBlbGVtZW50IGlzIG1vdmVkIGJhY2suCi0gICAgRG9jdW1lbnQmIG9sZERvY3Vt
ZW50ID0gbV9vbGRTY29wZS5kb2N1bWVudFNjb3BlKCk7Ci0gICAgRG9jdW1lbnQmIG5ld0RvY3Vt
ZW50ID0gbV9uZXdTY29wZS5kb2N1bWVudFNjb3BlKCk7Ci0gICAgYm9vbCB3aWxsTW92ZVRvTmV3
RG9jdW1lbnQgPSAmb2xkRG9jdW1lbnQgIT0gJm5ld0RvY3VtZW50OwotICAgIGlmICh3aWxsTW92
ZVRvTmV3RG9jdW1lbnQpIHsKLSAgICAgICAgb2xkRG9jdW1lbnQuaW5jcmVtZW50UmVmZXJlbmNp
bmdOb2RlQ291bnQoKTsKLSAgICAgICAgb2xkRG9jdW1lbnQuaW5jRE9NVHJlZVZlcnNpb24oKTsK
LSAgICB9Ci0KLSAgICBmb3IgKE5vZGUqIG5vZGUgPSAmcm9vdDsgbm9kZTsgbm9kZSA9IE5vZGVU
cmF2ZXJzYWw6Om5leHQoKm5vZGUsICZyb290KSkgewotICAgICAgICB1cGRhdGVUcmVlU2NvcGUo
Km5vZGUpOwotCi0gICAgICAgIGlmICh3aWxsTW92ZVRvTmV3RG9jdW1lbnQpCi0gICAgICAgICAg
ICBtb3ZlTm9kZVRvTmV3RG9jdW1lbnQoKm5vZGUsIG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7
Ci0gICAgICAgIGVsc2UgaWYgKG5vZGUtPmhhc1JhcmVEYXRhKCkpIHsKLSAgICAgICAgICAgIE5v
ZGVSYXJlRGF0YSogcmFyZURhdGEgPSBub2RlLT5yYXJlRGF0YSgpOwotICAgICAgICAgICAgaWYg
KHJhcmVEYXRhLT5ub2RlTGlzdHMoKSkKLSAgICAgICAgICAgICAgICByYXJlRGF0YS0+bm9kZUxp
c3RzKCktPmFkb3B0VHJlZVNjb3BlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWlzPEVs
ZW1lbnQ+KCpub2RlKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChub2Rl
LT5oYXNTeW50aGV0aWNBdHRyQ2hpbGROb2RlcygpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8m
IGF0dHIgOiBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkuYXR0ck5vZGVMaXN0KCkpCi0gICAgICAg
ICAgICAgICAgbW92ZVRyZWVUb05ld1Njb3BlKCphdHRyKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChhdXRvKiBzaGFkb3cgPSBub2RlLT5zaGFkb3dSb290KCkpIHsKLSAgICAgICAgICAgIHNo
YWRvdy0+c2V0UGFyZW50VHJlZVNjb3BlKG1fbmV3U2NvcGUpOwotICAgICAgICAgICAgaWYgKHdp
bGxNb3ZlVG9OZXdEb2N1bWVudCkKLSAgICAgICAgICAgICAgICBtb3ZlU2hhZG93VHJlZVRvTmV3
RG9jdW1lbnQoKnNoYWRvdywgb2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIGlmICh3aWxsTW92ZVRvTmV3RG9jdW1lbnQpCi0gICAgICAgIG9sZERvY3Vt
ZW50LmRlY3JlbWVudFJlZmVyZW5jaW5nTm9kZUNvdW50KCk7Ci19Ci0KLXZvaWQgVHJlZVNjb3Bl
QWRvcHRlcjo6bW92ZVNoYWRvd1RyZWVUb05ld0RvY3VtZW50KFNoYWRvd1Jvb3QmIHNoYWRvd1Jv
b3QsIERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBjb25zdAot
ewotICAgIGZvciAoTm9kZSogbm9kZSA9ICZzaGFkb3dSb290OyBub2RlOyBub2RlID0gTm9kZVRy
YXZlcnNhbDo6bmV4dCgqbm9kZSwgJnNoYWRvd1Jvb3QpKSB7Ci0gICAgICAgIG1vdmVOb2RlVG9O
ZXdEb2N1bWVudCgqbm9kZSwgb2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKLSAgICAgICAgaWYg
KGF1dG8qIHNoYWRvdyA9IG5vZGUtPnNoYWRvd1Jvb3QoKSkKLSAgICAgICAgICAgIG1vdmVTaGFk
b3dUcmVlVG9OZXdEb2N1bWVudCgqc2hhZG93LCBvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwot
ICAgIH0KLX0KLQotI2lmbmRlZiBOREVCVUcKLXN0YXRpYyBib29sIGRpZE1vdmVUb05ld0RvY3Vt
ZW50V2FzQ2FsbGVkID0gZmFsc2U7Ci1zdGF0aWMgRG9jdW1lbnQqIG9sZERvY3VtZW50RGlkTW92
ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWRXaXRoID0gbnVsbHB0cjsKLQotdm9pZCBUcmVlU2NvcGVB
ZG9wdGVyOjplbnN1cmVEaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZChEb2N1bWVudCYgb2xk
RG9jdW1lbnQpCi17Ci0gICAgQVNTRVJUKCFkaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZCk7
Ci0gICAgQVNTRVJUX1VOVVNFRChvbGREb2N1bWVudCwgJm9sZERvY3VtZW50ID09IG9sZERvY3Vt
ZW50RGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWRXaXRoKTsKLSAgICBkaWRNb3ZlVG9OZXdE
b2N1bWVudFdhc0NhbGxlZCA9IHRydWU7Ci19Ci0jZW5kaWYKLQotaW5saW5lIHZvaWQgVHJlZVNj
b3BlQWRvcHRlcjo6dXBkYXRlVHJlZVNjb3BlKE5vZGUmIG5vZGUpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUKCFub2RlLmlzVHJlZVNjb3BlKCkpOwotICAgIEFTU0VSVCgmbm9kZS50cmVlU2NvcGUoKSA9
PSAmbV9vbGRTY29wZSk7Ci0gICAgbm9kZS5zZXRUcmVlU2NvcGUobV9uZXdTY29wZSk7Ci19Ci0K
LWlubGluZSB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVOb2RlVG9OZXdEb2N1bWVudChOb2Rl
JiBub2RlLCBEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkgY29u
c3QKLXsKLSAgICBBU1NFUlQoIW5vZGUuaXNDb25uZWN0ZWQoKSB8fCAmb2xkRG9jdW1lbnQgIT0g
Jm5ld0RvY3VtZW50KTsKLQotICAgIG5ld0RvY3VtZW50LmluY3JlbWVudFJlZmVyZW5jaW5nTm9k
ZUNvdW50KCk7Ci0gICAgb2xkRG9jdW1lbnQuZGVjcmVtZW50UmVmZXJlbmNpbmdOb2RlQ291bnQo
KTsKLQotICAgIGlmIChub2RlLmhhc1JhcmVEYXRhKCkpIHsKLSAgICAgICAgTm9kZVJhcmVEYXRh
KiByYXJlRGF0YSA9IG5vZGUucmFyZURhdGEoKTsKLSAgICAgICAgaWYgKGF1dG8qIG5vZGVMaXN0
cyA9IHJhcmVEYXRhLT5ub2RlTGlzdHMoKSkKLSAgICAgICAgICAgIG5vZGVMaXN0cy0+YWRvcHRE
b2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwotICAgIH0KLQotICAgIG9sZERvY3Vt
ZW50Lm1vdmVOb2RlSXRlcmF0b3JzVG9OZXdEb2N1bWVudChub2RlLCBuZXdEb2N1bWVudCk7Ci0K
LSAgICBpZiAoaXM8U2hhZG93Um9vdD4obm9kZSkpCi0gICAgICAgIGRvd25jYXN0PFNoYWRvd1Jv
b3Q+KG5vZGUpLnNldERvY3VtZW50U2NvcGUobmV3RG9jdW1lbnQpOwotCi0jaWZuZGVmIE5ERUJV
RwotICAgIGRpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkID0gZmFsc2U7Ci0gICAgb2xkRG9j
dW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZFdpdGggPSAmb2xkRG9jdW1lbnQ7Ci0j
ZW5kaWYKLQotICAgIG5vZGUuZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOwotICAg
IEFTU0VSVChkaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZCk7Ci19Ci0KLX0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuaAkocmV2aXNpb24gMjE3NjQyKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDY1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2Rl
Lm9yZykKLSAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2Rl
Lm9yZykKLSAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9y
ZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwg
MjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKLSAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUg
Ik5vZGUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBUcmVlU2NvcGU7Ci0KLWNs
YXNzIFRyZWVTY29wZUFkb3B0ZXIgewotcHVibGljOgotICAgIGV4cGxpY2l0IFRyZWVTY29wZUFk
b3B0ZXIoTm9kZSYgdG9BZG9wdCwgVHJlZVNjb3BlJiBuZXdTY29wZSk7Ci0KLSAgICB2b2lkIGV4
ZWN1dGUoKSBjb25zdCB7IG1vdmVUcmVlVG9OZXdTY29wZShtX3RvQWRvcHQpOyB9Ci0gICAgYm9v
bCBuZWVkc1Njb3BlQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gJm1fb2xkU2NvcGUgIT0gJm1fbmV3
U2NvcGU7IH0KLQotI2lmZGVmIE5ERUJVRwotICAgIHN0YXRpYyB2b2lkIGVuc3VyZURpZE1vdmVU
b05ld0RvY3VtZW50V2FzQ2FsbGVkKERvY3VtZW50JikgeyB9Ci0jZWxzZQotICAgIHN0YXRpYyB2
b2lkIGVuc3VyZURpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkKERvY3VtZW50Jik7Ci0jZW5k
aWYKLQotcHJpdmF0ZToKLSAgICB2b2lkIHVwZGF0ZVRyZWVTY29wZShOb2RlJikgY29uc3Q7Ci0g
ICAgdm9pZCBtb3ZlVHJlZVRvTmV3U2NvcGUoTm9kZSYpIGNvbnN0OwotICAgIHZvaWQgbW92ZVNo
YWRvd1RyZWVUb05ld0RvY3VtZW50KFNoYWRvd1Jvb3QmLCBEb2N1bWVudCYgb2xkRG9jdW1lbnQs
IERvY3VtZW50JiBuZXdEb2N1bWVudCkgY29uc3Q7Ci0gICAgdm9pZCBtb3ZlTm9kZVRvTmV3RG9j
dW1lbnQoTm9kZSYsIERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50
KSBjb25zdDsKLQotICAgIE5vZGUmIG1fdG9BZG9wdDsKLSAgICBUcmVlU2NvcGUmIG1fbmV3U2Nv
cGU7Ci0gICAgVHJlZVNjb3BlJiBtX29sZFNjb3BlOwotfTsKLQotaW5saW5lIFRyZWVTY29wZUFk
b3B0ZXI6OlRyZWVTY29wZUFkb3B0ZXIoTm9kZSYgdG9BZG9wdCwgVHJlZVNjb3BlJiBuZXdTY29w
ZSkKLSAgICA6IG1fdG9BZG9wdCh0b0Fkb3B0KQotICAgICwgbV9uZXdTY29wZShuZXdTY29wZSkK
LSAgICAsIG1fb2xkU2NvcGUodG9BZG9wdC50cmVlU2NvcGUoKSkKLXsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyMTc2NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
aWVsZFNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsMTIgKzEyMiwxMyBAQCB2
b2lkIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlCiAgICAgICAgIHVwZGF0ZUZy
b21Db250cm9sRWxlbWVudHNBbmNlc3RvckRpc2FibGVkU3RhdGVVbmRlcigqbGVnZW5kLCB0cnVl
KTsKIH0KIAotdm9pZCBIVE1MRmllbGRTZXRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChE
b2N1bWVudCYgb2xkRG9jdW1lbnQpCit2b2lkIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmRpZE1vdmVU
b05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50
KQogewotICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9s
ZERvY3VtZW50KTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigmZG9jdW1l
bnQoKSA9PSAmbmV3RG9jdW1lbnQpOworICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZE1v
dmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7CiAgICAgaWYgKG1faGFz
RGlzYWJsZWRBdHRyaWJ1dGUpIHsKICAgICAgICAgb2xkRG9jdW1lbnQucmVtb3ZlRGlzYWJsZWRG
aWVsZHNldEVsZW1lbnQoKTsKLSAgICAgICAgZG9jdW1lbnQoKS5hZGREaXNhYmxlZEZpZWxkc2V0
RWxlbWVudCgpOworICAgICAgICBuZXdEb2N1bWVudC5hZGREaXNhYmxlZEZpZWxkc2V0RWxlbWVu
dCgpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRF
bGVtZW50LmgJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZp
ZWxkU2V0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKSBmaW5hbDsKICAgICB2b2lkIGRp
c2FibGVkU3RhdGVDaGFuZ2VkKCkgZmluYWw7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29u
c3QgQ2hpbGRDaGFuZ2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERv
Y3VtZW50JiBvbGREb2N1bWVudCkgZmluYWw7CisgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVu
dChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkgZmluYWw7CiAK
ICAgICBib29sIG1hdGNoZXNWYWxpZFBzZXVkb0NsYXNzKCkgY29uc3QgZmluYWw7CiAgICAgYm9v
bCBtYXRjaGVzSW52YWxpZFBzZXVkb0NsYXNzKCkgY29uc3QgZmluYWw7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDIx
NzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI1MCwxMCArMjUwLDEwIEBAIHZvaWQgSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6ZGlkQXR0YWNoUmUKICAgICB9CiB9CiAKLXZvaWQgSFRNTEZvcm1Db250cm9sRWxl
bWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50KQordm9pZCBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xk
RG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkKIHsKICAgICBGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsKLSAgICBIVE1MRWxlbWVu
dDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOworICAgIEhUTUxFbGVtZW50Ojpk
aWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogfQogCiBzdGF0
aWMgdm9pZCBhZGRJbnZhbGlkRWxlbWVudFRvQW5jZXN0b3JGcm9tSW5zZXJ0aW9uUG9pbnQoY29u
c3QgSFRNTEZvcm1Db250cm9sRWxlbWVudCYgZWxlbWVudCwgQ29udGFpbmVyTm9kZSogaW5zZXJ0
aW9uUG9pbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuaAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw3ICsxMzgsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29u
dGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRJbnNlcnRpbmdTdWJ0cmVl
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERv
Y3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzdXBw
b3J0c0ZvY3VzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxl
KEtleWJvYXJkRXZlbnQmKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5jcHAJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODU5LDE0ICs4NTks
MTQgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlc3VtZUZyb21Eb2N1bWVudAogICAgIHJlc2V0
QXNzb2NpYXRlZEZvcm1Db250cm9sRWxlbWVudHMoKTsKIH0KIAotdm9pZCBIVE1MRm9ybUVsZW1l
bnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkKK3ZvaWQgSFRN
TEZvcm1FbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQs
IERvY3VtZW50JiBuZXdEb2N1bWVudCkKIHsKICAgICBpZiAoIXNob3VsZEF1dG9jb21wbGV0ZSgp
KSB7CiAgICAgICAgIG9sZERvY3VtZW50LnVucmVnaXN0ZXJGb3JEb2N1bWVudFN1c3BlbnNpb25D
YWxsYmFja3ModGhpcyk7CiAgICAgICAgIGRvY3VtZW50KCkucmVnaXN0ZXJGb3JEb2N1bWVudFN1
c3BlbnNpb25DYWxsYmFja3ModGhpcyk7CiAgICAgfQogCi0gICAgSFRNTEVsZW1lbnQ6OmRpZE1v
dmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsKKyAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRv
TmV3RG9jdW1lbnQob2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKIH0KIAogYm9vbCBIVE1MRm9y
bUVsZW1lbnQ6OnNob3VsZEF1dG9jb21wbGV0ZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmgJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsxNDcsNyBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCByZXN1bWVGcm9tRG9jdW1lbnRTdXNwZW5zaW9uKCkgZmlu
YWw7CiAKLSAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVu
dCkgZmluYWw7CisgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9j
dW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkgZmluYWw7CiAKICAgICB2b2lkIGNvcHlOb25B
dHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIGZpbmFsOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIx
NzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU0NSwxMCArNTQ1LDEwIEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6YWRk
U3VicmVzb3VyY2VBdHQKICAgICBhZGRTdWJyZXNvdXJjZVVSTCh1cmxzLCBkb2N1bWVudCgpLmNv
bXBsZXRlVVJMKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odXNlbWFwQXR0cikpKTsK
IH0KIAotdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVu
dCYgb2xkRG9jdW1lbnQpCit2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3Vt
ZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogewogICAg
IG1faW1hZ2VMb2FkZXIuZWxlbWVudERpZE1vdmVUb05ld0RvY3VtZW50KCk7Ci0gICAgSFRNTEVs
ZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsKKyAgICBIVE1MRWxlbWVu
dDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKIH0KIAog
Ym9vbCBIVE1MSW1hZ2VFbGVtZW50Ojppc1NlcnZlck1hcCgpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcg
Kzk3LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEhUTUxJbWFnZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50KiA9IDApOwogCi0gICAg
dm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBE
b2N1bWVudCYgbmV3RG9jdW1lbnQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92
ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyMTc2NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIyLDMxICsxNTIyLDI2IEBAIHZvaWQgSFRNTElucHV0
RWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGEKICNlbmRpZgogfQogCi12b2lkIEhUTUxJbnB1dEVs
ZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkKK3ZvaWQg
SFRNTElucHV0RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3Vt
ZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCiB7CiAgICAgaWYgKGltYWdlTG9hZGVyKCkpCiAg
ICAgICAgIGltYWdlTG9hZGVyKCktPmVsZW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudCgpOwogCi0g
ICAgYm9vbCBuZWVkc1N1c3BlbnNpb25DYWxsYmFjayA9IHRoaXMtPm5lZWRzU3VzcGVuc2lvbkNh
bGxiYWNrKCk7CiAgICAgLy8gQWx3YXlzIHVucmVnaXN0ZXIgZm9yIGNhY2hlIGNhbGxiYWNrcyB3
aGVuIGxlYXZpbmcgYSBkb2N1bWVudCwgZXZlbiBpZiB3ZSB3b3VsZCBvdGhlcndpc2UgbGlrZSB0
byBiZSByZWdpc3RlcmVkCi0gICAgaWYgKG5lZWRzU3VzcGVuc2lvbkNhbGxiYWNrKQorICAgIGlm
IChuZWVkc1N1c3BlbnNpb25DYWxsYmFjaygpKSB7CiAgICAgICAgIG9sZERvY3VtZW50LnVucmVn
aXN0ZXJGb3JEb2N1bWVudFN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7CisgICAgICAgIG5ld0Rv
Y3VtZW50LnJlZ2lzdGVyRm9yRG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOworICAg
IH0KICAgICBpZiAoaXNSYWRpb0J1dHRvbigpKQogICAgICAgICBvbGREb2N1bWVudC5mb3JtQ29u
dHJvbGxlcigpLnJhZGlvQnV0dG9uR3JvdXBzKCkucmVtb3ZlQnV0dG9uKHRoaXMpOwogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCi0gICAgaWYgKG1faGFzVG91Y2hFdmVudEhhbmRsZXIpCisgICAg
aWYgKG1faGFzVG91Y2hFdmVudEhhbmRsZXIpIHsKICAgICAgICAgb2xkRG9jdW1lbnQuZGlkUmVt
b3ZlRXZlbnRUYXJnZXROb2RlKCp0aGlzKTsKKyAgICAgICAgbmV3RG9jdW1lbnQuZGlkQWRkVG91
Y2hFdmVudEhhbmRsZXIoKnRoaXMpOworICAgIH0KICNlbmRpZgogCi0gICAgaWYgKG5lZWRzU3Vz
cGVuc2lvbkNhbGxiYWNrKQotICAgICAgICBkb2N1bWVudCgpLnJlZ2lzdGVyRm9yRG9jdW1lbnRT
dXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOwotCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAg
ICBpZiAobV9oYXNUb3VjaEV2ZW50SGFuZGxlcikKLSAgICAgICAgZG9jdW1lbnQoKS5kaWRBZGRU
b3VjaEV2ZW50SGFuZGxlcigqdGhpcyk7Ci0jZW5kaWYKLQotICAgIEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7CisgICAgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50LCBu
ZXdEb2N1bWVudCk7CiB9CiAKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6YWRkU3VicmVzb3VyY2VB
dHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0OCw3
ICszNDgsNyBAQCBwcml2YXRlOgogICAgIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5z
ZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaGVkSW5zZXJ0
aW5nU3VidHJlZSgpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYp
IGZpbmFsOwotICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3Vt
ZW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGRE
b2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5hbDsKIAogICAgIGJvb2wgaGFzQ3Vz
dG9tRm9jdXNMb2dpYygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJs
ZShLZXlib2FyZEV2ZW50JikgY29uc3QgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczMywxOCArNzMz
LDE4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dW5yZWdpc3RlcldpdGhEb2MKIAogfQogCi12
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGRE
b2N1bWVudCkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9j
dW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCiB7CisgICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJmRvY3VtZW50KCkgPT0gJm5ld0RvY3VtZW50KTsK
ICAgICBpZiAobV9zaG91bGREZWxheUxvYWRFdmVudCkgewogICAgICAgICBvbGREb2N1bWVudC5k
ZWNyZW1lbnRMb2FkRXZlbnREZWxheUNvdW50KCk7Ci0gICAgICAgIGRvY3VtZW50KCkuaW5jcmVt
ZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOworICAgICAgICBuZXdEb2N1bWVudC5pbmNyZW1lbnRM
b2FkRXZlbnREZWxheUNvdW50KCk7CiAgICAgfQogCiAgICAgdW5yZWdpc3RlcldpdGhEb2N1bWVu
dChvbGREb2N1bWVudCk7CisgICAgcmVnaXN0ZXJXaXRoRG9jdW1lbnQobmV3RG9jdW1lbnQpOwog
Ci0gICAgcmVnaXN0ZXJXaXRoRG9jdW1lbnQoZG9jdW1lbnQoKSk7Ci0KLSAgICBIVE1MRWxlbWVu
dDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOworICAgIEhUTUxFbGVtZW50Ojpk
aWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogICAgIHVwZGF0
ZVNob3VsZEF1dG9wbGF5KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCShyZXZpc2lvbiAyMTc2NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMxLDcgKzUzMSw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZERldGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1
bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkTW92ZVRv
TmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQp
IG92ZXJyaWRlOwogCiAgICAgZW51bSBEaXNwbGF5TW9kZSB7IFVua25vd24sIE5vbmUsIFBvc3Rl
ciwgUG9zdGVyV2FpdGluZ0ZvclZpZGVvLCBWaWRlbyB9OwogICAgIERpc3BsYXlNb2RlIGRpc3Bs
YXlNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TW9kZTsgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIxNzY0MikKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OTUsMTAgKzQ5NSwxMCBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjphZGRTdWJyZXNvdXJj
ZUF0CiAgICAgICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIGRvY3VtZW50KCkuY29tcGxldGVV
UkwodXNlTWFwKSk7CiB9CiAKLXZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OmRpZE1vdmVUb05ld0Rv
Y3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkKK3ZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OmRp
ZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0Rv
Y3VtZW50KQogewogICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1l
bnQob2xkRG9jdW1lbnQpOwotICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05l
d0RvY3VtZW50KG9sZERvY3VtZW50KTsKKyAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRN
b3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogfQogCiBib29sIEhU
TUxPYmplY3RFbGVtZW50OjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGVuY29kaW5nLCBi
b29sKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAkocmV2aXNp
b24gMjE3NjQyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5pc2hl
ZEluc2VydGluZ1N1YnRyZWUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5l
ck5vZGUmKSBmaW5hbDsKIAotICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQm
IG9sZERvY3VtZW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3Vt
ZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5hbDsKIAogICAgIHZv
aWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgZmluYWw7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBpY3R1cmVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQaWN0dXJlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIxNzY0
MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBpY3R1cmVFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDEwIEBAIEhUTUxQaWN0dXJlRWxlbWVudDo6fkhUTUxQaWN0
dXJlRWxlbWVudCgKICAgICBkb2N1bWVudCgpLnJlbW92ZVZpZXdwb3J0RGVwZW5kZW50UGljdHVy
ZSgqdGhpcyk7CiB9CiAKLXZvaWQgSFRNTFBpY3R1cmVFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1
bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQpCit2b2lkIEhUTUxQaWN0dXJlRWxlbWVudDo6ZGlk
TW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9j
dW1lbnQpCiB7CiAgICAgb2xkRG9jdW1lbnQucmVtb3ZlVmlld3BvcnREZXBlbmRlbnRQaWN0dXJl
KCp0aGlzKTsKLSAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1l
bnQpOworICAgIEhUTUxFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCwg
bmV3RG9jdW1lbnQpOwogICAgIHNvdXJjZXNDaGFuZ2VkKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBpY3R1cmVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGljdHVyZUVsZW1lbnQuaAkocmV2aXNpb24gMjE3NjQyKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGljdHVyZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDgsNyArNDgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxQaWN0dXJlRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZvaWQgZGlkTW92ZVRvTmV3
RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZE1vdmVU
b05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50
KSBmaW5hbDsKIAogICAgIFdlYWtQdHJGYWN0b3J5PEhUTUxQaWN0dXJlRWxlbWVudD4gbV93ZWFr
RmFjdG9yeSB7IHRoaXMgfTsKICAgICBWZWN0b3I8TWVkaWFRdWVyeVJlc3VsdD4gbV92aWV3cG9y
dERlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHRzOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMTc2NDIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNjYsMTcgKzI2NiwxOCBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmZpbmlz
aFBhcnNpCiAgICAgICAgIGludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKIH0KIAotdm9pZCBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xk
RG9jdW1lbnQpCit2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3Vt
ZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogeworICAg
IEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZkb2N1bWVudCgpID09ICZuZXdEb2N1
bWVudCk7CiAgICAgaWYgKG1fbmVlZHNEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3MpIHsKICAg
ICAgICAgb2xkRG9jdW1lbnQudW5yZWdpc3RlckZvckRvY3VtZW50U3VzcGVuc2lvbkNhbGxiYWNr
cyh0aGlzKTsKLSAgICAgICAgZG9jdW1lbnQoKS5yZWdpc3RlckZvckRvY3VtZW50U3VzcGVuc2lv
bkNhbGxiYWNrcyh0aGlzKTsKKyAgICAgICAgbmV3RG9jdW1lbnQucmVnaXN0ZXJGb3JEb2N1bWVu
dFN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7CiAgICAgfQogCiAgICAgaWYgKG1faW1hZ2VMb2Fk
ZXIpCiAgICAgICAgIG1faW1hZ2VMb2FkZXItPmVsZW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudCgp
OwogCi0gICAgSFRNTFBsdWdJbkVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3Vt
ZW50KTsKKyAgICBIVE1MUGx1Z0luRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9j
dW1lbnQsIG5ld0RvY3VtZW50KTsKIH0KIAogdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpw
cmVwYXJlRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCShyZXZpc2lvbiAyMTc2NDIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
ODMsNyArODMsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSFRNTFBsdWdJbkltYWdlRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYsIGJvb2wgY3JlYXRl
ZEJ5UGFyc2VyKTsKIAotICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9s
ZERvY3VtZW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3Vt
ZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBvdmVycmlkZTsKICAgICBi
b29sIHJlcXVlc3RPYmplY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1WYWx1ZXMpIGZpbmFsOwogCiAgICAgYm9vbCBpc0ltYWdlVHlwZSgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MTc2NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MiwxMiArODIsMTMgQEAgUmVmPE5vZGU+IEhUTUxUZW1wbGF0ZUVs
ZW1lbnQ6OmNsb25lTm9kZQogICAgIHJldHVybiBjbG9uZS5yZWxlYXNlTm9uTnVsbCgpOwogfQog
Ci12b2lkIEhUTUxUZW1wbGF0ZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50
JiBvbGREb2N1bWVudCkKK3ZvaWQgSFRNTFRlbXBsYXRlRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9j
dW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCiB7Ci0g
ICAgSFRNTEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsKKyAgICBI
VE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50
KTsKICAgICBpZiAoIW1fY29udGVudCkKICAgICAgICAgcmV0dXJuOwotICAgIGRvY3VtZW50KCku
ZW5zdXJlVGVtcGxhdGVEb2N1bWVudCgpLmFkb3B0SWZOZWVkZWQoKm1fY29udGVudCk7CisgICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJmRvY3VtZW50KCkgPT0gJm5ld0RvY3Vt
ZW50KTsKKyAgICBuZXdEb2N1bWVudC5lbnN1cmVUZW1wbGF0ZURvY3VtZW50KCkuYWRvcHRJZk5l
ZWRlZCgqbV9jb250ZW50KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmgJKHJldmlzaW9uIDIxNzY0MikK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgSFRNTFRlbXBsYXRlRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIFJlZjxOb2RlPiBjbG9uZU5v
ZGVJbnRlcm5hbChEb2N1bWVudCYsIENsb25pbmdPcGVyYXRpb24pIGZpbmFsOwotICAgIHZvaWQg
ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50KSBmaW5hbDsKKyAgICB2
b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQm
IG5ld0RvY3VtZW50KSBmaW5hbDsKIAogICAgIG11dGFibGUgUmVmUHRyPFRlbXBsYXRlQ29udGVu
dERvY3VtZW50RnJhZ21lbnQ+IG1fY29udGVudDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MCwxMSAr
MzYwLDExIEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2V0V2Via2l0V2lyZWxlc3MKIH0KICNl
bmRpZgogCi12b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3Vt
ZW50JiBvbGREb2N1bWVudCkKK3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9j
dW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCiB7CiAg
ICAgaWYgKG1faW1hZ2VMb2FkZXIpCiAgICAgICAgIG1faW1hZ2VMb2FkZXItPmVsZW1lbnREaWRN
b3ZlVG9OZXdEb2N1bWVudCgpOwotICAgIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZE1vdmVUb05ld0Rv
Y3VtZW50KG9sZERvY3VtZW50KTsKKyAgICBIVE1MTWVkaWFFbGVtZW50OjpkaWRNb3ZlVG9OZXdE
b2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogfQogCiAjaWYgRU5BQkxFKE1FRElB
X1NUQVRJU1RJQ1MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAko
cmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9v
bCBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVEaXNwbGF5
U3RhdGUoKSBmaW5hbDsKLSAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBv
bGREb2N1bWVudCkgZmluYWw7CisgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVu
dCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkgZmluYWw7CiAgICAgdm9pZCBz
ZXREaXNwbGF5TW9kZShEaXNwbGF5TW9kZSkgZmluYWw7CiAKICAgICBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6TWVkaWFUeXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6VmlkZW87IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZURvY3VtZW50LmNwcAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZh
dGU6CiAgICAgfQogCiAgICAgdmlydHVhbCB+SW1hZ2VEb2N1bWVudEVsZW1lbnQoKTsKLSAgICB2
b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERv
Y3VtZW50JiBuZXdEb2N1bWVudCkgb3ZlcnJpZGU7CiAKICAgICBJbWFnZURvY3VtZW50KiBtX2lt
YWdlRG9jdW1lbnQ7CiB9OwpAQCAtNDI2LDEzICs0MjYsMTMgQEAgSW1hZ2VEb2N1bWVudEVsZW1l
bnQ6On5JbWFnZURvY3VtZW50RWxlbQogICAgICAgICBtX2ltYWdlRG9jdW1lbnQtPmRpc2Nvbm5l
Y3RJbWFnZUVsZW1lbnQoKTsKIH0KIAotdm9pZCBJbWFnZURvY3VtZW50RWxlbWVudDo6ZGlkTW92
ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50KQordm9pZCBJbWFnZURvY3VtZW50
RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1
bWVudCYgbmV3RG9jdW1lbnQpCiB7CiAgICAgaWYgKG1faW1hZ2VEb2N1bWVudCkgewogICAgICAg
ICBtX2ltYWdlRG9jdW1lbnQtPmRpc2Nvbm5lY3RJbWFnZUVsZW1lbnQoKTsKICAgICAgICAgbV9p
bWFnZURvY3VtZW50ID0gbnVsbHB0cjsKICAgICB9Ci0gICAgSFRNTEltYWdlRWxlbWVudDo6ZGlk
TW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOworICAgIEhUTUxJbWFnZUVsZW1lbnQ6OmRp
ZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7CiB9CiAKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMTc2NDIp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjEyLDEwICsyMTIsMTAgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291
cmNlQXR0cgogICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIGRvY3VtZW50KCkuY29tcGxldGVV
UkwoaHJlZigpKSk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1
bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQpCit2b2lkIFNWR0ltYWdlRWxlbWVudDo6ZGlkTW92
ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1l
bnQpCiB7CiAgICAgbV9pbWFnZUxvYWRlci5lbGVtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnQoKTsK
LSAgICBTVkdHcmFwaGljc0VsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50
KTsKKyAgICBTVkdHcmFwaGljc0VsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3Vt
ZW50LCBuZXdEb2N1bWVudCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJ
bWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VF
bGVtZW50LmgJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFn
ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkgZmluYWw7CiAKICAgICBib29sIHNl
bGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQpIGZpbmFsOwor
ICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1
bWVudCYgbmV3RG9jdW1lbnQpIGZpbmFsOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR0ltYWdlRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoWCwgeCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9u
IDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTksMTEgKzk5LDExIEBAIFNWR1NWR0VsZW1lbnQ6On5TVkdTVkdFbGVtZW50
KCkKICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZW1vdmVUaW1lQ29udGFp
bmVyKHRoaXMpOwogfQogCi12b2lkIFNWR1NWR0VsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50
KERvY3VtZW50JiBvbGREb2N1bWVudCkKK3ZvaWQgU1ZHU1ZHRWxlbWVudDo6ZGlkTW92ZVRvTmV3
RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCiB7
CiAgICAgb2xkRG9jdW1lbnQudW5yZWdpc3RlckZvckRvY3VtZW50U3VzcGVuc2lvbkNhbGxiYWNr
cyh0aGlzKTsKICAgICBkb2N1bWVudCgpLnJlZ2lzdGVyRm9yRG9jdW1lbnRTdXNwZW5zaW9uQ2Fs
bGJhY2tzKHRoaXMpOwotICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1l
bnQob2xkRG9jdW1lbnQpOworICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9j
dW1lbnQob2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5n
JiBTVkdTVkdFbGVtZW50Ojpjb250ZW50U2NyaXB0VHlwZSgpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmgJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgflNWR1NWR0VsZW1lbnQoKTsKIAogICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1l
bnQmIG9sZERvY3VtZW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50
KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBvdmVycmlkZTsK
ICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
aWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVu
ZGVyU3R5bGUmKSBvdmVycmlkZTsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
IG92ZXJyaWRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312157</attachid>
            <date>2017-06-06 20:04:45 -0700</date>
            <delta_ts>2017-06-07 01:02:50 -0700</delta_ts>
            <desc>Fixed Windows build</desc>
            <filename>bug-173040-20170606200444.patch</filename>
            <type>text/plain</type>
            <size>53365</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDE3LTA2LTA2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1lcmdlIFRyZWVTY29wZUFkb3B0
ZXIgaW50byBUcmVlU2NvcGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MzA0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1lcmdlZCBUcmVlU2NvcGVBZG9wdGVyIGludG8gVHJlZVNjb3BlIHNpbmNlIGl0
J3MgdXNlZCBieSBUcmVlU2NvcGU6OmFkb3B0SWZOZWVkZWQuCisKKyAgICAgICAgTW9zdCBvZiBj
b2RlIGNoYW5nZXMgYXJlIGZvciBkaWRNb3ZlVG9OZXdEb2N1bWVudCB0YWtpbmcgdGhlIG5ldyBk
b2N1bWVudCBhcyBhbiBhcmd1bWVudCwKKyAgICAgICAgd2hpY2ggaXMgdXNlZCBieSBTaGFkb3dS
b290OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCB0byB1cGRhdGUgaXRzIGRvY3VtZW50IHNjb3BlLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGVyZSBzaG91bGQgYmUgbm8gYmVoYXZpb3Jh
bCBjaGFuZ2UuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAg
ICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOiBNb3ZlZCB0aGUgY29kZSB0byBtb3Zl
cyB0aGUgbm9kZSBsaXN0cyBhbmQgbm9kZSBpdGVyYXRvcnMgaGVyZQorICAgICAgICBmcm9tIFRy
ZWVTY29wZUFkb3B0ZXI6Om1vdmVOb2RlVG9OZXdEb2N1bWVudC4KKyAgICAgICAgKiBkb20vTm9k
ZS5oOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd1Jvb3Q6OmRpZE1vdmVUb05ld0RvY3VtZW50KTogTW92ZWQgdGhlIGNvZGUgdG8gdXBkYXRl
IHRoZSBkb2N1bWVudCBzY29wZSBoZXJlCisgICAgICAgIGZyb20gVHJlZVNjb3BlQWRvcHRlcjo6
bW92ZU5vZGVUb05ld0RvY3VtZW50LgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAg
ICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmFk
b3B0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjptb3ZlVHJlZVRvTmV3
U2NvcGUpOiBNb3ZlZCBmcm9tIFRyZWVTY29wZUFkb3B0ZXIuIE5vdyB0YWtlcyB0aGUgb2xkIHRy
ZWUgc2NvcGUgYW5kCisgICAgICAgIHRoZSBuZXcgdHJlZSBzY29wZSBhcyBhcmd1bWVudHMgKHRo
ZXkgdXNlZCB0byBiZSBtZW1iZXJzIG9mIFRyZWVTY29wZUFkb3B0ZXIpLiBBbHNvIG1lcmdlZCB1
cGRhdGVUcmVlU2NvcGUKKyAgICAgICAgaW50byB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAoV2Vi
Q29yZTo6VHJlZVNjb3BlOjplbnN1cmVEaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZCk6IE1v
dmVkIGZyb20gVHJlZVNjb3BlQWRvcHRlci4KKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6
bW92ZU5vZGVUb05ld0RvY3VtZW50KTogRGl0dG8uIFRoZSBjb2RlIHRvIGFkb3B0IG5vZGUgbGlz
dHMgYW5kIG5vZGUgaXRlcmF0b3JzIGhhdmUKKyAgICAgICAgYmVlbiBtb3ZlZCB0byBOb2RlOjpk
aWRNb3ZlVG9OZXdEb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6bW92ZVNo
YWRvd1RyZWVUb05ld0RvY3VtZW50KTogTW92ZWQgZnJvbSBUcmVlU2NvcGVBZG9wdGVyLgorICAg
ICAgICAqIGRvbS9UcmVlU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6ZW5z
dXJlRGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQpOgorICAgICAgICAqIGRvbS9UcmVlU2Nv
cGVBZG9wdGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vVHJlZVNjb3BlQWRvcHRlci5o
OiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50
KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojpk
aWRNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KTogR3JvdXBlZCByZWxhdGVk
IGZ1bmN0aW9uIGNhbGxzIG9uIG5ldy9vbGQgZG9jdW1lbnRzLgorICAgICAgICAqIGh0bWwvSFRN
TElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6
ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxQaWN0dXJlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MUGljdHVyZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAg
KiBodG1sL0hUTUxQaWN0dXJlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUZW1wbGF0ZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToK
KyAgICAgICAgKiBodG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6
ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURvY3VtZW50RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIHN2
Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50
OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1NWR0VsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHU1ZH
RWxlbWVudC5oOgorCiAyMDE3LTA1LTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBDb2RlR2VuZXJhdG9ySlMncyBJbnN0YW5jZU5lZWRzVmlzaXRDaGlsZHJlbiBz
aG91bGQgbm90IHJldHVybiB0cnVlIGp1c3QgYmVjYXVzZSBhIGNsYXNzIGlzIC8gZXh0ZW5kcyBF
dmVudFRhcmdldC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMTc2NDIpCisr
KyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTU2OSw3
ICsxNTY5LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9UcmFuc2l0aW9uRXZlbnQu
Y3BwCiAgICAgZG9tL1RyYXZlcnNhbC5jcHAKICAgICBkb20vVHJlZVNjb3BlLmNwcAotICAgIGRv
bS9UcmVlU2NvcGVBZG9wdGVyLmNwcAogICAgIGRvbS9UcmVlV2Fsa2VyLmNwcAogICAgIGRvbS9V
SUV2ZW50LmNwcAogICAgIGRvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmNwcApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjE3NjQyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NDg5LDggKzQ0ODksNiBAQAogCQlBNzc5NzkyOTBE
NkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Nzk3OTI1MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0ltYWdl
RGF0YS5oICovOyB9OwogCQlBNzdCNDFBMDEyRTY3NUE5MDA1NDM0M0QgLyogVGV4dEV2ZW50SW5w
dXRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NzdCNDE5RjEyRTY3NUE5MDA1NDM0M0QgLyogVGV4dEV2ZW50SW5wdXRUeXBlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc3RDAwMTIxMzNCMEFF
QjAwRDY2NThDIC8qIFRleHRDaGVja2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc3RDAwMTExMzNCMEFFQjAwRDY2NThDIC8qIFRleHRDaGVja2lu
Zy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE3
N0UxRkVGMTRBQUNCNkUwMDVCN0NCNiAvKiBUcmVlU2NvcGVBZG9wdGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3N0UxRkVEMTRBQUNCNkUwMDVC
N0NCNiAvKiBUcmVlU2NvcGVBZG9wdGVyLmNwcCAqLzsgfTsKLQkJQTc3RTFGRjAxNEFBQ0I2RTAw
NUI3Q0I2IC8qIFRyZWVTY29wZUFkb3B0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3N0UxRkVFMTRBQUNCNkUwMDVCN0NCNiAvKiBUcmVlU2NvcGVB
ZG9wdGVyLmggKi87IH07CiAJCUE3ODQ5NDFCMEI1RkU1MDcwMDFFMjM3QSAvKiBEYXRhVHJhbnNm
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4
NDk0MUEwQjVGRTUwNzAwMUUyMzdBIC8qIERhdGFUcmFuc2Zlci5jcHAgKi87IH07CiAJCUE3OEZF
MTNCMTIzNjZCMTAwMEFDRThEMCAvKiBTcGVsbENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4RkUxMzkxMjM2NkIxMDAwQUNFOEQwIC8q
IFNwZWxsQ2hlY2tlci5jcHAgKi87IH07CiAJCUE3OEZFMTNDMTIzNjZCMTAwMEFDRThEMCAvKiBT
cGVsbENoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3OEZFMTNBMTIzNjZCMTAwMEFDRThEMCAvKiBTcGVsbENoZWNrZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI3NjYsOCArMTI3NjQs
NiBAQAogCQlBNzc5NzkyNTBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbWFnZURhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTc3QjQxOUYxMkU2NzVBOTAwNTQzNDNEIC8qIFRleHRFdmVudElucHV0
VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0RXZlbnRJbnB1dFR5
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc3RDAwMTExMzNCMEFFQjAwRDY2
NThDIC8qIFRleHRDaGVja2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZXh0Q2hlY2tpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTc3RTFGRUQxNEFB
Q0I2RTAwNUI3Q0I2IC8qIFRyZWVTY29wZUFkb3B0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVHJlZVNjb3BlQWRvcHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUE3N0UxRkVFMTRBQUNCNkUwMDVCN0NCNiAvKiBUcmVlU2NvcGVBZG9wdGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyZWVTY29wZUFkb3B0ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc4NDk0MUEwQjVGRTUwNzAwMUUyMzdBIC8q
IERhdGFUcmFuc2Zlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGF0YVRyYW5zZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc4RkUxMzkx
MjM2NkIxMDAwQUNFOEQwIC8qIFNwZWxsQ2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTcGVsbENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNzhGRTEzQTEyMzY2QjEwMDBBQ0U4RDAgLyogU3BlbGxDaGVja2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gU3BlbGxDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yNjAwMiw4ICsyNTk5OCw2IEBACiAJCQkJMzdGRDQyOTcxMTgzNjg0
NjAwOTNDMDI5IC8qIFRyZWVEZXB0aExpbWl0LmggKi8sCiAJCQkJMTRENjRCNUExMzRBNUI2QjAw
RTU4RkRBIC8qIFRyZWVTY29wZS5jcHAgKi8sCiAJCQkJMTRENjRCNUIxMzRBNUI2QjAwRTU4RkRB
IC8qIFRyZWVTY29wZS5oICovLAotCQkJCUE3N0UxRkVEMTRBQUNCNkUwMDVCN0NCNiAvKiBUcmVl
U2NvcGVBZG9wdGVyLmNwcCAqLywKLQkJCQlBNzdFMUZFRTE0QUFDQjZFMDA1QjdDQjYgLyogVHJl
ZVNjb3BlQWRvcHRlci5oICovLAogCQkJCTg1NEZFNzJFMEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVl
V2Fsa2VyLmNwcCAqLywKIAkJCQk4NTRGRTcyRjBBMjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtl
ci5oICovLAogCQkJCTFBNzUwRDNDMEE5MERFMzUwMDBGRjIxNSAvKiBUcmVlV2Fsa2VyLmlkbCAq
LywKQEAgLTI5OTYwLDcgKzI5OTU0LDYgQEAKIAkJCQk4NTRGRTczNzBBMjI5N0JFMDA1OEQ3QUQg
LyogVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0ZENDI5ODExODM2ODQ2MDA5M0Mw
MjkgLyogVHJlZURlcHRoTGltaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RDY0QjVEMTM0QTVC
NkIwMEU1OEZEQSAvKiBUcmVlU2NvcGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUE3N0UxRkYwMTRB
QUNCNkUwMDVCN0NCNiAvKiBUcmVlU2NvcGVBZG9wdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NTRGRTczOTBBMjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdhbGtlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkQyMzJDMDAxQTMyNkYwMjAwNkJGMkRCIC8qIFRVQ2FsbFNQSS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzM3NUQ3RkUxNjYzOTUxOTAwNjE4NEFCIC8qIFR5cGVBaGVhZC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zMzY4OSw3ICszMzY4Miw2IEBACiAJCQkJNDlFOTExRDEwRUY4NkQ0NzAwOUQwQ0FG
IC8qIFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NTRGRTczNjBBMjI5N0JFMDA1OEQ3QUQgLyogVHJhdmVyc2FsLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0RDY0QjVDMTM0QTVCNkIwMEU1OEZEQSAvKiBUcmVlU2NvcGUuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQTc3RTFGRUYxNEFBQ0I2RTAwNUI3Q0I2IC8qIFRyZWVTY29wZUFkb3B0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODU0RkU3MzgwQTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxr
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzM3NUQ3RkQxNjYzOTUxOTAwNjE4NEFCIC8qIFR5
cGVBaGVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxOTA5OUU2NDkyMDA1NkU1ODEg
LyogVHlwaW5nQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9ET01BbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RP
TUFsbEluT25lLmNwcAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RP
TUFsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw2IEBACiAjaW5jbHVk
ZSAiVHJhbnNpdGlvbkV2ZW50LmNwcCIKICNpbmNsdWRlICJUcmF2ZXJzYWwuY3BwIgogI2luY2x1
ZGUgIlRyZWVTY29wZS5jcHAiCi0jaW5jbHVkZSAiVHJlZVNjb3BlQWRvcHRlci5jcHAiCiAjaW5j
bHVkZSAiVHJlZVdhbGtlci5jcHAiCiAjaW5jbHVkZSAiVUlFdmVudC5jcHAiCiAjaW5jbHVkZSAi
VUlFdmVudFdpdGhLZXlTdGF0ZS5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZp
c2lvbiAyMTc2NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1MzAsOSArMTUzMCwxMCBAQCB2b2lkIEVsZW1lbnQ6OnBhcnNlckRpZFNldEF0
dHJpYnV0ZXMoKQogewogfQogCi12b2lkIEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERv
Y3VtZW50JiBvbGREb2N1bWVudCkKK3ZvaWQgRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQo
RG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCiB7Ci0gICAgTm9k
ZTo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOworICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKCZkb2N1bWVudCgpID09ICZuZXdEb2N1bWVudCk7CisgICAgTm9k
ZTo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKIAogICAg
IGlmIChvbGREb2N1bWVudC5pblF1aXJrc01vZGUoKSAhPSBkb2N1bWVudCgpLmluUXVpcmtzTW9k
ZSgpKSB7CiAgICAgICAgIC8vIEVsZW1lbnREYXRhOjptX2NsYXNzTmFtZXMgb3IgRWxlbWVudERh
dGE6Om1faWRGb3JTdHlsZVJlc29sdXRpb24gbmVlZCB0byBiZSB1cGRhdGVkIHdpdGggdGhlIHJp
Z2h0IGNhc2UuCkBAIC0xNTQzLDcgKzE1NDQsNyBAQCB2b2lkIEVsZW1lbnQ6OmRpZE1vdmVUb05l
d0RvY3VtZW50KERvY3VtCiAgICAgfQogCiAgICAgaWYgKFVOTElLRUxZKGlzRGVmaW5lZEN1c3Rv
bUVsZW1lbnQoKSkpCi0gICAgICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjplbnF1ZXVl
QWRvcHRlZENhbGxiYWNrSWZOZWVkZWQoKnRoaXMsIG9sZERvY3VtZW50LCBkb2N1bWVudCgpKTsK
KyAgICAgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OmVucXVldWVBZG9wdGVkQ2FsbGJh
Y2tJZk5lZWRlZCgqdGhpcywgb2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKIH0KIAogYm9vbCBF
bGVtZW50OjpoYXNBdHRyaWJ1dGVzKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2
aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNTY3LDcgKzU2Nyw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlQWxsRXZl
bnRMaXN0ZW5lcnMoKSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VyRGlkU2V0QXR0cmli
dXRlcygpOwotICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwg
RG9jdW1lbnQmIG5ld0RvY3VtZW50KSBvdmVycmlkZTsKIAogICAgIHZvaWQgY2xlYXJUYWJJbmRl
eEV4cGxpY2l0bHlJZk5lZWRlZCgpOwogICAgIHZvaWQgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KGlu
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiAyMTc2NDIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDYgQEAKICNpbmNs
dWRlICJUZW1wbGF0ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiVGV4dEV2
ZW50LmgiCiAjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgotI2luY2x1ZGUgIlRyZWVTY29wZUFkb3B0
ZXIuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiWE1MTlNOYW1lcy5oIgog
I2luY2x1ZGUgIlhNTE5hbWVzLmgiCkBAIC0xOTI1LDE0ICsxOTI0LDIyIEBAIEV2ZW50VGFyZ2V0
SW50ZXJmYWNlIE5vZGU6OmV2ZW50VGFyZ2V0SW4KICAgICByZXR1cm4gTm9kZUV2ZW50VGFyZ2V0
SW50ZXJmYWNlVHlwZTsKIH0KIAotdm9pZCBOb2RlOjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1
bWVudCYgb2xkRG9jdW1lbnQpCit2b2lkIE5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3Vt
ZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogewotICAgIFRyZWVTY29w
ZUFkb3B0ZXI6OmVuc3VyZURpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkKG9sZERvY3VtZW50
KTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigmZG9jdW1lbnQoKSA9PSAm
bmV3RG9jdW1lbnQpOworICAgIFRyZWVTY29wZTo6ZW5zdXJlRGlkTW92ZVRvTmV3RG9jdW1lbnRX
YXNDYWxsZWQob2xkRG9jdW1lbnQpOworCisgICAgaWYgKGhhc1JhcmVEYXRhKCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIG5vZGVMaXN0cyA9IHJhcmVEYXRhKCktPm5vZGVMaXN0cygpKQorICAgICAg
ICAgICAgbm9kZUxpc3RzLT5hZG9wdERvY3VtZW50KG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7
CisgICAgfQorCisgICAgb2xkRG9jdW1lbnQubW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50
KCp0aGlzLCBuZXdEb2N1bWVudCk7CiAKICAgICBpZiAoYXV0byogZXZlbnRUYXJnZXREYXRhID0g
dGhpcy0+ZXZlbnRUYXJnZXREYXRhKCkpIHsKICAgICAgICAgaWYgKCFldmVudFRhcmdldERhdGEt
PmV2ZW50TGlzdGVuZXJNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5
cGUgOiBldmVudFRhcmdldERhdGEtPmV2ZW50TGlzdGVuZXJNYXAuZXZlbnRUeXBlcygpKQotICAg
ICAgICAgICAgICAgIGRvY3VtZW50KCkuYWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQodHlwZSk7Cisg
ICAgICAgICAgICAgICAgbmV3RG9jdW1lbnQuYWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQodHlwZSk7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE5NDQsNyArMTk1MSw3IEBAIHZvaWQgTm9kZTo6ZGlk
TW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQKICAgICB1bnNpZ25lZCBudW1XaGVlbEV2ZW50SGFu
ZGxlcnMgPSBldmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2V3aGVlbEV2ZW50KS5zaXpl
KCkgKyBldmVudExpc3RlbmVycyhldmVudE5hbWVzKCkud2hlZWxFdmVudCkuc2l6ZSgpOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1XaGVlbEV2ZW50SGFuZGxlcnM7ICsraSkgewog
ICAgICAgICBvbGREb2N1bWVudC5kaWRSZW1vdmVXaGVlbEV2ZW50SGFuZGxlcigqdGhpcyk7Ci0g
ICAgICAgIGRvY3VtZW50KCkuZGlkQWRkV2hlZWxFdmVudEhhbmRsZXIoKnRoaXMpOworICAgICAg
ICBuZXdEb2N1bWVudC5kaWRBZGRXaGVlbEV2ZW50SGFuZGxlcigqdGhpcyk7CiAgICAgfQogCiAg
ICAgdW5zaWduZWQgbnVtVG91Y2hFdmVudExpc3RlbmVycyA9IDA7CkBAIC0xOTUzLDExICsxOTYw
LDExIEBAIHZvaWQgTm9kZTo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQKIAogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ub3VjaEV2ZW50TGlzdGVuZXJzOyArK2kpIHsKICAg
ICAgICAgb2xkRG9jdW1lbnQuZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIoKnRoaXMpOwotICAg
ICAgICBkb2N1bWVudCgpLmRpZEFkZFRvdWNoRXZlbnRIYW5kbGVyKCp0aGlzKTsKKyAgICAgICAg
bmV3RG9jdW1lbnQuZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIoKnRoaXMpOwogCiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykgJiYgUExBVEZPUk0oSU9TKQogICAgICAgICBvbGREb2N1bWVudC5yZW1v
dmVUb3VjaEV2ZW50TGlzdGVuZXIoKnRoaXMpOwotICAgICAgICBkb2N1bWVudCgpLmFkZFRvdWNo
RXZlbnRMaXN0ZW5lcigqdGhpcyk7CisgICAgICAgIG5ld0RvY3VtZW50LmFkZFRvdWNoRXZlbnRM
aXN0ZW5lcigqdGhpcyk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTE5NjgsMTggKzE5NzUsMTggQEAg
dm9pZCBOb2RlOjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudAogCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG51bUdlc3R1cmVFdmVudExpc3RlbmVyczsgKytpKSB7CiAgICAgICAg
IG9sZERvY3VtZW50LnJlbW92ZVRvdWNoRXZlbnRIYW5kbGVyKCp0aGlzKTsKLSAgICAgICAgZG9j
dW1lbnQoKS5hZGRUb3VjaEV2ZW50SGFuZGxlcigqdGhpcyk7CisgICAgICAgIG5ld0RvY3VtZW50
LmFkZFRvdWNoRXZlbnRIYW5kbGVyKCp0aGlzKTsKICAgICB9CiAjZW5kaWYKIAogICAgIGlmIChh
dXRvKiByZWdpc3RyeSA9IG11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpKSB7CiAgICAgICAgIGZv
ciAoYXV0byYgcmVnaXN0cmF0aW9uIDogKnJlZ2lzdHJ5KQotICAgICAgICAgICAgZG9jdW1lbnQo
KS5hZGRNdXRhdGlvbk9ic2VydmVyVHlwZXMocmVnaXN0cmF0aW9uLT5tdXRhdGlvblR5cGVzKCkp
OworICAgICAgICAgICAgbmV3RG9jdW1lbnQuYWRkTXV0YXRpb25PYnNlcnZlclR5cGVzKHJlZ2lz
dHJhdGlvbi0+bXV0YXRpb25UeXBlcygpKTsKICAgICB9CiAKICAgICBpZiAoYXV0byogdHJhbnNp
ZW50UmVnaXN0cnkgPSB0cmFuc2llbnRNdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKSkgewogICAg
ICAgICBmb3IgKGF1dG8mIHJlZ2lzdHJhdGlvbiA6ICp0cmFuc2llbnRSZWdpc3RyeSkKLSAgICAg
ICAgICAgIGRvY3VtZW50KCkuYWRkTXV0YXRpb25PYnNlcnZlclR5cGVzKHJlZ2lzdHJhdGlvbi0+
bXV0YXRpb25UeXBlcygpKTsKKyAgICAgICAgICAgIG5ld0RvY3VtZW50LmFkZE11dGF0aW9uT2Jz
ZXJ2ZXJUeXBlcyhyZWdpc3RyYXRpb24tPm11dGF0aW9uVHlwZXMoKSk7CiAgICAgfQogCiAjaWYg
IUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNiBAQCBjbGFzcyBOb2RlIDogcHVibGljIEV2ZW50
VGFyZ2V0IHsKIAogICAgIGZyaWVuZCBjbGFzcyBEb2N1bWVudDsKICAgICBmcmllbmQgY2xhc3Mg
VHJlZVNjb3BlOwotICAgIGZyaWVuZCBjbGFzcyBUcmVlU2NvcGVBZG9wdGVyOwogcHVibGljOgog
ICAgIGVudW0gTm9kZVR5cGUgewogICAgICAgICBFTEVNRU5UX05PREUgPSAxLApAQCAtNjMxLDcg
KzYzMCw3IEBAIHByb3RlY3RlZDoKICAgICB9OwogICAgIE5vZGUoRG9jdW1lbnQmLCBDb25zdHJ1
Y3Rpb25UeXBlKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1
bWVudCYgb2xkRG9jdW1lbnQpOworICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVu
dChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCk7CiAgICAgCiAg
ICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxV
Ukw+JikgY29uc3QgeyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAJKHJldmlz
aW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBTaGFkb3dSb290Ojp+U2hhZG93Um9vdCgpCiAgICAg
d2lsbEJlRGVsZXRlZEZyb20oZG9jdW1lbnQoKSk7CiAKICAgICAvLyBXZSBtdXN0IHJlbW92ZSBh
bGwgb2Ygb3VyIGNoaWxkcmVuIGZpcnN0IGJlZm9yZSB0aGUgVHJlZVNjb3BlIGRlc3RydWN0b3IK
LSAgICAvLyBydW5zIHNvIHdlIGRvbid0IGdvIHRocm91Z2ggVHJlZVNjb3BlQWRvcHRlciBmb3Ig
ZWFjaCBjaGlsZCB3aXRoIGEKKyAgICAvLyBydW5zIHNvIHdlIGRvbid0IGdvIHRocm91Z2ggVHJl
ZVNjb3BlOjphZG9wdElmTmVlZGVkIGZvciBlYWNoIGNoaWxkIHdpdGggYQogICAgIC8vIGRlc3Ry
dWN0ZWQgdHJlZSBzY29wZSBpbiBlYWNoIGRlc2NlbmRhbnQuCiAgICAgcmVtb3ZlRGV0YWNoZWRD
aGlsZHJlbigpOwogfQpAQCAtMTAyLDE1ICsxMDIsMTcgQEAgdm9pZCBTaGFkb3dSb290OjpyZW1v
dmVkRnJvbShDb250YWluZXJObwogICAgICAgICBkb2N1bWVudCgpLmRpZFJlbW92ZUluRG9jdW1l
bnRTaGFkb3dSb290KCp0aGlzKTsKIH0KIAotdm9pZCBTaGFkb3dSb290OjpkaWRNb3ZlVG9OZXdE
b2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQpCit2b2lkIFNoYWRvd1Jvb3Q6OmRpZE1vdmVU
b05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50
KQogewotICAgIEFTU0VSVCgmZG9jdW1lbnQoKSAhPSAmb2xkRG9jdW1lbnQpOwotICAgIEFTU0VS
VCgmbV9zdHlsZVNjb3BlLT5kb2N1bWVudCgpID09ICZvbGREb2N1bWVudCk7CisgICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJmRvY3VtZW50KCkgPT0gJm9sZERvY3VtZW50IHx8
ICZkb2N1bWVudCgpID09ICZuZXdEb2N1bWVudCk7CisgICAgc2V0RG9jdW1lbnRTY29wZShuZXdE
b2N1bWVudCk7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJmRvY3VtZW50
KCkgPT0gJm5ld0RvY3VtZW50KTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TigmbV9zdHlsZVNjb3BlLT5kb2N1bWVudCgpID09ICZvbGREb2N1bWVudCk7CiAKICAgICAvLyBT
dHlsZSBzY29wZXMgYXJlIGRvY3VtZW50IHNwZWNpZmljLgogICAgIG1fc3R5bGVTY29wZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcyk7CiAKLSAgICBEb2N1bWVudEZyYWdt
ZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7CisgICAgRG9jdW1lbnRGcmFn
bWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKIH0K
IAogU3R5bGU6OlNjb3BlJiBTaGFkb3dSb290OjpzdHlsZVNjb3BlKCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuaAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBAQCBwcml2YXRlOgogCiAg
ICAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFp
bmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlZEZyb20o
Q29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkTW92
ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50KSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5l
d0RvY3VtZW50KSBvdmVycmlkZTsKIAogICAgIGJvb2wgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2Ug
eyBmYWxzZSB9OwogICAgIFNoYWRvd1Jvb3RNb2RlIG1fdHlwZSB7IFNoYWRvd1Jvb3RNb2RlOjpV
c2VyQWdlbnQgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCShyZXZpc2lvbiAyMTc2
NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRyZWVTY29w
ZS5oIgogCisjaW5jbHVkZSAiQXR0ci5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1
ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgpAQCAt
MzgsMTIgKzM5LDEyIEBACiAjaW5jbHVkZSAiSFRNTE1hcEVsZW1lbnQuaCIKICNpbmNsdWRlICJI
aXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgiCisj
aW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBv
aW50ZXJMb2NrQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRl
ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2lu
Y2x1ZGUgIlRyZWVTY29wZUFkb3B0ZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3MSw5ICszNzIsOTUgQEAgdm9pZCBUcmVlU2Nv
cGU6OmFkb3B0SWZOZWVkZWQoTm9kZSYgbm9kZQogewogICAgIEFTU0VSVCghbm9kZS5pc0RvY3Vt
ZW50Tm9kZSgpKTsKICAgICBBU1NFUlQoIW5vZGUubV9kZWxldGlvbkhhc0JlZ3VuKTsKLSAgICBU
cmVlU2NvcGVBZG9wdGVyIGFkb3B0ZXIobm9kZSwgKnRoaXMpOwotICAgIGlmIChhZG9wdGVyLm5l
ZWRzU2NvcGVDaGFuZ2UoKSkKLSAgICAgICAgYWRvcHRlci5leGVjdXRlKCk7CisgICAgVHJlZVNj
b3BlJiB0cmVlU2NvcGVPZk5vZGUgPSBub2RlLnRyZWVTY29wZSgpOworICAgIGlmICh0aGlzICE9
ICZ0cmVlU2NvcGVPZk5vZGUpCisgICAgICAgIG1vdmVUcmVlVG9OZXdTY29wZShub2RlLCB0cmVl
U2NvcGVPZk5vZGUsICp0aGlzKTsKK30KKwordm9pZCBUcmVlU2NvcGU6Om1vdmVUcmVlVG9OZXdT
Y29wZShOb2RlJiByb290LCBUcmVlU2NvcGUmIG9sZFNjb3BlLCBUcmVlU2NvcGUmIG5ld1Njb3Bl
KQoreworICAgIEFTU0VSVCgmb2xkU2NvcGUgIT0gJm5ld1Njb3BlKTsKKyAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTigmcm9vdC50cmVlU2NvcGUoKSA9PSAmb2xkU2NvcGUpOwor
CisgICAgLy8gSWYgYW4gZWxlbWVudCBpcyBtb3ZlZCBmcm9tIGEgZG9jdW1lbnQgYW5kIHRoZW4g
ZXZlbnR1YWxseSBiYWNrIGFnYWluIHRoZSBjb2xsZWN0aW9uIGNhY2hlIGZvcgorICAgIC8vIHRo
YXQgZWxlbWVudCBtYXkgY29udGFpbiBzdGFsZSBkYXRhIGFzIGNoYW5nZXMgbWFkZSB0byBpdCB3
aWxsIGhhdmUgdXBkYXRlZCB0aGUgRE9NVHJlZVZlcnNpb24KKyAgICAvLyBvZiB0aGUgZG9jdW1l
bnQgaXQgd2FzIG1vdmVkIHRvLiBCeSBpbmNyZWFzaW5nIHRoZSBET01UcmVlVmVyc2lvbiBvZiB0
aGUgZG9uYXRpbmcgZG9jdW1lbnQgaGVyZQorICAgIC8vIHdlIGVuc3VyZSB0aGF0IHRoZSBjb2xs
ZWN0aW9uIGNhY2hlIHdpbGwgYmUgaW52YWxpZGF0ZWQgYXMgbmVlZGVkIHdoZW4gdGhlIGVsZW1l
bnQgaXMgbW92ZWQgYmFjay4KKyAgICBEb2N1bWVudCYgb2xkRG9jdW1lbnQgPSBvbGRTY29wZS5k
b2N1bWVudFNjb3BlKCk7CisgICAgRG9jdW1lbnQmIG5ld0RvY3VtZW50ID0gbmV3U2NvcGUuZG9j
dW1lbnRTY29wZSgpOworICAgIGJvb2wgd2lsbE1vdmVUb05ld0RvY3VtZW50ID0gJm9sZERvY3Vt
ZW50ICE9ICZuZXdEb2N1bWVudDsKKyAgICBpZiAod2lsbE1vdmVUb05ld0RvY3VtZW50KSB7Cisg
ICAgICAgIG9sZERvY3VtZW50LmluY3JlbWVudFJlZmVyZW5jaW5nTm9kZUNvdW50KCk7CisgICAg
ICAgIG9sZERvY3VtZW50LmluY0RPTVRyZWVWZXJzaW9uKCk7CisgICAgfQorCisgICAgZm9yIChO
b2RlKiBub2RlID0gJnJvb3Q7IG5vZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2Rl
LCAmcm9vdCkpIHsKKyAgICAgICAgQVNTRVJUKCFub2RlLT5pc1RyZWVTY29wZSgpKTsKKyAgICAg
ICAgQVNTRVJUKCZub2RlLT50cmVlU2NvcGUoKSA9PSAmb2xkU2NvcGUpOworICAgICAgICBub2Rl
LT5zZXRUcmVlU2NvcGUobmV3U2NvcGUpOworCisgICAgICAgIGlmICh3aWxsTW92ZVRvTmV3RG9j
dW1lbnQpCisgICAgICAgICAgICBtb3ZlTm9kZVRvTmV3RG9jdW1lbnQoKm5vZGUsIG9sZERvY3Vt
ZW50LCBuZXdEb2N1bWVudCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmhhc1JhcmVEYXRhKCkp
IHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBub2RlTGlzdHMgPSBub2RlLT5yYXJlRGF0YSgpLT5u
b2RlTGlzdHMoKSkKKyAgICAgICAgICAgICAgICBub2RlTGlzdHMtPmFkb3B0VHJlZVNjb3BlKCk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KCpub2RlKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChub2RlLT5oYXNTeW50aGV0aWNBdHRyQ2hpbGRO
b2RlcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGF0dHIgOiBkb3duY2FzdDxFbGVtZW50
Pigqbm9kZSkuYXR0ck5vZGVMaXN0KCkpCisgICAgICAgICAgICAgICAgbW92ZVRyZWVUb05ld1Nj
b3BlKCphdHRyLCBvbGRTY29wZSwgbmV3U2NvcGUpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KGF1dG8qIHNoYWRvdyA9IG5vZGUtPnNoYWRvd1Jvb3QoKSkgeworICAgICAgICAgICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJnNoYWRvdy0+ZG9jdW1lbnQoKSA9PSAmb2xkRG9j
dW1lbnQpOworICAgICAgICAgICAgc2hhZG93LT5zZXRQYXJlbnRUcmVlU2NvcGUobmV3U2NvcGUp
OworICAgICAgICAgICAgaWYgKHdpbGxNb3ZlVG9OZXdEb2N1bWVudCkKKyAgICAgICAgICAgICAg
ICBtb3ZlU2hhZG93VHJlZVRvTmV3RG9jdW1lbnQoKnNoYWRvdywgb2xkRG9jdW1lbnQsIG5ld0Rv
Y3VtZW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICh3aWxsTW92ZVRvTmV3RG9jdW1l
bnQpCisgICAgICAgIG9sZERvY3VtZW50LmRlY3JlbWVudFJlZmVyZW5jaW5nTm9kZUNvdW50KCk7
Cit9CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05T
KQorc3RhdGljIGJvb2wgZGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQgPSBmYWxzZTsKK3N0
YXRpYyBEb2N1bWVudCogb2xkRG9jdW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZFdp
dGggPSBudWxscHRyOworCit2b2lkIFRyZWVTY29wZTo6ZW5zdXJlRGlkTW92ZVRvTmV3RG9jdW1l
bnRXYXNDYWxsZWQoRG9jdW1lbnQmIG9sZERvY3VtZW50KQoreworICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKCFkaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZCk7CisgICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJm9sZERvY3VtZW50ID09IG9sZERvY3Vt
ZW50RGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWRXaXRoKTsKKyAgICBkaWRNb3ZlVG9OZXdE
b2N1bWVudFdhc0NhbGxlZCA9IHRydWU7Cit9CisjZW5kaWYKKwordm9pZCBUcmVlU2NvcGU6Om1v
dmVOb2RlVG9OZXdEb2N1bWVudChOb2RlJiBub2RlLCBEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERv
Y3VtZW50JiBuZXdEb2N1bWVudCkKK3sKKyAgICBBU1NFUlQoIW5vZGUuaXNDb25uZWN0ZWQoKSB8
fCAmb2xkRG9jdW1lbnQgIT0gJm5ld0RvY3VtZW50KTsKKworICAgIG5ld0RvY3VtZW50LmluY3Jl
bWVudFJlZmVyZW5jaW5nTm9kZUNvdW50KCk7CisgICAgb2xkRG9jdW1lbnQuZGVjcmVtZW50UmVm
ZXJlbmNpbmdOb2RlQ291bnQoKTsKKworI2lmICFBU1NFUlRfRElTQUJMRUQgfHwgRU5BQkxFKFNF
Q1VSSVRZX0FTU0VSVElPTlMpCisgICAgZGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQgPSBm
YWxzZTsKKyAgICBvbGREb2N1bWVudERpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkV2l0aCA9
ICZvbGREb2N1bWVudDsKKyNlbmRpZgorCisgICAgbm9kZS5kaWRNb3ZlVG9OZXdEb2N1bWVudChv
bGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKGRpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkKTsKK30KKwordm9pZCBUcmVlU2Nv
cGU6Om1vdmVTaGFkb3dUcmVlVG9OZXdEb2N1bWVudChTaGFkb3dSb290JiBzaGFkb3dSb290LCBE
b2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkKK3sKKyAgICBmb3Ig
KE5vZGUqIG5vZGUgPSAmc2hhZG93Um9vdDsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5l
eHQoKm5vZGUsICZzaGFkb3dSb290KSkgeworICAgICAgICBtb3ZlTm9kZVRvTmV3RG9jdW1lbnQo
Km5vZGUsIG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7CisgICAgICAgIGlmIChhdXRvKiBzaGFk
b3cgPSBub2RlLT5zaGFkb3dSb290KCkpCisgICAgICAgICAgICBtb3ZlU2hhZG93VHJlZVRvTmV3
RG9jdW1lbnQoKnNoYWRvdywgb2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKKyAgICB9CiB9CiAK
IHN0YXRpYyBFbGVtZW50KiBmb2N1c2VkRnJhbWVPd25lckVsZW1lbnQoRnJhbWUqIGZvY3VzZWRG
cmFtZSwgRnJhbWUqIGN1cnJlbnRGcmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
U2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgJKHJl
dmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNyArNDUsNiBAQCBjbGFzcyBTaGFkb3dSb290OwogCiBjbGFzcyBUcmVl
U2NvcGUgewogICAgIGZyaWVuZCBjbGFzcyBEb2N1bWVudDsKLSAgICBmcmllbmQgY2xhc3MgVHJl
ZVNjb3BlQWRvcHRlcjsKIAogcHVibGljOgogICAgIFRyZWVTY29wZSogcGFyZW50VHJlZVNjb3Bl
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRUcmVlU2NvcGU7IH0KQEAgLTk5LDYgKzk4LDExIEBA
IHB1YmxpYzoKIAogICAgIC8vIFVzZWQgYnkgdGhlIGJhc2ljIERPTSBtdXRhdGlvbiBtZXRob2Rz
IChlLmcuLCBhcHBlbmRDaGlsZCgpKS4KICAgICB2b2lkIGFkb3B0SWZOZWVkZWQoTm9kZSYpOwor
I2lmICFBU1NFUlRfRElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCisgICAg
c3RhdGljIHZvaWQgZW5zdXJlRGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQoRG9jdW1lbnQm
IG9sZERvY3VtZW50KTsKKyNlbHNlCisgICAgc3RhdGljIHZvaWQgZW5zdXJlRGlkTW92ZVRvTmV3
RG9jdW1lbnRXYXNDYWxsZWQoRG9jdW1lbnQmKSB7IH0KKyNlbmRpZgogCiAgICAgQ29udGFpbmVy
Tm9kZSYgcm9vdE5vZGUoKSBjb25zdCB7IHJldHVybiBtX3Jvb3ROb2RlOyB9CiAKQEAgLTExOCw2
ICsxMjIsMTAgQEAgcHJvdGVjdGVkOgogICAgIE5vZGUqIG5vZGVGcm9tUG9pbnQoY29uc3QgTGF5
b3V0UG9pbnQmIGNsaWVudFBvaW50LCBMYXlvdXRQb2ludCogbG9jYWxQb2ludCk7CiAKIHByaXZh
dGU6CisgICAgdm9pZCBtb3ZlVHJlZVRvTmV3U2NvcGUoTm9kZSYsIFRyZWVTY29wZSYgb2xkU2Nv
cGUsIFRyZWVTY29wZSYgbmV3U2NvcGUpOworICAgIHZvaWQgbW92ZU5vZGVUb05ld0RvY3VtZW50
KE5vZGUmLCBEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCk7Cisg
ICAgdm9pZCBtb3ZlU2hhZG93VHJlZVRvTmV3RG9jdW1lbnQoU2hhZG93Um9vdCYsIERvY3VtZW50
JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KTsKKwogICAgIENvbnRhaW5lck5v
ZGUmIG1fcm9vdE5vZGU7CiAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxEb2N1bWVudD4gbV9k
b2N1bWVudFNjb3BlOwogICAgIFRyZWVTY29wZSogbV9wYXJlbnRUcmVlU2NvcGU7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCShyZXZpc2lvbiAyMTc2NDIpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAJKG5vbmV4aXN0ZW50KQpA
QCAtMSwxMzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChr
bm9sbEBrZGUub3JnKQotICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2
aXN0b0BrZGUub3JnKQotICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxl
ckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKLSAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQotICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJUcmVlU2NvcGVBZG9wdGVyLmgiCi0KLSNpbmNsdWRlICJBdHRyLmgiCi0j
aW5jbHVkZSAiRWxlbWVudFJhcmVEYXRhLmgiCi0jaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEZJWE1FOiBEbyB3ZSBldmVyIGNoYW5nZSB0cmVl
IHNjb3BlcyBleGNlcHQgYmV0d2VlbiBkb2N1bWVudHM/Ci12b2lkIFRyZWVTY29wZUFkb3B0ZXI6
Om1vdmVUcmVlVG9OZXdTY29wZShOb2RlJiByb290KSBjb25zdAotewotICAgIEFTU0VSVChuZWVk
c1Njb3BlQ2hhbmdlKCkpOwotCi0gICAgLy8gSWYgYW4gZWxlbWVudCBpcyBtb3ZlZCBmcm9tIGEg
ZG9jdW1lbnQgYW5kIHRoZW4gZXZlbnR1YWxseSBiYWNrIGFnYWluIHRoZSBjb2xsZWN0aW9uIGNh
Y2hlIGZvcgotICAgIC8vIHRoYXQgZWxlbWVudCBtYXkgY29udGFpbiBzdGFsZSBkYXRhIGFzIGNo
YW5nZXMgbWFkZSB0byBpdCB3aWxsIGhhdmUgdXBkYXRlZCB0aGUgRE9NVHJlZVZlcnNpb24KLSAg
ICAvLyBvZiB0aGUgZG9jdW1lbnQgaXQgd2FzIG1vdmVkIHRvLiBCeSBpbmNyZWFzaW5nIHRoZSBE
T01UcmVlVmVyc2lvbiBvZiB0aGUgZG9uYXRpbmcgZG9jdW1lbnQgaGVyZQotICAgIC8vIHdlIGVu
c3VyZSB0aGF0IHRoZSBjb2xsZWN0aW9uIGNhY2hlIHdpbGwgYmUgaW52YWxpZGF0ZWQgYXMgbmVl
ZGVkIHdoZW4gdGhlIGVsZW1lbnQgaXMgbW92ZWQgYmFjay4KLSAgICBEb2N1bWVudCYgb2xkRG9j
dW1lbnQgPSBtX29sZFNjb3BlLmRvY3VtZW50U2NvcGUoKTsKLSAgICBEb2N1bWVudCYgbmV3RG9j
dW1lbnQgPSBtX25ld1Njb3BlLmRvY3VtZW50U2NvcGUoKTsKLSAgICBib29sIHdpbGxNb3ZlVG9O
ZXdEb2N1bWVudCA9ICZvbGREb2N1bWVudCAhPSAmbmV3RG9jdW1lbnQ7Ci0gICAgaWYgKHdpbGxN
b3ZlVG9OZXdEb2N1bWVudCkgewotICAgICAgICBvbGREb2N1bWVudC5pbmNyZW1lbnRSZWZlcmVu
Y2luZ05vZGVDb3VudCgpOwotICAgICAgICBvbGREb2N1bWVudC5pbmNET01UcmVlVmVyc2lvbigp
OwotICAgIH0KLQotICAgIGZvciAoTm9kZSogbm9kZSA9ICZyb290OyBub2RlOyBub2RlID0gTm9k
ZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSwgJnJvb3QpKSB7Ci0gICAgICAgIHVwZGF0ZVRyZWVTY29w
ZSgqbm9kZSk7Ci0KLSAgICAgICAgaWYgKHdpbGxNb3ZlVG9OZXdEb2N1bWVudCkKLSAgICAgICAg
ICAgIG1vdmVOb2RlVG9OZXdEb2N1bWVudCgqbm9kZSwgb2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50
KTsKLSAgICAgICAgZWxzZSBpZiAobm9kZS0+aGFzUmFyZURhdGEoKSkgewotICAgICAgICAgICAg
Tm9kZVJhcmVEYXRhKiByYXJlRGF0YSA9IG5vZGUtPnJhcmVEYXRhKCk7Ci0gICAgICAgICAgICBp
ZiAocmFyZURhdGEtPm5vZGVMaXN0cygpKQotICAgICAgICAgICAgICAgIHJhcmVEYXRhLT5ub2Rl
TGlzdHMoKS0+YWRvcHRUcmVlU2NvcGUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghaXM8
RWxlbWVudD4oKm5vZGUpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKG5v
ZGUtPmhhc1N5bnRoZXRpY0F0dHJDaGlsZE5vZGVzKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0
byYgYXR0ciA6IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKS5hdHRyTm9kZUxpc3QoKSkKLSAgICAg
ICAgICAgICAgICBtb3ZlVHJlZVRvTmV3U2NvcGUoKmF0dHIpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKGF1dG8qIHNoYWRvdyA9IG5vZGUtPnNoYWRvd1Jvb3QoKSkgewotICAgICAgICAgICAg
c2hhZG93LT5zZXRQYXJlbnRUcmVlU2NvcGUobV9uZXdTY29wZSk7Ci0gICAgICAgICAgICBpZiAo
d2lsbE1vdmVUb05ld0RvY3VtZW50KQotICAgICAgICAgICAgICAgIG1vdmVTaGFkb3dUcmVlVG9O
ZXdEb2N1bWVudCgqc2hhZG93LCBvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgaWYgKHdpbGxNb3ZlVG9OZXdEb2N1bWVudCkKLSAgICAgICAgb2xkRG9j
dW1lbnQuZGVjcmVtZW50UmVmZXJlbmNpbmdOb2RlQ291bnQoKTsKLX0KLQotdm9pZCBUcmVlU2Nv
cGVBZG9wdGVyOjptb3ZlU2hhZG93VHJlZVRvTmV3RG9jdW1lbnQoU2hhZG93Um9vdCYgc2hhZG93
Um9vdCwgRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIGNvbnN0
Ci17Ci0gICAgZm9yIChOb2RlKiBub2RlID0gJnNoYWRvd1Jvb3Q7IG5vZGU7IG5vZGUgPSBOb2Rl
VHJhdmVyc2FsOjpuZXh0KCpub2RlLCAmc2hhZG93Um9vdCkpIHsKLSAgICAgICAgbW92ZU5vZGVU
b05ld0RvY3VtZW50KCpub2RlLCBvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwotICAgICAgICBp
ZiAoYXV0byogc2hhZG93ID0gbm9kZS0+c2hhZG93Um9vdCgpKQotICAgICAgICAgICAgbW92ZVNo
YWRvd1RyZWVUb05ld0RvY3VtZW50KCpzaGFkb3csIG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7
Ci0gICAgfQotfQotCi0jaWZuZGVmIE5ERUJVRwotc3RhdGljIGJvb2wgZGlkTW92ZVRvTmV3RG9j
dW1lbnRXYXNDYWxsZWQgPSBmYWxzZTsKLXN0YXRpYyBEb2N1bWVudCogb2xkRG9jdW1lbnREaWRN
b3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZFdpdGggPSBudWxscHRyOwotCi12b2lkIFRyZWVTY29w
ZUFkb3B0ZXI6OmVuc3VyZURpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkKERvY3VtZW50JiBv
bGREb2N1bWVudCkKLXsKLSAgICBBU1NFUlQoIWRpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVk
KTsKLSAgICBBU1NFUlRfVU5VU0VEKG9sZERvY3VtZW50LCAmb2xkRG9jdW1lbnQgPT0gb2xkRG9j
dW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZFdpdGgpOwotICAgIGRpZE1vdmVUb05l
d0RvY3VtZW50V2FzQ2FsbGVkID0gdHJ1ZTsKLX0KLSNlbmRpZgotCi1pbmxpbmUgdm9pZCBUcmVl
U2NvcGVBZG9wdGVyOjp1cGRhdGVUcmVlU2NvcGUoTm9kZSYgbm9kZSkgY29uc3QKLXsKLSAgICBB
U1NFUlQoIW5vZGUuaXNUcmVlU2NvcGUoKSk7Ci0gICAgQVNTRVJUKCZub2RlLnRyZWVTY29wZSgp
ID09ICZtX29sZFNjb3BlKTsKLSAgICBub2RlLnNldFRyZWVTY29wZShtX25ld1Njb3BlKTsKLX0K
LQotaW5saW5lIHZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZU5vZGVUb05ld0RvY3VtZW50KE5v
ZGUmIG5vZGUsIERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBj
b25zdAotewotICAgIEFTU0VSVCghbm9kZS5pc0Nvbm5lY3RlZCgpIHx8ICZvbGREb2N1bWVudCAh
PSAmbmV3RG9jdW1lbnQpOwotCi0gICAgbmV3RG9jdW1lbnQuaW5jcmVtZW50UmVmZXJlbmNpbmdO
b2RlQ291bnQoKTsKLSAgICBvbGREb2N1bWVudC5kZWNyZW1lbnRSZWZlcmVuY2luZ05vZGVDb3Vu
dCgpOwotCi0gICAgaWYgKG5vZGUuaGFzUmFyZURhdGEoKSkgewotICAgICAgICBOb2RlUmFyZURh
dGEqIHJhcmVEYXRhID0gbm9kZS5yYXJlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byogbm9kZUxp
c3RzID0gcmFyZURhdGEtPm5vZGVMaXN0cygpKQotICAgICAgICAgICAgbm9kZUxpc3RzLT5hZG9w
dERvY3VtZW50KG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7Ci0gICAgfQotCi0gICAgb2xkRG9j
dW1lbnQubW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50KG5vZGUsIG5ld0RvY3VtZW50KTsK
LQotICAgIGlmIChpczxTaGFkb3dSb290Pihub2RlKSkKLSAgICAgICAgZG93bmNhc3Q8U2hhZG93
Um9vdD4obm9kZSkuc2V0RG9jdW1lbnRTY29wZShuZXdEb2N1bWVudCk7Ci0KLSNpZm5kZWYgTkRF
QlVHCi0gICAgZGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQgPSBmYWxzZTsKLSAgICBvbGRE
b2N1bWVudERpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkV2l0aCA9ICZvbGREb2N1bWVudDsK
LSNlbmRpZgotCi0gICAgbm9kZS5kaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7Ci0g
ICAgQVNTRVJUKGRpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkKTsKLX0KLQotfQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5oCShyZXZpc2lvbiAyMTc2NDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5oCShub25leGlzdGVudCkKQEAgLTEs
NjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBr
ZGUub3JnKQotICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0Br
ZGUub3JnKQotICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUu
b3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
LSAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQotICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiTm9kZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFRyZWVTY29wZTsKLQot
Y2xhc3MgVHJlZVNjb3BlQWRvcHRlciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgVHJlZVNjb3Bl
QWRvcHRlcihOb2RlJiB0b0Fkb3B0LCBUcmVlU2NvcGUmIG5ld1Njb3BlKTsKLQotICAgIHZvaWQg
ZXhlY3V0ZSgpIGNvbnN0IHsgbW92ZVRyZWVUb05ld1Njb3BlKG1fdG9BZG9wdCk7IH0KLSAgICBi
b29sIG5lZWRzU2NvcGVDaGFuZ2UoKSBjb25zdCB7IHJldHVybiAmbV9vbGRTY29wZSAhPSAmbV9u
ZXdTY29wZTsgfQotCi0jaWZkZWYgTkRFQlVHCi0gICAgc3RhdGljIHZvaWQgZW5zdXJlRGlkTW92
ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQoRG9jdW1lbnQmKSB7IH0KLSNlbHNlCi0gICAgc3RhdGlj
IHZvaWQgZW5zdXJlRGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQoRG9jdW1lbnQmKTsKLSNl
bmRpZgotCi1wcml2YXRlOgotICAgIHZvaWQgdXBkYXRlVHJlZVNjb3BlKE5vZGUmKSBjb25zdDsK
LSAgICB2b2lkIG1vdmVUcmVlVG9OZXdTY29wZShOb2RlJikgY29uc3Q7Ci0gICAgdm9pZCBtb3Zl
U2hhZG93VHJlZVRvTmV3RG9jdW1lbnQoU2hhZG93Um9vdCYsIERvY3VtZW50JiBvbGREb2N1bWVu
dCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBjb25zdDsKLSAgICB2b2lkIG1vdmVOb2RlVG9OZXdE
b2N1bWVudChOb2RlJiwgRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1l
bnQpIGNvbnN0OwotCi0gICAgTm9kZSYgbV90b0Fkb3B0OwotICAgIFRyZWVTY29wZSYgbV9uZXdT
Y29wZTsKLSAgICBUcmVlU2NvcGUmIG1fb2xkU2NvcGU7Ci19OwotCi1pbmxpbmUgVHJlZVNjb3Bl
QWRvcHRlcjo6VHJlZVNjb3BlQWRvcHRlcihOb2RlJiB0b0Fkb3B0LCBUcmVlU2NvcGUmIG5ld1Nj
b3BlKQotICAgIDogbV90b0Fkb3B0KHRvQWRvcHQpCi0gICAgLCBtX25ld1Njb3BlKG5ld1Njb3Bl
KQotICAgICwgbV9vbGRTY29wZSh0b0Fkb3B0LnRyZWVTY29wZSgpKQotewotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0
RWxlbWVudC5jcHAJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZpZWxkU2V0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMiwxMiArMTIyLDEzIEBA
IHZvaWQgSFRNTEZpZWxkU2V0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2UKICAgICAgICAgdXBkYXRl
RnJvbUNvbnRyb2xFbGVtZW50c0FuY2VzdG9yRGlzYWJsZWRTdGF0ZVVuZGVyKCpsZWdlbmQsIHRy
dWUpOwogfQogCi12b2lkIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50
KERvY3VtZW50JiBvbGREb2N1bWVudCkKK3ZvaWQgSFRNTEZpZWxkU2V0RWxlbWVudDo6ZGlkTW92
ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1l
bnQpCiB7Ci0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQo
b2xkRG9jdW1lbnQpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZkb2N1
bWVudCgpID09ICZuZXdEb2N1bWVudCk7CisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlk
TW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKICAgICBpZiAobV9o
YXNEaXNhYmxlZEF0dHJpYnV0ZSkgewogICAgICAgICBvbGREb2N1bWVudC5yZW1vdmVEaXNhYmxl
ZEZpZWxkc2V0RWxlbWVudCgpOwotICAgICAgICBkb2N1bWVudCgpLmFkZERpc2FibGVkRmllbGRz
ZXRFbGVtZW50KCk7CisgICAgICAgIG5ld0RvY3VtZW50LmFkZERpc2FibGVkRmllbGRzZXRFbGVt
ZW50KCk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNl
dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNl
dEVsZW1lbnQuaAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RmllbGRTZXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpIGZpbmFsOwogICAgIHZvaWQg
ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKSBmaW5hbDsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChj
b25zdCBDaGlsZENoYW5nZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQo
RG9jdW1lbnQmIG9sZERvY3VtZW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3Vt
ZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5hbDsK
IAogICAgIGJvb2wgbWF0Y2hlc1ZhbGlkUHNldWRvQ2xhc3MoKSBjb25zdCBmaW5hbDsKICAgICBi
b29sIG1hdGNoZXNJbnZhbGlkUHNldWRvQ2xhc3MoKSBjb25zdCBmaW5hbDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAkocmV2aXNpb24g
MjE3NjQyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjUwLDEwICsyNTAsMTAgQEAgdm9pZCBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpkaWRBdHRhY2hSZQogICAgIH0KIH0KIAotdm9pZCBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQpCit2b2lk
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBv
bGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogewogICAgIEZvcm1Bc3NvY2lhdGVk
RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOwotICAgIEhUTUxFbGVt
ZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7CisgICAgSFRNTEVsZW1lbnQ6
OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7CiB9CiAKIHN0
YXRpYyB2b2lkIGFkZEludmFsaWRFbGVtZW50VG9BbmNlc3RvckZyb21JbnNlcnRpb25Qb2ludChj
b25zdCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50JiBlbGVtZW50LCBDb250YWluZXJOb2RlKiBpbnNl
cnRpb25Qb2ludCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5oCShyZXZpc2lvbiAyMTc2NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw3IEBAIHBy
b3RlY3RlZDoKICAgICBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhD
b250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEluc2VydGluZ1N1YnRy
ZWUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVu
dCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xk
RG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHN1
cHBvcnRzRm9jdXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzS2V5Ym9hcmRGb2N1c2Fi
bGUoS2V5Ym9hcmRFdmVudCYpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NTksMTQgKzg1
OSwxNCBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cmVzdW1lRnJvbURvY3VtZW50CiAgICAgcmVz
ZXRBc3NvY2lhdGVkRm9ybUNvbnRyb2xFbGVtZW50cygpOwogfQogCi12b2lkIEhUTUxGb3JtRWxl
bWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50KQordm9pZCBI
VE1MRm9ybUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVu
dCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogewogICAgIGlmICghc2hvdWxkQXV0b2NvbXBsZXRl
KCkpIHsKICAgICAgICAgb2xkRG9jdW1lbnQudW5yZWdpc3RlckZvckRvY3VtZW50U3VzcGVuc2lv
bkNhbGxiYWNrcyh0aGlzKTsKICAgICAgICAgZG9jdW1lbnQoKS5yZWdpc3RlckZvckRvY3VtZW50
U3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsKICAgICB9CiAKLSAgICBIVE1MRWxlbWVudDo6ZGlk
TW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOworICAgIEhUTUxFbGVtZW50OjpkaWRNb3Zl
VG9OZXdEb2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogfQogCiBib29sIEhUTUxG
b3JtRWxlbWVudDo6c2hvdWxkQXV0b2NvbXBsZXRlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuaAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0Nyw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlc3VtZUZyb21Eb2N1bWVudFN1c3BlbnNpb24oKSBm
aW5hbDsKIAotICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3Vt
ZW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGRE
b2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5hbDsKIAogICAgIHZvaWQgY29weU5v
bkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JikgZmluYWw7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24g
MjE3NjQyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTQ1LDEwICs1NDUsMTAgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50Ojph
ZGRTdWJyZXNvdXJjZUF0dAogICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIGRvY3VtZW50KCku
Y29tcGxldGVVUkwoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih1c2VtYXBBdHRyKSkp
OwogfQogCi12b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3Vt
ZW50JiBvbGREb2N1bWVudCkKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9j
dW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCiB7CiAg
ICAgbV9pbWFnZUxvYWRlci5lbGVtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnQoKTsKLSAgICBIVE1M
RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOworICAgIEhUTUxFbGVt
ZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogfQog
CiBib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmlzU2VydmVyTWFwKCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCShyZXZpc2lvbiAyMTc2NDIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTcs
NyArOTcsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSFRNTEltYWdlRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqID0gMCk7CiAKLSAg
ICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQs
IERvY3VtZW50JiBuZXdEb2N1bWVudCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
b3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MjIsMzEgKzE1MjIsMjYgQEAgdm9pZCBIVE1MSW5w
dXRFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YQogI2VuZGlmCiB9CiAKLXZvaWQgSFRNTElucHV0
RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50KQordm9p
ZCBIVE1MSW5wdXRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9j
dW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkKIHsKICAgICBpZiAoaW1hZ2VMb2FkZXIoKSkK
ICAgICAgICAgaW1hZ2VMb2FkZXIoKS0+ZWxlbWVudERpZE1vdmVUb05ld0RvY3VtZW50KCk7CiAK
LSAgICBib29sIG5lZWRzU3VzcGVuc2lvbkNhbGxiYWNrID0gdGhpcy0+bmVlZHNTdXNwZW5zaW9u
Q2FsbGJhY2soKTsKICAgICAvLyBBbHdheXMgdW5yZWdpc3RlciBmb3IgY2FjaGUgY2FsbGJhY2tz
IHdoZW4gbGVhdmluZyBhIGRvY3VtZW50LCBldmVuIGlmIHdlIHdvdWxkIG90aGVyd2lzZSBsaWtl
IHRvIGJlIHJlZ2lzdGVyZWQKLSAgICBpZiAobmVlZHNTdXNwZW5zaW9uQ2FsbGJhY2spCisgICAg
aWYgKG5lZWRzU3VzcGVuc2lvbkNhbGxiYWNrKCkpIHsKICAgICAgICAgb2xkRG9jdW1lbnQudW5y
ZWdpc3RlckZvckRvY3VtZW50U3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsKKyAgICAgICAgbmV3
RG9jdW1lbnQucmVnaXN0ZXJGb3JEb2N1bWVudFN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7Cisg
ICAgfQogICAgIGlmIChpc1JhZGlvQnV0dG9uKCkpCiAgICAgICAgIG9sZERvY3VtZW50LmZvcm1D
b250cm9sbGVyKCkucmFkaW9CdXR0b25Hcm91cHMoKS5yZW1vdmVCdXR0b24odGhpcyk7CiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBpZiAobV9oYXNUb3VjaEV2ZW50SGFuZGxlcikKKyAg
ICBpZiAobV9oYXNUb3VjaEV2ZW50SGFuZGxlcikgewogICAgICAgICBvbGREb2N1bWVudC5kaWRS
ZW1vdmVFdmVudFRhcmdldE5vZGUoKnRoaXMpOworICAgICAgICBuZXdEb2N1bWVudC5kaWRBZGRU
b3VjaEV2ZW50SGFuZGxlcigqdGhpcyk7CisgICAgfQogI2VuZGlmCiAKLSAgICBpZiAobmVlZHNT
dXNwZW5zaW9uQ2FsbGJhY2spCi0gICAgICAgIGRvY3VtZW50KCkucmVnaXN0ZXJGb3JEb2N1bWVu
dFN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7Ci0KLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQot
ICAgIGlmIChtX2hhc1RvdWNoRXZlbnRIYW5kbGVyKQotICAgICAgICBkb2N1bWVudCgpLmRpZEFk
ZFRvdWNoRXZlbnRIYW5kbGVyKCp0aGlzKTsKLSNlbmRpZgotCi0gICAgSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsKKyAgICBIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQs
IG5ld0RvY3VtZW50KTsKIH0KIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjphZGRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCShyZXZpc2lvbiAyMTc2NDIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQ4
LDcgKzM0OCw3IEBAIHByaXZhdGU6CiAgICAgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBp
bnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRJbnNl
cnRpbmdTdWJ0cmVlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2Rl
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9j
dW1lbnQpIGZpbmFsOworICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9s
ZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIGZpbmFsOwogCiAgICAgYm9vbCBoYXND
dXN0b21Gb2N1c0xvZ2ljKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0tleWJvYXJkRm9jdXNh
YmxlKEtleWJvYXJkRXZlbnQmKSBjb25zdCBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMzLDE4ICs3
MzMsMTggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1bnJlZ2lzdGVyV2l0aERvYwogCiB9CiAK
LXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9s
ZERvY3VtZW50KQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChE
b2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkKIHsKKyAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigmZG9jdW1lbnQoKSA9PSAmbmV3RG9jdW1lbnQp
OwogICAgIGlmIChtX3Nob3VsZERlbGF5TG9hZEV2ZW50KSB7CiAgICAgICAgIG9sZERvY3VtZW50
LmRlY3JlbWVudExvYWRFdmVudERlbGF5Q291bnQoKTsKLSAgICAgICAgZG9jdW1lbnQoKS5pbmNy
ZW1lbnRMb2FkRXZlbnREZWxheUNvdW50KCk7CisgICAgICAgIG5ld0RvY3VtZW50LmluY3JlbWVu
dExvYWRFdmVudERlbGF5Q291bnQoKTsKICAgICB9CiAKICAgICB1bnJlZ2lzdGVyV2l0aERvY3Vt
ZW50KG9sZERvY3VtZW50KTsKKyAgICByZWdpc3RlcldpdGhEb2N1bWVudChuZXdEb2N1bWVudCk7
CiAKLSAgICByZWdpc3RlcldpdGhEb2N1bWVudChkb2N1bWVudCgpKTsKLQotICAgIEhUTUxFbGVt
ZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7CisgICAgSFRNTEVsZW1lbnQ6
OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7CiAgICAgdXBk
YXRlU2hvdWxkQXV0b3BsYXkoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MzEsNyArNTMxLDcgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgd2lsbERldGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRGV0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZE1vdmVUb05ld0Rv
Y3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRNb3Zl
VG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVu
dCkgb3ZlcnJpZGU7CiAKICAgICBlbnVtIERpc3BsYXlNb2RlIHsgVW5rbm93biwgTm9uZSwgUG9z
dGVyLCBQb3N0ZXJXYWl0aW5nRm9yVmlkZW8sIFZpZGVvIH07CiAgICAgRGlzcGxheU1vZGUgZGlz
cGxheU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlNb2RlOyB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMjE3NjQyKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ5NSwxMCArNDk1LDEwIEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OmFkZFN1YnJlc291
cmNlQXQKICAgICAgICAgYWRkU3VicmVzb3VyY2VVUkwodXJscywgZG9jdW1lbnQoKS5jb21wbGV0
ZVVSTCh1c2VNYXApKTsKIH0KIAotdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6ZGlkTW92ZVRvTmV3
RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50KQordm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6
ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3
RG9jdW1lbnQpCiB7CiAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1
bWVudChvbGREb2N1bWVudCk7Ci0gICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlkTW92ZVRv
TmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOworICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRp
ZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7CiB9CiAKIGJvb2wg
SFRNTE9iamVjdEVsZW1lbnQ6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYgZW5jb2Rpbmcs
IGJvb2wpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCShyZXZp
c2lvbiAyMTc2NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbmlz
aGVkSW5zZXJ0aW5nU3VidHJlZSgpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFp
bmVyTm9kZSYpIGZpbmFsOwogCi0gICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVu
dCYgb2xkRG9jdW1lbnQpIGZpbmFsOworICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9j
dW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIGZpbmFsOwogCiAgICAg
dm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBmaW5hbDsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGljdHVyZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBpY3R1cmVFbGVtZW50LmNwcAkocmV2aXNpb24gMjE3
NjQyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGljdHVyZUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSwxMCArNDEsMTAgQEAgSFRNTFBpY3R1cmVFbGVtZW50Ojp+SFRNTFBp
Y3R1cmVFbGVtZW50KAogICAgIGRvY3VtZW50KCkucmVtb3ZlVmlld3BvcnREZXBlbmRlbnRQaWN0
dXJlKCp0aGlzKTsKIH0KIAotdm9pZCBIVE1MUGljdHVyZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0Rv
Y3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkKK3ZvaWQgSFRNTFBpY3R1cmVFbGVtZW50Ojpk
aWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdE
b2N1bWVudCkKIHsKICAgICBvbGREb2N1bWVudC5yZW1vdmVWaWV3cG9ydERlcGVuZGVudFBpY3R1
cmUoKnRoaXMpOwotICAgIEhUTUxFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1
bWVudCk7CisgICAgSFRNTEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50
LCBuZXdEb2N1bWVudCk7CiAgICAgc291cmNlc0NoYW5nZWQoKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGljdHVyZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQaWN0dXJlRWxlbWVudC5oCShyZXZpc2lvbiAyMTc2NDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQaWN0dXJlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFBpY3R1cmVFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdm9pZCBkaWRNb3ZlVG9O
ZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQpIGZpbmFsOworICAgIHZvaWQgZGlkTW92
ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1l
bnQpIGZpbmFsOwogCiAgICAgV2Vha1B0ckZhY3Rvcnk8SFRNTFBpY3R1cmVFbGVtZW50PiBtX3dl
YWtGYWN0b3J5IHsgdGhpcyB9OwogICAgIFZlY3RvcjxNZWRpYVF1ZXJ5UmVzdWx0PiBtX3ZpZXdw
b3J0RGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIxNzY0MikKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2NiwxNyArMjY2LDE4IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Zmlu
aXNoUGFyc2kKICAgICAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogfQogCi12b2lk
IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBv
bGREb2N1bWVudCkKK3ZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9j
dW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCiB7Cisg
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJmRvY3VtZW50KCkgPT0gJm5ld0Rv
Y3VtZW50KTsKICAgICBpZiAobV9uZWVkc0RvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcykgewog
ICAgICAgICBvbGREb2N1bWVudC51bnJlZ2lzdGVyRm9yRG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJh
Y2tzKHRoaXMpOwotICAgICAgICBkb2N1bWVudCgpLnJlZ2lzdGVyRm9yRG9jdW1lbnRTdXNwZW5z
aW9uQ2FsbGJhY2tzKHRoaXMpOworICAgICAgICBuZXdEb2N1bWVudC5yZWdpc3RlckZvckRvY3Vt
ZW50U3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsKICAgICB9CiAKICAgICBpZiAobV9pbWFnZUxv
YWRlcikKICAgICAgICAgbV9pbWFnZUxvYWRlci0+ZWxlbWVudERpZE1vdmVUb05ld0RvY3VtZW50
KCk7CiAKLSAgICBIVE1MUGx1Z0luRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9j
dW1lbnQpOworICAgIEhUTUxQbHVnSW5FbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGRE
b2N1bWVudCwgbmV3RG9jdW1lbnQpOwogfQogCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6
OnByZXBhcmVGb3JEb2N1bWVudFN1c3BlbnNpb24oKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDIxNzY0MikKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiwgYm9vbCBjcmVh
dGVkQnlQYXJzZXIpOwogCi0gICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYg
b2xkRG9jdW1lbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9j
dW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIG92ZXJyaWRlOwogICAg
IGJvb2wgcmVxdWVzdE9iamVjdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXJhbVZhbHVlcykgZmluYWw7CiAKICAgICBib29sIGlzSW1hZ2VUeXBlKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHAJKHJldmlzaW9u
IDIxNzY0MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgyLDEyICs4MiwxMyBAQCBSZWY8Tm9kZT4gSFRNTFRlbXBsYXRl
RWxlbWVudDo6Y2xvbmVOb2RlCiAgICAgcmV0dXJuIGNsb25lLnJlbGVhc2VOb25OdWxsKCk7CiB9
CiAKLXZvaWQgSFRNTFRlbXBsYXRlRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1l
bnQmIG9sZERvY3VtZW50KQordm9pZCBIVE1MVGVtcGxhdGVFbGVtZW50OjpkaWRNb3ZlVG9OZXdE
b2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkKIHsK
LSAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOworICAg
IEhUTUxFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1l
bnQpOwogICAgIGlmICghbV9jb250ZW50KQogICAgICAgICByZXR1cm47Ci0gICAgZG9jdW1lbnQo
KS5lbnN1cmVUZW1wbGF0ZURvY3VtZW50KCkuYWRvcHRJZk5lZWRlZCgqbV9jb250ZW50KTsKKyAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigmZG9jdW1lbnQoKSA9PSAmbmV3RG9j
dW1lbnQpOworICAgIG5ld0RvY3VtZW50LmVuc3VyZVRlbXBsYXRlRG9jdW1lbnQoKS5hZG9wdElm
TmVlZGVkKCptX2NvbnRlbnQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQuaAkocmV2aXNpb24gMjE3NjQy
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGVtcGxhdGVFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICBIVE1MVGVtcGxhdGVFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgUmVmPE5vZGU+IGNsb25l
Tm9kZUludGVybmFsKERvY3VtZW50JiwgQ2xvbmluZ09wZXJhdGlvbikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQpIGZpbmFsOworICAg
IHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVu
dCYgbmV3RG9jdW1lbnQpIGZpbmFsOwogCiAgICAgbXV0YWJsZSBSZWZQdHI8VGVtcGxhdGVDb250
ZW50RG9jdW1lbnRGcmFnbWVudD4gbV9jb250ZW50OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYwLDEx
ICszNjAsMTEgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXRXZWJraXRXaXJlbGVzcwogfQog
I2VuZGlmCiAKLXZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9j
dW1lbnQmIG9sZERvY3VtZW50KQordm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRNb3ZlVG9OZXdE
b2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkKIHsK
ICAgICBpZiAobV9pbWFnZUxvYWRlcikKICAgICAgICAgbV9pbWFnZUxvYWRlci0+ZWxlbWVudERp
ZE1vdmVUb05ld0RvY3VtZW50KCk7Ci0gICAgSFRNTE1lZGlhRWxlbWVudDo6ZGlkTW92ZVRvTmV3
RG9jdW1lbnQob2xkRG9jdW1lbnQpOworICAgIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZE1vdmVUb05l
d0RvY3VtZW50KG9sZERvY3VtZW50LCBuZXdEb2N1bWVudCk7CiB9CiAKICNpZiBFTkFCTEUoTUVE
SUFfU1RBVElTVElDUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5o
CShyZXZpc2lvbiAyMTc2NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcgKzEwNyw3IEBAIHByaXZhdGU6CiAKICAgICBi
b29sIGhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZURpc3Bs
YXlTdGF0ZSgpIGZpbmFsOwotICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQm
IG9sZERvY3VtZW50KSBmaW5hbDsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3Vt
ZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5hbDsKICAgICB2b2lk
IHNldERpc3BsYXlNb2RlKERpc3BsYXlNb2RlKSBmaW5hbDsKIAogICAgIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpWaWRlbzsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZURvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMTc2NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgcHJp
dmF0ZToKICAgICB9CiAKICAgICB2aXJ0dWFsIH5JbWFnZURvY3VtZW50RWxlbWVudCgpOwotICAg
IHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50KSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwg
RG9jdW1lbnQmIG5ld0RvY3VtZW50KSBvdmVycmlkZTsKIAogICAgIEltYWdlRG9jdW1lbnQqIG1f
aW1hZ2VEb2N1bWVudDsKIH07CkBAIC00MjYsMTMgKzQyNiwxMyBAQCBJbWFnZURvY3VtZW50RWxl
bWVudDo6fkltYWdlRG9jdW1lbnRFbGVtCiAgICAgICAgIG1faW1hZ2VEb2N1bWVudC0+ZGlzY29u
bmVjdEltYWdlRWxlbWVudCgpOwogfQogCi12b2lkIEltYWdlRG9jdW1lbnRFbGVtZW50OjpkaWRN
b3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQpCit2b2lkIEltYWdlRG9jdW1l
bnRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERv
Y3VtZW50JiBuZXdEb2N1bWVudCkKIHsKICAgICBpZiAobV9pbWFnZURvY3VtZW50KSB7CiAgICAg
ICAgIG1faW1hZ2VEb2N1bWVudC0+ZGlzY29ubmVjdEltYWdlRWxlbWVudCgpOwogICAgICAgICBt
X2ltYWdlRG9jdW1lbnQgPSBudWxscHRyOwogICAgIH0KLSAgICBIVE1MSW1hZ2VFbGVtZW50Ojpk
aWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7CisgICAgSFRNTEltYWdlRWxlbWVudDo6
ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKIH0KIAogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIxNzY0
MikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTIsMTAgKzIxMiwxMCBAQCB2b2lkIFNWR0ltYWdlRWxlbWVudDo6YWRkU3VicmVz
b3VyY2VBdHRyCiAgICAgYWRkU3VicmVzb3VyY2VVUkwodXJscywgZG9jdW1lbnQoKS5jb21wbGV0
ZVVSTChocmVmKCkpKTsKIH0KIAotdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0Rv
Y3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkKK3ZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpkaWRN
b3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1
bWVudCkKIHsKICAgICBtX2ltYWdlTG9hZGVyLmVsZW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudCgp
OwotICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1l
bnQpOworICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9j
dW1lbnQsIG5ld0RvY3VtZW50KTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFn
ZUVsZW1lbnQuaAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0lt
YWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKSBmaW5hbDsKIAogICAgIGJvb2wg
c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAg
ICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCkgZmluYWw7
CisgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERv
Y3VtZW50JiBuZXdEb2N1bWVudCkgZmluYWw7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHSW1hZ2VFbGVtZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChYLCB4KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkocmV2aXNp
b24gMjE3NjQyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05OSwxMSArOTksMTEgQEAgU1ZHU1ZHRWxlbWVudDo6flNWR1NWR0VsZW1l
bnQoKQogICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlbW92ZVRpbWVDb250
YWluZXIodGhpcyk7CiB9CiAKLXZvaWQgU1ZHU1ZHRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1l
bnQoRG9jdW1lbnQmIG9sZERvY3VtZW50KQordm9pZCBTVkdTVkdFbGVtZW50OjpkaWRNb3ZlVG9O
ZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkK
IHsKICAgICBvbGREb2N1bWVudC51bnJlZ2lzdGVyRm9yRG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJh
Y2tzKHRoaXMpOwogICAgIGRvY3VtZW50KCkucmVnaXN0ZXJGb3JEb2N1bWVudFN1c3BlbnNpb25D
YWxsYmFja3ModGhpcyk7Ci0gICAgU1ZHR3JhcGhpY3NFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1
bWVudChvbGREb2N1bWVudCk7CisgICAgU1ZHR3JhcGhpY3NFbGVtZW50OjpkaWRNb3ZlVG9OZXdE
b2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogfQogCiBjb25zdCBBdG9taWNTdHJp
bmcmIFNWR1NWR0VsZW1lbnQ6OmNvbnRlbnRTY3JpcHRUeXBlKCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAkocmV2aXNpb24gMjE3NjQyKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB+U1ZHU1ZHRWxlbWVudCgpOwogCiAgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1
bWVudCYgb2xkRG9jdW1lbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1l
bnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIG92ZXJyaWRl
OwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBS
ZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
Jikgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>