<?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>166718</bug_id>
          
          <creation_ts>2017-01-05 00:26:00 -0800</creation_ts>
          <short_desc>Remove PassRefPtr use from &quot;bindings/scripts&quot;, &quot;svg&quot;, &quot;testing&quot;, and &quot;workers&quot;</short_desc>
          <delta_ts>2017-01-05 00:47:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1264036</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-05 00:26:00 -0800</bug_when>
    <thetext>Remove PassRefPtr use from &quot;bindings/scripts&quot;, &quot;svg&quot;, &quot;testing&quot;, and &quot;workers&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264038</commentid>
    <comment_count>1</comment_count>
      <attachid>298074</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-05 00:32:03 -0800</bug_when>
    <thetext>Created attachment 298074
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264039</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-05 00:33:26 -0800</bug_when>
    <thetext>Attachment 298074 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264040</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-01-05 00:47:08 -0800</bug_when>
    <thetext>Committed r210323: &lt;http://trac.webkit.org/changeset/210323&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298074</attachid>
            <date>2017-01-05 00:32:03 -0800</date>
            <delta_ts>2017-01-05 00:42:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166718-20170105003036.patch</filename>
            <type>text/plain</type>
            <size>58317</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2UwNmE1ZjBhNWY4NTVh
ZTY3ZDkxMzcwNWViMTE4MDI1NGYwNDdhMi4uMGJkMTE3ZTczMjIxNmMxMTU1MWY1ZjAxYmJmZDBm
N2NlOGNlOTQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE3LTAxLTA1ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUGFzc1JlZlB0ciB1
c2UgZnJvbSAiYmluZGluZ3Mvc2NyaXB0cyIsICJzdmciLCAidGVzdGluZyIsIGFuZCAid29ya2Vy
cyIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Njcx
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
RmxvYXQ2NEFycmF5LmNwcDogUmVtb3ZlZC4gU3RhbGUgdW51c2VkIHRlc3QKKyAgICAgICAgcmVz
dWx0IGV4cGVjdGF0aW9uIGZpbGUuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTRmxvYXQ2NEFycmF5Lmg6IERpdHRvLgorCisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6IEZp
eCBjb21tZW50IHRoYXQgaW5jb3JyZWN0bHkKKyAgICAgICAgbWVudGlvbnMgUGFzc1JlZlB0ci4K
KworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKTogUmV0dXJuIFJlZiBp
bnN0ZWFkCisgICAgICAgIG9mIFJlZlB0ci4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
c2VyaWFsaXplT2JqZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmRl
c2VyaWFsaXplQnVmZmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om9i
c2VydmVHQyk6IFN0cmVhbWxpbmVkIGNvZGUgYSBiaXQuCisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaDogVXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdlcy4KKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5pZGw6IE1hcmtlZCB2YXJpb3VzIGZ1bmN0aW9uIHJlc3VsdHMgYXMgbnVsbGFibGUu
CisKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3Bl
KTogVGFrZSBhIFJlZlB0ciYmCisgICAgICAgIGluc3RlYWQgb2YgYSBQYXNzUmVmUHRyLgorICAg
ICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmg6IFVwZGF0ZWQgZm9yIGFib3Zl
IGNoYW5nZS4KKworICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Oldvcmtlcjo6V29ya2VyKTogUGFzc3MgYSByZWZlcmVuY2UgdG8gV29ya2VyR2xvYmFsU2Nv
cGVQcm94eTo6Y3JlYXRlLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjp+V29ya2VyKTogVXBk
YXRlZCBzaW5jZSBtX2NvbnRlbnRQcm94eSBpcyBhIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNv
cmU6Oldvcmtlcjo6cG9zdE1lc3NhZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
cjo6dGVybWluYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6Omhhc1BlbmRp
bmdBY3Rpdml0eSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpub3RpZnlOZXR3
b3JrU3RhdGVDaGFuZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6bm90aWZ5
RmluaXNoZWQpOiBEaXR0by4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5oOiBNYWRlIG1fY29u
dGV4dFByb3h5IGEgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGEgcG9pbnRlci4KKworICAgICAgICAq
IHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oOiBSZWR1Y2VkIGluY2x1ZGVzLiBNYWRl
IGRlc3RydWN0b3IKKyAgICAgICAgcHJvdGVjdGVkIGluc3RlYWQgb2YgcHVibGljIHNpbmNlIHRo
aXMgY2xhc3MgZGVzdHJveXMgaXRzZWxmLgorCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZVByb3h5
OjpjcmVhdGUpOiBUYWtlIGFuZCByZXR1cm4gYSByZWZlcmVuY2UuCisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkpOiBNb3ZlZCBtb3N0
IGluaXRpYWxpemF0aW9uCisgICAgICAgIHRvIHRoZSBjYWxhc3MgZGVmaW5pdGlvbi4gVGFrZSBh
IHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ck1lc3NhZ2luZ1Byb3h5OjpzdGFydFdvcmtlckdsb2JhbFNjb3BlKTogVXNlIGF1dG8uCisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyVGhyZWFkQ3JlYXRlZCk6
IFRha2UgYSByZWZlcmVuY2UKKyAgICAgICAgcmF0aGVyIHRoYW4gYSBQYXNzUmVmUHRyLgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaDogVXBkYXRlZCBmb3IgYWJvdmUg
Y2hhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojphc2tlZFRv
VGVybWluYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1By
b3h5Ojp3b3JrZXJPYmplY3QpOiBEZWxldGVkLgorCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJU
aHJlYWQuaDogVGFrZSBhIFJlZlB0ciYmIGluc3RlYWQgb2YgYSBQYXNzUmVmUHRyLgorCiAyMDE3
LTAxLTA0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLiBBZGRyZXNzaW5nIHBvc3QtcmV2aWV3IGNvbW1lbnRzIGFmdGVyIHIy
MTAwNS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU0Zsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3
OTA1MjJmNzQ5ZWQ5ODM0OTExYmMyMmNmNmU3MGVhYTgyNTdmZTEyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTQg
KzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291
cmNlIHByb2plY3QuCi0gICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0
ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiSlNGbG9hdDY0QXJyYXkuaCIKLQotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
LSNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlld0hlbHBlci5oIgotI2luY2x1ZGUgIkpTRE9NQmlu
ZGluZy5oIgotI2luY2x1ZGUgIkpTRmxvYXQzMkFycmF5LmgiCi0jaW5jbHVkZSAiSlNJbnQzMkFy
cmF5LmgiCi0jaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvRmxv
YXQ2NEFycmF5Lmg+Ci0jaW5jbHVkZSA8cnVudGltZS9JbnQzMkFycmF5Lmg+Ci0jaW5jbHVkZSA8
cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLQot
dXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vKiBIYXNoIHRh
YmxlICovCi0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU0Zsb2F0NjRBcnJheVRhYmxl
VmFsdWVzW10gPQotewotICAgIHsgImNvbnN0cnVjdG9yIiwgRG9udEVudW0gfCBSZWFkT25seSwg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0Zsb2F0
NjRBcnJheUNvbnN0cnVjdG9yKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCi0gICAgeyAw
LCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9Ci19OwotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpT
RmxvYXQ2NEFycmF5VGFibGUgPSB7IDIsIDEsIEpTRmxvYXQ2NEFycmF5VGFibGVWYWx1ZXMsIDAg
fTsKLS8qIEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCi0KLXN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9Ci17Ci0g
ICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9Ci19OwotCi1zdGF0aWMgY29uc3QgSGFzaFRh
YmxlIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3JUYWJsZSA9IHsgMSwgMCwgSlNGbG9hdDY0QXJy
YXlDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAwIH07Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTRmxvYXQ2NEFycmF5KEV4
ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yKiBqc0NvbnN0
cnVjdG9yID0ganNDYXN0PEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3IqPihleGVjLT5qc0NhbGxl
ZSgpKTsKLSAgICBSZWZQdHI8RmxvYXQ2NEFycmF5PiBhcnJheSA9IGNvbnN0cnVjdEFycmF5QnVm
ZmVyVmlldzxGbG9hdDY0QXJyYXksIGRvdWJsZT4oZXhlYyk7Ci0gICAgaWYgKCFhcnJheS5nZXQo
KSkKLSAgICAgICAgLy8gRXhjZXB0aW9uIGhhcyBhbHJlYWR5IGJlZW4gdGhyb3duLgotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgp
LCBhcnJheS5nZXQoKSkpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEZsb2F0NjRBcnJheSogb2Jq
ZWN0KQotewotICAgIHJldHVybiB0b0pTQXJyYXlCdWZmZXJWaWV3PEpTRmxvYXQ2NEFycmF5Pihl
eGVjLCBnbG9iYWxPYmplY3QsIG9iamVjdCk7Ci19Ci0KLXZvaWQgSlNGbG9hdDY0QXJyYXk6Omlu
ZGV4U2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQotewotICAgIGltcGwoKS0+c2V0KGluZGV4LCB2YWx1ZS50b051bWJlcihleGVj
KSk7Ci19Ci0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGUqIGdldEpTRmxvYXQ2NEFycmF5Q29uc3Ry
dWN0b3JUYWJsZShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIGdldEhhc2hUYWJsZUZv
ckdsb2JhbERhdGEoZXhlYy0+dm0oKSwgJkpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3JUYWJsZSk7
Ci19Ci0KLWNvbnN0IENsYXNzSW5mbyBKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJGbG9hdDY0QXJyYXlDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIGdldEpTRmxv
YXQ2NEFycmF5Q29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0Zsb2F0NjRB
cnJheUNvbnN0cnVjdG9yKSB9OwotCi1KU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yOjpKU0Zsb2F0
NjRBcnJheUNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQotICAgIDogRE9NQ29uc3RydWN0b3JPYmplY3Qoc3RydWN0dXJlLCBn
bG9iYWxPYmplY3QpCi17Ci19Ci0KLXZvaWQgSlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOwotICAgIEFTU0VS
VChpbmhlcml0cyhpbmZvKCkpKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+dm0oKSwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLnByb3RvdHlwZSwgSlNGbG9hdDY0QXJyYXlQcm90b3R5cGU6OnNlbGYoZXhl
YywgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3Qo
ZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoMSksIFJl
YWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKLX0KLQotYm9vbCBKU0Zsb2F0NjRBcnJh
eUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Ci17Ci0gICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU0Zsb2F0NjRBcnJheUNvbnN0cnVj
dG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsIGdldEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3JUYWJs
ZShleGVjKSwganNDYXN0PEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3IqPihvYmplY3QpLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwotfQotCi1ib29sIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3I6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRv
cikKLXsKLSAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPEpTRmxvYXQ2NEFycmF5
Q29uc3RydWN0b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgZ2V0SlNGbG9hdDY0QXJyYXlDb25zdHJ1
Y3RvclRhYmxlKGV4ZWMpLCBqc0Nhc3Q8SlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3Rvcio+KG9iamVj
dCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Ci19Ci0KLUNvbnN0cnVjdFR5cGUgSlNGbG9h
dDY0QXJyYXlDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3RE
YXRhJiBjb25zdHJ1Y3REYXRhKQotewotICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9u
ID0gY29uc3RydWN0SlNGbG9hdDY0QXJyYXk7Ci0gICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Okhv
c3Q7Ci19Ci0KLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwotCi1zdGF0aWMgY29uc3Qg
SGFzaFRhYmxlVmFsdWUgSlNGbG9hdDY0QXJyYXlQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KLXsK
LSAgICB7ICJmb28iLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRp
Y19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc0Zsb2F0NjRBcnJheVByb3RvdHlwZUZ1bmN0aW9uRm9v
KSwgKGludHB0cl90KTEsIE5vSW50cmluc2ljIH0sCi0gICAgeyAic2V0IiwgRG9udERlbGV0ZSB8
IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNG
bG9hdDY0QXJyYXlQcm90b3R5cGVGdW5jdGlvblNldCksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNp
YyB9LAotICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQotfTsKLQotc3RhdGljIGNvbnN0
IEhhc2hUYWJsZSBKU0Zsb2F0NjRBcnJheVByb3RvdHlwZVRhYmxlID0geyA0LCAzLCBKU0Zsb2F0
NjRBcnJheVByb3RvdHlwZVRhYmxlVmFsdWVzLCAwIH07Ci1zdGF0aWMgY29uc3QgSGFzaFRhYmxl
KiBnZXRKU0Zsb2F0NjRBcnJheVByb3RvdHlwZVRhYmxlKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAg
ICByZXR1cm4gZ2V0SGFzaFRhYmxlRm9yR2xvYmFsRGF0YShleGVjLT52bSgpLCAmSlNGbG9hdDY0
QXJyYXlQcm90b3R5cGVUYWJsZSk7Ci19Ci0KLWNvbnN0IENsYXNzSW5mbyBKU0Zsb2F0NjRBcnJh
eVByb3RvdHlwZTo6c19pbmZvID0geyAiRmxvYXQ2NEFycmF5UHJvdG90eXBlIiwgJkJhc2U6OnNf
aW5mbywgMCwgZ2V0SlNGbG9hdDY0QXJyYXlQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU0Zsb2F0NjRBcnJheVByb3RvdHlwZSkgfTsKLQotSlNPYmplY3QqIEpTRmxvYXQ2NEFy
cmF5UHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKLXsKLSAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTRmxvYXQ2NEFycmF5Pihl
eGVjLCBnbG9iYWxPYmplY3QpOwotfQotCi1ib29sIEpTRmxvYXQ2NEFycmF5UHJvdG90eXBlOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgSlNGbG9h
dDY0QXJyYXlQcm90b3R5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGbG9hdDY0QXJyYXlQcm90
b3R5cGUqPihvYmplY3QpOwotICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmpl
Y3Q+KGV4ZWMsIGdldEpTRmxvYXQ2NEFycmF5UHJvdG90eXBlVGFibGUoZXhlYyksIHRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci19Ci0KLWJvb2wgSlNGbG9hdDY0QXJyYXlQcm90b3R5
cGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKLXsKLSAgICBKU0Zsb2F0NjRBcnJheVByb3RvdHlwZSogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0Zsb2F0NjRBcnJheVByb3RvdHlwZSo+KG9iamVjdCk7Ci0gICAgcmV0dXJuIGdldFN0
YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxKU09iamVjdD4oZXhlYywgZ2V0SlNGbG9hdDY0QXJyYXlQ
cm90b3R5cGVUYWJsZShleGVjKSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9y
KTsKLX0KLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSogZ2V0SlNGbG9hdDY0QXJyYXlUYWJsZShF
eGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEo
ZXhlYy0+dm0oKSwgJkpTRmxvYXQ2NEFycmF5VGFibGUpOwotfQotCi1jb25zdCBDbGFzc0luZm8g
SlNGbG9hdDY0QXJyYXk6OnNfaW5mbyA9IHsgIkZsb2F0NjRBcnJheSIsICZCYXNlOjpzX2luZm8s
IDAsIGdldEpTRmxvYXQ2NEFycmF5VGFibGUgLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRmxvYXQ2
NEFycmF5KSB9OwotCi1KU0Zsb2F0NjRBcnJheTo6SlNGbG9hdDY0QXJyYXkoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8Rmxv
YXQ2NEFycmF5PiBpbXBsKQotICAgIDogSlNBcnJheUJ1ZmZlclZpZXcoc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QsIGltcGwpCi17Ci19Ci0KLXZvaWQgSlNGbG9hdDY0QXJyYXk6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgVHlwZWRB
cnJheURlc2NyaXB0b3IgZGVzY3JpcHRvcihKU0Zsb2F0NjRBcnJheTo6aW5mbygpLCBPQkpFQ1Rf
T0ZGU0VUT0YoSlNGbG9hdDY0QXJyYXksIG1fc3RvcmFnZSksIE9CSkVDVF9PRkZTRVRPRihKU0Zs
b2F0NjRBcnJheSwgbV9zdG9yYWdlTGVuZ3RoKSk7Ci0gICAgdm0ucmVnaXN0ZXJUeXBlZEFycmF5
RGVzY3JpcHRvcihpbXBsKCksIGRlc2NyaXB0b3IpOwotICAgIG1fc3RvcmFnZSA9IGltcGwoKS0+
ZGF0YSgpOwotICAgIG1fc3RvcmFnZUxlbmd0aCA9IGltcGwoKS0+bGVuZ3RoKCk7Ci0gICAgQVNT
RVJUKGluaGVyaXRzKGluZm8oKSkpOwotfQotCi1KU09iamVjdCogSlNGbG9hdDY0QXJyYXk6OmNy
ZWF0ZVByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCi17Ci0gICAgcmV0dXJuIEpTRmxvYXQ2NEFycmF5UHJvdG90eXBlOjpjcmVhdGUoZXhlYy0+
dm0oKSwgZ2xvYmFsT2JqZWN0LCBKU0Zsb2F0NjRBcnJheVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCwgSlNBcnJheUJ1ZmZlclZpZXdQcm90b3R5cGU6
OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSkpOwotfQotCi1ib29sIEpTRmxvYXQ2NEFycmF5Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgSlNGbG9h
dDY0QXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGbG9hdDY0QXJyYXkqPihvYmplY3QpOwot
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsK
LSAgICBpZiAoaW5kZXggJiYgaW5kZXgudmFsdWUoKSA8IHN0YXRpY19jYXN0PEZsb2F0NjRBcnJh
eSo+KHRoaXNPYmplY3QtPmltcGwoKSktPmxlbmd0aCgpKSB7Ci0gICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgdGhpc09iamVjdC0+Z2V0QnlJbmRleChleGVjLCBpbmRleC52YWx1ZSgp
KSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZ2V0U3RhdGljVmFs
dWVTbG90PEpTRmxvYXQ2NEFycmF5LCBCYXNlPihleGVjLCBnZXRKU0Zsb2F0NjRBcnJheVRhYmxl
KGV4ZWMpLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotfQotCi1ib29sIEpTRmxv
YXQ2NEFycmF5OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCi17Ci0gICAgSlNGbG9hdDY0QXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNGbG9hdDY0QXJyYXkqPihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTsKLSAgICBpZiAoaW5kZXggJiYgaW5kZXgudmFs
dWUoKSA8IHN0YXRpY19jYXN0PEZsb2F0NjRBcnJheSo+KHRoaXNPYmplY3QtPmltcGwoKSktPmxl
bmd0aCgpKSB7Ci0gICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcih0aGlzT2JqZWN0LT5n
ZXRCeUluZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCkpLCBEb250RGVsZXRlKTsKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNG
bG9hdDY0QXJyYXksIEJhc2U+KGV4ZWMsIGdldEpTRmxvYXQ2NEFycmF5VGFibGUoZXhlYyksIHRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Ci19Ci0KLWJvb2wgSlNGbG9hdDY0
QXJyYXk6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAgIEpT
RmxvYXQ2NEFycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRmxvYXQ2NEFycmF5Kj4ob2JqZWN0
KTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0g
ICAgaWYgKGluZGV4IDwgc3RhdGljX2Nhc3Q8RmxvYXQ2NEFycmF5Kj4odGhpc09iamVjdC0+aW1w
bCgpKS0+bGVuZ3RoKCkpIHsKLSAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCB0aGlz
T2JqZWN0LT5nZXRCeUluZGV4KGV4ZWMsIGluZGV4KSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLSAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2Jq
ZWN0LCBleGVjLCBpbmRleCwgc2xvdCk7Ci19Ci0KLUpTVmFsdWUganNGbG9hdDY0QXJyYXlDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkK
LXsKLSAgICBKU0Zsb2F0NjRBcnJheSogZG9tT2JqZWN0ID0ganNDYXN0PEpTRmxvYXQ2NEFycmF5
Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKLSAgICByZXR1cm4gSlNGbG9hdDY0QXJyYXk6OmdldENv
bnN0cnVjdG9yKGV4ZWMsIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpOwotfQotCi12b2lkIEpT
RmxvYXQ2NEFycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
LXsKLSAgICBKU0Zsb2F0NjRBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Zsb2F0NjRBcnJh
eSo+KGNlbGwpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5m
bygpKTsKLSAgICBpZiAoc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4
KHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAgdGhpc09iamVjdC0+aW5kZXhTZXR0ZXIoZXhlYywg
aW5kZXgudmFsdWUoKSwgdmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIEJhc2U6
OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKLX0KLQot
dm9pZCBKU0Zsb2F0NjRBcnJheTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCi17
Ci0gICAgSlNGbG9hdDY0QXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGbG9hdDY0QXJyYXkq
PihjZWxsKTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7Ci0gICAgaWYgKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRFWCkgewotICAgICAgICBVTlVTRURf
UEFSQU0oc2hvdWxkVGhyb3cpOwotICAgICAgICB0aGlzT2JqZWN0LT5pbmRleFNldHRlcihleGVj
LCBpbmRleCwgdmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIEJhc2U6OnB1dEJ5
SW5kZXgoY2VsbCwgZXhlYywgaW5kZXgsIHZhbHVlLCBzaG91bGRUaHJvdyk7Ci19Ci0KLXZvaWQg
SlNGbG9hdDY0QXJyYXk6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlIG1vZGUpCi17Ci0gICAgSlNGbG9hdDY0QXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNGbG9hdDY0QXJyYXkqPihvYmplY3QpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RhdGlj
X2Nhc3Q8RmxvYXQ2NEFycmF5Kj4odGhpc09iamVjdC0+aW1wbCgpKS0+bGVuZ3RoKCk7ICsraSkK
LSAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7Ci0g
ICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBtb2RlKTsKLX0KLQotSlNWYWx1ZSBKU0Zsb2F0NjRBcnJheTo6Z2V0Q29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yPihleGVjLCBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKLX0KLQotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0Zsb2F0NjRBcnJheVByb3RvdHlwZUZ1bmN0aW9uRm9vKEV4
ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwotICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKEpTRmxvYXQ2NEFycmF5OjppbmZvKCkp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBKU0Zsb2F0NjRB
cnJheSogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU0Zsb2F0NjRBcnJheSo+KGFzT2JqZWN0KHRoaXNW
YWx1ZSkpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNGbG9h
dDY0QXJyYXk6OmluZm8oKSk7Ci0gICAgRmxvYXQ2NEFycmF5KiBpbXBsID0gc3RhdGljX2Nhc3Q8
RmxvYXQ2NEFycmF5Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgRmxvYXQzMkFycmF5KiBhcnJheSh0
b0Zsb2F0MzJBcnJheShleGVjLT5hcmd1bWVudCgwKSkpOwotICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LQotICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLT5mb28oYXJyYXkpKSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzRmxvYXQ2NEFycmF5UHJvdG90eXBlRnVuY3Rpb25TZXQoRXhlY1N0YXRlKiBleGVjKQotewot
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7Ci0gICAgaWYgKCF0aGlz
VmFsdWUuaW5oZXJpdHMoSlNGbG9hdDY0QXJyYXk6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotICAgIEpTRmxvYXQ2NEFycmF5KiBjYXN0ZWRUaGlzID0g
anNDYXN0PEpTRmxvYXQ2NEFycmF5Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Ci0gICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU0Zsb2F0NjRBcnJheTo6aW5mbygpKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNldFdlYkdMQXJyYXlIZWxwZXI8RmxvYXQ2NEFy
cmF5LCBkb3VibGU+KGV4ZWMsIGNhc3RlZFRoaXMtPmltcGwoKSkpOwotfQotCi0KLUpTVmFsdWUg
SlNGbG9hdDY0QXJyYXk6OmdldEJ5SW5kZXgoRXhlY1N0YXRlKiwgdW5zaWduZWQgaW5kZXgpCi17
Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzLCBpbmZvKCkpOwotICAgIGRvdWJs
ZSByZXN1bHQgPSBzdGF0aWNfY2FzdDxGbG9hdDY0QXJyYXkqPihpbXBsKCkpLT5pdGVtKGluZGV4
KTsKLSAgICBpZiAoc3RkOjppc25hbihyZXN1bHQpKQotICAgICAgICByZXR1cm4ganNOYU4oKTsK
LSAgICByZXR1cm4gSlNWYWx1ZShyZXN1bHQpOwotfQotCi1GbG9hdDY0QXJyYXkqIHRvRmxvYXQ2
NEFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gdmFsdWUuaW5oZXJpdHMo
SlNGbG9hdDY0QXJyYXk6OmluZm8oKSkgPyBqc0Nhc3Q8SlNGbG9hdDY0QXJyYXkqPihhc09iamVj
dCh2YWx1ZSkpLT5pbXBsKCkgOiAwOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2NWNiYTBlOWJiZGI3ZjJmYTNlYTMzY2U3MTRhMmU5NjRjMjUz
ZGFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMTM2ICswLDAgQEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBn
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lm
bmRlZiBKU0Zsb2F0NjRBcnJheV9oCi0jZGVmaW5lIEpTRmxvYXQ2NEFycmF5X2gKLQotI2luY2x1
ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5j
bHVkZSA8cnVudGltZS9GbG9hdDY0QXJyYXkuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSlNGbG9hdDY0QXJyYXkgOiBwdWJs
aWMgSlNBcnJheUJ1ZmZlclZpZXcgewotcHVibGljOgotICAgIHR5cGVkZWYgSlNBcnJheUJ1ZmZl
clZpZXcgQmFzZTsKLSAgICBzdGF0aWMgSlNGbG9hdDY0QXJyYXkqIGNyZWF0ZShKU0M6OlN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVm
UHRyPEZsb2F0NjRBcnJheT4gaW1wbCkKLSAgICB7Ci0gICAgICAgIEpTRmxvYXQ2NEFycmF5KiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRmxvYXQ2NEFycmF5PihnbG9i
YWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTRmxvYXQ2NEFycmF5KHN0cnVjdHVyZSwgZ2xvYmFsT2Jq
ZWN0LCBpbXBsKTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZt
KCkpOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQotICAgIHN0YXRpYyBKU0M6OkpTT2Jq
ZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7Ci0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwot
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0
b3ImKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTQzo6SlNP
YmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBwdXQoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHV0UHJvcGVydHlT
bG90Jik7Ci0gICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0M6OkpTQ2VsbCosIEpTQzo6RXhl
Y1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpOwotICAgIERFQ0xBUkVfSU5GTzsKLQotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gSlND
OjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlw
ZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1v
ZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTsKLSAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdl
dENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAg
IEZsb2F0NjRBcnJheSogaW1wbCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RmxvYXQ2NEFycmF5Kj4oQmFzZTo6aW1wbCgpKTsKLSAgICB9Ci0gICAgc3RhdGljIGNv
bnN0IEpTQzo6VHlwZWRBcnJheVR5cGUgVHlwZWRBcnJheVN0b3JhZ2VUeXBlID0gSlNDOjpUeXBl
ZEFycmF5RmxvYXQ2NDsKLSAgICBpbnRwdHJfdCBtX3N0b3JhZ2VMZW5ndGg7Ci0gICAgdm9pZCog
bV9zdG9yYWdlOwotcHJvdGVjdGVkOgotICAgIEpTRmxvYXQ2NEFycmF5KEpTQzo6U3RydWN0dXJl
KiwgSlNET01HbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4pOwotICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTQzo6T3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlT
bG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7
Ci0gICAgSlNDOjpKU1ZhbHVlIGdldEJ5SW5kZXgoSlNDOjpFeGVjU3RhdGUqLCB1bnNpZ25lZCBp
bmRleCk7Ci0gICAgdm9pZCBpbmRleFNldHRlcihKU0M6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIGlu
ZGV4LCBKU0M6OkpTVmFsdWUpOwotfTsKLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIEZsb2F0NjRBcnJheSopOwotRmxvYXQ2NEFycmF5KiB0
b0Zsb2F0NjRBcnJheShKU0M6OkpTVmFsdWUpOwotCi1jbGFzcyBKU0Zsb2F0NjRBcnJheVByb3Rv
dHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewotcHVibGljOgotICAgIHR5cGVk
ZWYgSlNDOjpKU05vbkZpbmFsT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IHNlbGYoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGlj
IEpTRmxvYXQ2NEFycmF5UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7
Ci0gICAgICAgIEpTRmxvYXQ2NEFycmF5UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTRmxvYXQ2NEFycmF5UHJvdG90eXBlPih2bS5oZWFwKSkgSlNGbG9h
dDY0QXJyYXlQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKLSAgICAgICAg
cHRyLT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0g
ICAgREVDTEFSRV9JTkZPOwotICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6
OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlND
OjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJv
cGVydHlEZXNjcmlwdG9yJik7Ci0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6
Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgSlNGbG9hdDY0QXJyYXlQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEpTQzo6SlNOb25GaW5hbE9iamVj
dCh2bSwgc3RydWN0dXJlKSB7IH0KLXByb3RlY3RlZDoKLSAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJh
c2U6OlN0cnVjdHVyZUZsYWdzOwotfTsKLQotY2xhc3MgSlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3Rv
ciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7Ci1wcml2YXRlOgotICAgIEpTRmxvYXQ2
NEFycmF5Q29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwot
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCopOwotCi1wdWJsaWM6Ci0gICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOwot
ICAgIHN0YXRpYyBKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCi0gICAgewotICAgICAgICBKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTRmxvYXQ2NEFycmF5Q29uc3Ry
dWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yKHN0cnVjdHVy
ZSwgZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9i
YWxPYmplY3QpOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQotICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7Ci0gICAgREVDTEFSRV9J
TkZPOwotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci0gICAgfQotcHJvdGVjdGVkOgotICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgSlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBET01Db25zdHJ1Y3Rvck9iamVj
dDo6U3RydWN0dXJlRmxhZ3M7Ci0gICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RKU0Zsb2F0NjRBcnJheShKU0M6OkV4ZWNTdGF0ZSopOwotICAgIHN0
YXRpYyBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpT
Qzo6Q29uc3RydWN0RGF0YSYpOwotfTsKLQotLy8gRnVuY3Rpb25zCi0KLUpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0Zsb2F0NjRBcnJheVByb3RvdHlwZUZ1bmN0aW9uRm9vKEpT
Qzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNGbG9h
dDY0QXJyYXlQcm90b3R5cGVGdW5jdGlvblNldChKU0M6OkV4ZWNTdGF0ZSopOwotLy8gQXR0cmli
dXRlcwotCi1KU0M6OkpTVmFsdWUganNGbG9hdDY0QXJyYXlDb25zdHJ1Y3RvcihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDJkNDZk
OWI0ZDViOTZmZjhmY2ZjY2JjYjliMWEyYTFmNzk5ZTYwYjcuLjcyOWQ1ODhiNDk0ZWI5ZTY3NTRl
MDUzNGNkOTU4NGFhOGFlZjNmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTUz
Nyw3ICs1MzcsNyBAQCBib29sIFNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZQogICAgIGlmIChjb250YWluaW5n
U2hhZG93Um9vdCgpKQogICAgICAgICByZXR1cm4gTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihl
dmVudFR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTsKIAotICAgIC8vIEV2ZW50VGFyZ2V0OjpyZW1v
dmVFdmVudExpc3RlbmVyIGNyZWF0ZXMgYSBQYXNzUmVmUHRyIGFyb3VuZCB0aGUgZ2l2ZW4gRXZl
bnRMaXN0ZW5lcgorICAgIC8vIEV2ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyIGNyZWF0
ZXMgYSBSZWYgYXJvdW5kIHRoZSBnaXZlbiBFdmVudExpc3RlbmVyCiAgICAgLy8gb2JqZWN0IHdo
ZW4gY3JlYXRpbmcgYSB0ZW1wb3JhcnkgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIgb2JqZWN0IHVz
ZWQgdG8gbG9vayB1cCB0aGUKICAgICAvLyBldmVudCBsaXN0ZW5lciBpbiBhIGNhY2hlLiBJZiB3
ZSB3YW50IHRvIGJlIGFibGUgdG8gY2FsbCByZW1vdmVFdmVudExpc3RlbmVyKCkgbXVsdGlwbGUK
ICAgICAvLyB0aW1lcyBvbiBkaWZmZXJlbnQgbm9kZXMsIHdlIGhhdmUgdG8gZGVsYXkgaXRzIGlt
bWVkaWF0ZSBkZXN0cnVjdGlvbiwgd2hpY2ggd291bGQgaGFwcGVuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKaW5kZXggMzdmNDczN2Q3NjVhNmNlYTcyZTA4ZGE1YmRjN2FmM2IzZTFk
NzE5My4uOGNiNGYwNTRkMzMxNzg2YzBhZGJjYjcwYTcxZjc2YjdkMGU3ZDBiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODExLDcgKzgxMSw3IEBAIGJvb2wgSW50ZXJu
YWxzOjpoYXNQYXVzZWRJbWFnZUFuaW1hdGlvbnMoRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1
cm4gZWxlbWVudC5yZW5kZXJlcigpICYmIGVsZW1lbnQucmVuZGVyZXIoKS0+aGFzUGF1c2VkSW1h
Z2VBbmltYXRpb25zKCk7CiB9CiAKLVJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+
IEludGVybmFsczo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKEVsZW1lbnQmIGVs
ZW1lbnQpIGNvbnN0CitSZWY8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBJbnRlcm5hbHM6
OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhFbGVtZW50JiBlbGVtZW50KSBjb25z
dAogewogICAgIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUgPSB0cnVlOwogICAgIHJldHVybiBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShlbGVtZW50LCBhbGxvd1Zpc2l0ZWRTdHls
ZSk7CkBAIC0xNDMzLDcgKzE0MzMsNyBAQCBTdHJpbmcgSW50ZXJuYWxzOjpyYW5nZUFzVGV4dChj
b25zdCBSYW5nZSYgcmFuZ2UpCiAgICAgcmV0dXJuIHJhbmdlLnRleHQoKTsKIH0KIAotUmVmUHRy
PFJhbmdlPiBJbnRlcm5hbHM6OnN1YnJhbmdlKFJhbmdlJiByYW5nZSwgaW50IHJhbmdlTG9jYXRp
b24sIGludCByYW5nZUxlbmd0aCkKK1JlZjxSYW5nZT4gSW50ZXJuYWxzOjpzdWJyYW5nZShSYW5n
ZSYgcmFuZ2UsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgpCiB7CiAgICAgcmV0
dXJuIFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoJnJhbmdlLCByYW5nZUxvY2F0aW9uLCByYW5nZUxl
bmd0aCk7CiB9CkBAIC0xNDQxLDcgKzE0NDEsNyBAQCBSZWZQdHI8UmFuZ2U+IEludGVybmFsczo6
c3VicmFuZ2UoUmFuZ2UmIHJhbmdlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZwog
RXhjZXB0aW9uT3I8UmVmUHRyPFJhbmdlPj4gSW50ZXJuYWxzOjpyYW5nZUZvckRpY3Rpb25hcnlM
b29rdXBBdExvY2F0aW9uKGludCB4LCBpbnQgeSkKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CisgICAgYXV0byogZG9jdW1l
bnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+
ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfQUNDRVNTX0VSUiB9
OwogCkBAIC0xODU2LDExICsxODU2LDEwIEBAIHVuc2lnbmVkIEludGVybmFsczo6bnVtYmVyT2ZM
aXZlRG9jdW1lbnRzKCkgY29uc3QKIAogUmVmUHRyPERPTVdpbmRvdz4gSW50ZXJuYWxzOjpvcGVu
RHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBQYWdlKiBp
bnNwZWN0ZWRQYWdlID0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPnBhZ2UoKTsKLSAgICBS
ZWZQdHI8RE9NV2luZG93PiB3aW5kb3cgPSBpbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKS5kb2N1
bWVudCgpLT5kb21XaW5kb3coKTsKLSAgICBSZWZQdHI8RE9NV2luZG93PiBmcm9udGVuZFdpbmRv
dyA9IHdpbmRvdy0+b3Blbih1cmwsICIiLCAiIiwgKndpbmRvdywgKndpbmRvdyk7CisgICAgYXV0
byogaW5zcGVjdGVkUGFnZSA9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCk7Cisg
ICAgYXV0byogd2luZG93ID0gaW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+
ZG9tV2luZG93KCk7CisgICAgYXV0byBmcm9udGVuZFdpbmRvdyA9IHdpbmRvdy0+b3Blbih1cmws
ICIiLCAiIiwgKndpbmRvdywgKndpbmRvdyk7CiAgICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yU3R1YkZyb250ZW5kPigqaW5zcGVjdGVkUGFnZSwgZnJv
bnRlbmRXaW5kb3cuY29weVJlZigpKTsKLQogICAgIHJldHVybiBmcm9udGVuZFdpbmRvdzsKIH0K
IApAQCAtMjU2MywxMyArMjU2MiwxMyBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6
Z2V0Q3VycmVudEN1cnNvckluZm8oKQogI2VuZGlmCiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4g
SW50ZXJuYWxzOjpzZXJpYWxpemVPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHZhbHVlKSBjb25zdAorUmVmPEFycmF5QnVmZmVyPiBJbnRlcm5hbHM6OnNlcmlhbGl6ZU9i
amVjdChjb25zdCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYgdmFsdWUpIGNvbnN0CiB7
CiAgICAgYXV0byYgYnl0ZXMgPSB2YWx1ZS0+ZGF0YSgpOwogICAgIHJldHVybiBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgpKTsKIH0KIAotUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gSW50ZXJuYWxzOjpkZXNlcmlhbGl6ZUJ1ZmZlcihBcnJheUJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSW50ZXJuYWxzOjpk
ZXNlcmlhbGl6ZUJ1ZmZlcihBcnJheUJ1ZmZlciYgYnVmZmVyKSBjb25zdAogewogICAgIFZlY3Rv
cjx1aW50OF90PiBieXRlczsKICAgICBieXRlcy5hcHBlbmQoc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIuYnl0ZUxlbmd0aCgpKTsKQEAgLTI1NzgsOCAr
MjU3Nyw3IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IEludGVybmFsczo6ZGVzZXJp
YWxpemVCdWZmZXIoQXJyYXlCdWZmZXImIGJ1ZmZlcikKIAogYm9vbCBJbnRlcm5hbHM6OmlzRnJv
bUN1cnJlbnRXb3JsZChKU0M6OkpTVmFsdWUgdmFsdWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHZh
bHVlKTsKLSAgICBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUgPSAqY29udGV4dERvY3VtZW50KCktPnZt
KCkudG9wQ2FsbEZyYW1lOworICAgIGF1dG8mIHN0YXRlID0gKmNvbnRleHREb2N1bWVudCgpLT52
bSgpLnRvcENhbGxGcmFtZTsKICAgICByZXR1cm4gIXZhbHVlLmlzT2JqZWN0KCkgfHwgJndvcmxk
Rm9yRE9NT2JqZWN0KGFzT2JqZWN0KHZhbHVlKSkgPT0gJmN1cnJlbnRXb3JsZCgmc3RhdGUpOwog
fQogCkBAIC0yNjAwLDI3ICsyNTk4LDMwIEBAIHZvaWQgSW50ZXJuYWxzOjpmb3JjZVJlbG9hZChi
b29sIGVuZFRvRW5kKQogCiB2b2lkIEludGVybmFsczo6ZW5hYmxlQXV0b1NpemVNb2RlKGJvb2wg
ZW5hYmxlZCwgaW50IG1pbmltdW1XaWR0aCwgaW50IG1pbmltdW1IZWlnaHQsIGludCBtYXhpbXVt
V2lkdGgsIGludCBtYXhpbXVtSGVpZ2h0KQogewotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNv
bnRleHREb2N1bWVudCgpOworICAgIGF1dG8qIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7
CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnZpZXcoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIGRvY3VtZW50LT52aWV3KCktPmVuYWJsZUF1dG9TaXplTW9kZShlbmFibGVkLCBJbnRT
aXplKG1pbmltdW1XaWR0aCwgbWluaW11bUhlaWdodCksIEludFNpemUobWF4aW11bVdpZHRoLCBt
YXhpbXVtSGVpZ2h0KSk7CiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkK
Kwogdm9pZCBJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RNKCkKIHsKLSAgICBDRE06OnJlZ2lz
dGVyQ0RNRmFjdG9yeShbXShDRE0qIGNkbSkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb2Nr
Q0RNPihjZG0pOyB9LAorICAgIENETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KFtdIChDRE0qIGNkbSkg
eyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb2NrQ0RNPihjZG0pOyB9LAogICAgICAgICBNb2Nr
Q0RNOjpzdXBwb3J0c0tleVN5c3RlbSwgTW9ja0NETTo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1l
VHlwZSk7CiB9CisKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKwogUmVm
PE1vY2tDRE1GYWN0b3J5PiBJbnRlcm5hbHM6OnJlZ2lzdGVyTW9ja0NETSgpCiB7CiAgICAgcmV0
dXJuIE1vY2tDRE1GYWN0b3J5OjpjcmVhdGUoKTsKIH0KLSNlbmRpZgogCisjZW5kaWYKIAogU3Ry
aW5nIEludGVybmFsczo6bWFya2VyVGV4dEZvckxpc3RJdGVtKEVsZW1lbnQmIGVsZW1lbnQpCiB7
CkBAIC0zNDg3LDEwICszNDg4LDkgQEAgYm9vbCBJbnRlcm5hbHM6OmlzUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKCkKIAogUmVmUHRyPEdDT2JzZXJ2YXRpb24+IEludGVybmFsczo6b2JzZXJ2ZUdDKEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLmlzTnVsbCgpIHx8
IHZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgIXZhbHVlLmdldE9iamVjdCgpKQorICAgIGlmICghdmFs
dWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gR0NP
YnNlcnZhdGlvbjo6Y3JlYXRlKHZhbHVlLmdldE9iamVjdCgpKTsKKyAgICByZXR1cm4gR0NPYnNl
cnZhdGlvbjo6Y3JlYXRlKGFzT2JqZWN0KHZhbHVlKSk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpz
ZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24gdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCmluZGV4IDhiOTY1MGExNjhiYzBhMzNhOTRkYWMzMWRhZTFiNmVlMDQ2MmMyZjEuLjc0M2E3
N2YxOTZhZDkzOGRmZjdjZGU0NTYxNzEyNTllYmIzZWEwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUGFn
ZUNhY2hlKCk7CiAgICAgdW5zaWduZWQgcGFnZUNhY2hlU2l6ZSgpIGNvbnN0OwogCi0gICAgUmVm
UHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zp
c2l0ZWRJbmZvKEVsZW1lbnQmKSBjb25zdDsKKyAgICBSZWY8Q1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uPiBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oRWxlbWVudCYpIGNvbnN0
OwogCiAgICAgTm9kZSogZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdChFbGVtZW50JiBob3N0KTsK
ICAgICBOb2RlKiBzaGFkb3dSb290KEVsZW1lbnQmIGhvc3QpOwpAQCAtMTk5LDcgKzE5OSw3IEBA
IHB1YmxpYzoKICAgICB1bnNpZ25lZCBsb2NhdGlvbkZyb21SYW5nZShFbGVtZW50JiBzY29wZSwg
Y29uc3QgUmFuZ2UmKTsKICAgICB1bnNpZ25lZCBsZW5ndGhGcm9tUmFuZ2UoRWxlbWVudCYgc2Nv
cGUsIGNvbnN0IFJhbmdlJik7CiAgICAgU3RyaW5nIHJhbmdlQXNUZXh0KGNvbnN0IFJhbmdlJik7
Ci0gICAgUmVmUHRyPFJhbmdlPiBzdWJyYW5nZShSYW5nZSYsIGludCByYW5nZUxvY2F0aW9uLCBp
bnQgcmFuZ2VMZW5ndGgpOworICAgIFJlZjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2UmLCBpbnQgcmFu
Z2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3RoKTsKICAgICBFeGNlcHRpb25PcjxSZWZQdHI8UmFu
Z2U+PiByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGludCB4LCBpbnQgeSk7CiAK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXREZWxlZ2F0ZXNTY3JvbGxpbmcoYm9vbCBlbmFibGVk
KTsKQEAgLTM1MSw4ICszNTEsOCBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gdXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzQW5kUnVuUG9zdExheW91dFRhc2tzKE5v
ZGUqKTsKICAgICB1bnNpZ25lZCBsYXlvdXRDb3VudCgpIGNvbnN0OwogCi0gICAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBzZXJpYWxpemVPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+KSBjb25zdDsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkZXNlcmlhbGl6
ZUJ1ZmZlcihBcnJheUJ1ZmZlciYpIGNvbnN0OworICAgIFJlZjxBcnJheUJ1ZmZlcj4gc2VyaWFs
aXplT2JqZWN0KGNvbnN0IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JikgY29uc3Q7Cisg
ICAgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGVzZXJpYWxpemVCdWZmZXIoQXJyYXlCdWZm
ZXImKSBjb25zdDsKIAogICAgIGJvb2wgaXNGcm9tQ3VycmVudFdvcmxkKEpTQzo6SlNWYWx1ZSkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBjMGU1ZmJiMTIx
OTNiNmE0NDRlYWJjODlkZWUyMDEzNDFhNWQzNWZlLi44NzJmOWI0Zjk0NmNjMjdlNGY4YTMyZmFj
NWM1MjczNjZlYjdjMzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0x
NTMsNyArMTUzLDcgQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAgICAgW01heVRo
cm93RXhjZXB0aW9uXSBET01TdHJpbmcgaW5zcGVjdG9ySGlnaGxpZ2h0T2JqZWN0KCk7CiAKICAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgbWFya2VyQ291bnRGb3JOb2RlKE5v
ZGUgbm9kZSwgRE9NU3RyaW5nIG1hcmtlclR5cGUpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
UmFuZ2UgbWFya2VyUmFuZ2VGb3JOb2RlKE5vZGUgbm9kZSwgRE9NU3RyaW5nIG1hcmtlclR5cGUs
IHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUmFuZ2U/IG1h
cmtlclJhbmdlRm9yTm9kZShOb2RlIG5vZGUsIERPTVN0cmluZyBtYXJrZXJUeXBlLCB1bnNpZ25l
ZCBsb25nIGluZGV4KTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBtYXJrZXJE
ZXNjcmlwdGlvbkZvck5vZGUoTm9kZSBub2RlLCBET01TdHJpbmcgbWFya2VyVHlwZSwgdW5zaWdu
ZWQgbG9uZyBpbmRleCk7CiAgICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgZHVtcE1h
cmtlclJlY3RzKERPTVN0cmluZyBtYXJrZXJUeXBlKTsKICAgICB2b2lkIGFkZFRleHRNYXRjaE1h
cmtlcihSYW5nZSByYW5nZSwgYm9vbGVhbiBpc0FjdGl2ZSk7CkBAIC0xODcsMTIgKzE4NywxMiBA
QCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKIAogICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBzY3JvbGxFbGVtZW50VG9SZWN0KEVsZW1lbnQgZWxlbWVudCwgbG9uZyB4LCBsb25n
IHksIGxvbmcgdywgbG9uZyBoKTsKIAotICAgIFJhbmdlIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVu
Z3RoKEVsZW1lbnQgc2NvcGUsIGxvbmcgcmFuZ2VMb2NhdGlvbiwgbG9uZyByYW5nZUxlbmd0aCk7
CisgICAgUmFuZ2U/IHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQgc2NvcGUsIGxv
bmcgcmFuZ2VMb2NhdGlvbiwgbG9uZyByYW5nZUxlbmd0aCk7CiAgICAgdW5zaWduZWQgbG9uZyBs
b2NhdGlvbkZyb21SYW5nZShFbGVtZW50IHNjb3BlLCBSYW5nZSByYW5nZSk7CiAgICAgdW5zaWdu
ZWQgbG9uZyBsZW5ndGhGcm9tUmFuZ2UoRWxlbWVudCBzY29wZSwgUmFuZ2UgcmFuZ2UpOwogICAg
IERPTVN0cmluZyByYW5nZUFzVGV4dChSYW5nZSByYW5nZSk7CiAgICAgUmFuZ2Ugc3VicmFuZ2Uo
UmFuZ2UgcmFuZ2UsIGxvbmcgcmFuZ2VMb2NhdGlvbiwgbG9uZyByYW5nZUxlbmd0aCk7Ci0gICAg
W01heVRocm93RXhjZXB0aW9uXSBSYW5nZSByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdExvY2F0
aW9uKGxvbmcgeCwgbG9uZyB5KTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJhbmdlPyByYW5n
ZUZvckRpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGxvbmcgeCwgbG9uZyB5KTsKIAogICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXREZWxlZ2F0ZXNTY3JvbGxpbmcoYm9vbGVhbiBlbmFi
bGVkKTsKIApAQCAtMjA4LDcgKzIwOCw3IEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3Ig
ewogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyB3aGVlbEV2ZW50SGFuZGxl
ckNvdW50KCk7CiAgICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIHRvdWNoRXZl
bnRIYW5kbGVyQ291bnQoKTsKIAotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gTm9kZUxpc3Qgbm9k
ZXNGcm9tUmVjdChEb2N1bWVudCBkb2N1bWVudCwgbG9uZyB4LCBsb25nIHksCisgICAgW01heVRo
cm93RXhjZXB0aW9uXSBOb2RlTGlzdD8gbm9kZXNGcm9tUmVjdChEb2N1bWVudCBkb2N1bWVudCwg
bG9uZyB4LCBsb25nIHksCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgdG9wUGFkZGluZywgdW5zaWdu
ZWQgbG9uZyByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGxvbmcgYm90dG9tUGFkZGluZywgdW5zaWdu
ZWQgbG9uZyBsZWZ0UGFkZGluZywKICAgICAgICAgYm9vbGVhbiBpZ25vcmVDbGlwcGluZywgYm9v
bGVhbiBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2xlYW4gYWxsb3dDaGlsZEZyYW1lQ29udGVudCk7
CiAKQEAgLTI1Myw3ICsyNTMsNyBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKIAog
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4
dCgpOwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIG1haW5UaHJlYWRTY3JvbGxp
bmdSZWFzb25zKCk7IC8vIEZJWE1FOiByZW5hbWUgdG8gc3luY2hyb25vdXNTY3JvbGxpbmdSZWFz
b25zKCkuCi0gICAgW01heVRocm93RXhjZXB0aW9uXSBDbGllbnRSZWN0TGlzdCBub25GYXN0U2Ny
b2xsYWJsZVJlY3RzKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBDbGllbnRSZWN0TGlzdD8g
bm9uRmFzdFNjcm9sbGFibGVSZWN0cygpOwogCiAgICAgW01heVRocm93RXhjZXB0aW9uXSBET01T
dHJpbmcgcmVwYWludFJlY3RzQXNUZXh0KCk7CiAKQEAgLTI4Myw3ICsyODMsNyBAQCBlbnVtIEV2
ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKIAogICAgIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZMaXZl
Tm9kZXMoKTsKICAgICB1bnNpZ25lZCBsb25nIG51bWJlck9mTGl2ZURvY3VtZW50cygpOwotICAg
IERPTVdpbmRvdyBvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChET01TdHJpbmcgdXJsKTsKKyAg
ICBET01XaW5kb3c/IG9wZW5EdW1teUluc3BlY3RvckZyb250ZW5kKERPTVN0cmluZyB1cmwpOwog
ICAgIHZvaWQgY2xvc2VEdW1teUluc3BlY3RvckZyb250ZW5kKCk7CiAgICAgW01heVRocm93RXhj
ZXB0aW9uXSB2b2lkIHNldEluc3BlY3RvcklzVW5kZXJUZXN0KGJvb2xlYW4gaXNVbmRlclRlc3Qp
OwogCkBAIC0zNjksNyArMzY5LDcgQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAg
ICAgRE9NU3RyaW5nIHRvb2xUaXBGcm9tRWxlbWVudChFbGVtZW50IGVsZW1lbnQpOwogCiAgICAg
U2VyaWFsaXplZFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplQnVmZmVyKEFycmF5QnVmZmVyIGJ1ZmZl
cik7Ci0gICAgQXJyYXlCdWZmZXIgc2VyaWFsaXplT2JqZWN0KFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSBvYmopOworICAgIEFycmF5QnVmZmVyIHNlcmlhbGl6ZU9iamVjdChTZXJpYWxpemVkU2NyaXB0
VmFsdWUgb2JqZWN0KTsKIAogICAgIGJvb2xlYW4gaXNGcm9tQ3VycmVudFdvcmxkKGFueSBvYmop
OwogCkBAIC00NDYsNyArNDQ2LDcgQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAK
ICAgICB2b2lkIHNldFBhZ2VEZWZlcnNMb2FkaW5nKGJvb2xlYW4gZGVmZXJzTG9hZGluZyk7CiAK
LSAgICBGaWxlIGNyZWF0ZUZpbGUoRE9NU3RyaW5nIHVybCk7CisgICAgRmlsZT8gY3JlYXRlRmls
ZShET01TdHJpbmcgdXJsKTsKICAgICB2b2lkIHF1ZXVlTWljcm9UYXNrKGxvbmcgdGVzdE51bWJl
cik7CiAgICAgYm9vbGVhbiB0ZXN0UHJlbG9hZGVyU2V0dGluZ1ZpZXdwb3J0KCk7CiAKQEAgLTQ4
OCw3ICs0ODgsNyBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yIHsKICAgICAKICAgICBi
b29sZWFuIGlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CiAKLSAgICBHQ09ic2VydmF0aW9uIG9i
c2VydmVHQyhhbnkgb2JzZXJ2ZWQpOworICAgIEdDT2JzZXJ2YXRpb24/IG9ic2VydmVHQyhhbnkg
b2JzZXJ2ZWQpOwogCiAgICAgdm9pZCBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbik7
CiAgICAgdm9pZCBzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihCYXNlV3JpdGluZ0RpcmVjdGlvbiBk
aXJlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJU
aHJlYWQuY3BwCmluZGV4IGQ3YWJhM2NlNzc0YzcwYjM2ZDJiNTM2MmE3NzJmMDZhZTk5MzVkNzYu
LmUxMmI1ZGI2NDUwZDdjYjQ1MDExMjBkNzBkNjdkZTY5MTgyNjNmYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAKQEAgLTQ4LDkgKzQ4
LDkgQEAgRGVkaWNhdGVkV29ya2VyVGhyZWFkOjp+RGVkaWNhdGVkV29ya2VyVGhyZWFkKCkKIHsK
IH0KIAotUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0
ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgYm9v
bCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikKK1JlZjxXb3JrZXJHbG9iYWxTY29wZT4gRGVkaWNh
dGVkV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3Vy
aXR5UG9saWN5LCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luKQogewotICAgIHJl
dHVybiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKHVybCwgaWRlbnRpZmllciwg
dXNlckFnZW50LCAqdGhpcywgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBz
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIHRvcE9yaWdpbiwgaWRi
Q29ubmVjdGlvblByb3h5KCksIHNvY2tldFByb3ZpZGVyKCkpOworICAgIHJldHVybiBEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKHVybCwgaWRlbnRpZmllciwgdXNlckFnZW50LCAq
dGhpcywgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBzaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFdURk1vdmUodG9wT3JpZ2luKSwgaWRiQ29u
bmVjdGlvblByb3h5KCksIHNvY2tldFByb3ZpZGVyKCkpOwogfQogCiB2b2lkIERlZGljYXRlZFdv
cmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlclRocmVhZC5oCmluZGV4IGQwMjYxYjYwZGJkZGU5NWRjNDQxODVjNjJjMDRj
OWJjNTJlYjFkOWMuLjNlMDcyZTEzOTJjYWMyOTNlMWNjYmI1OGIyMWVkNzNlNjM1NmIwYzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaApAQCAt
NDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVj
dFByb3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJPYmplY3RQcm94eTsgfQogCiBwcm90ZWN0
ZWQ6Ci0gICAgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNo
b3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gdG9wT3JpZ2luKSBvdmVycmlkZTsKKyAgICBSZWY8V29ya2VyR2xvYmFsU2Nv
cGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNl
Y3VyaXR5UG9saWN5LCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luKSBvdmVycmlk
ZTsKICAgICB2b2lkIHJ1bkV2ZW50TG9vcCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXIuY3BwCmluZGV4IDUxNGVjNGQ1MzdiZDVkMzJiMjlmNDg3NTYzZTA1YWRh
NzAyYjk2ZTEuLjdjZWM4NzI0OWIxYjVjMzJiZmMzNTcwOTk4ODhhYTcwMTcyNjg3YzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA4LCAyMDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dApAQCAtNTQsNyArNTQsNyBAQCB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9v
bCBpc09uTGluZSkKIGlubGluZSBXb3JrZXI6OldvcmtlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCiAgICAgOiBBY3RpdmVE
T01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX2lkZW50aWZpZXIoIndvcmtlcjoiICsgSW5zcGVj
dG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSkKLSAgICAsIG1fY29u
dGV4dFByb3h5KFdvcmtlckdsb2JhbFNjb3BlUHJveHk6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1f
Y29udGV4dFByb3h5KFdvcmtlckdsb2JhbFNjb3BlUHJveHk6OmNyZWF0ZSgqdGhpcykpCiAgICAg
LCBtX3J1bnRpbWVGbGFncyhydW50aW1lRmxhZ3MpCiB7CiAgICAgaWYgKCFhbGxXb3JrZXJzKSB7
CkBAIC02Miw3ICs2Miw3IEBAIGlubGluZSBXb3JrZXI6OldvcmtlcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lCiAgICAgICAgIG5ldHdv
cmtTdGF0ZU5vdGlmaWVyKCkuYWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIobmV0d29ya1N0
YXRlQ2hhbmdlZCk7CiAgICAgfQogCi0gICAgSGFzaFNldDxXb3JrZXIqPjo6QWRkUmVzdWx0IGFk
ZFJlc3VsdCA9IGFsbFdvcmtlcnMtPmFkZCh0aGlzKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IGFs
bFdvcmtlcnMtPmFkZCh0aGlzKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogfQogCkBAIC05OCw3ICs5OCw3IEBAIFdvcmtlcjo6fldvcmtlcigp
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsgLy8gVGhlIGNvbnRleHQgaXMgcHJvdGVjdGVkIGJ5IHdvcmtlciBjb250ZXh0
IHByb3h5LCBzbyBpdCBjYW5ub3QgYmUgZGVzdHJveWVkIHdoaWxlIGEgV29ya2VyIGV4aXN0cy4K
ICAgICBhbGxXb3JrZXJzLT5yZW1vdmUodGhpcyk7Ci0gICAgbV9jb250ZXh0UHJveHktPndvcmtl
ck9iamVjdERlc3Ryb3llZCgpOworICAgIG1fY29udGV4dFByb3h5Lndvcmtlck9iamVjdERlc3Ry
b3llZCgpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBXb3JrZXI6OnBvc3RNZXNzYWdlKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2VWYWx1ZSwgVmVjdG9yPEpTQzo6
U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKQpAQCAtMTEyLDEzICsxMTIsMTMgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gV29ya2VyOjpwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTQzo6SlNWYWx1ZSBtZXNzYWcKICAgICBhdXRvIGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6
OmRpc2VudGFuZ2xlUG9ydHMoV1RGTW92ZShwb3J0cykpOwogICAgIGlmIChjaGFubmVscy5oYXNF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNoYW5uZWxzLnJlbGVhc2VFeGNlcHRpb24oKTsK
LSAgICBtX2NvbnRleHRQcm94eS0+cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKG1lc3Nh
Z2UucmVsZWFzZVJldHVyblZhbHVlKCksIGNoYW5uZWxzLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsK
KyAgICBtX2NvbnRleHRQcm94eS5wb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUobWVzc2Fn
ZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY2hhbm5lbHMucmVsZWFzZVJldHVyblZhbHVlKCkpOwog
ICAgIHJldHVybiB7IH07CiB9CiAKIHZvaWQgV29ya2VyOjp0ZXJtaW5hdGUoKQogewotICAgIG1f
Y29udGV4dFByb3h5LT50ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpOworICAgIG1fY29udGV4
dFByb3h5LnRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCk7CiB9CiAKIGJvb2wgV29ya2VyOjpj
YW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKQEAgLTEzOSwxMiArMTM5LDEy
IEBAIHZvaWQgV29ya2VyOjpzdG9wKCkKIAogYm9vbCBXb3JrZXI6Omhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY29udGV4dFByb3h5LT5oYXNQZW5kaW5nQWN0aXZp
dHkoKSB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOworICAgIHJldHVy
biBtX2NvbnRleHRQcm94eS5oYXNQZW5kaW5nQWN0aXZpdHkoKSB8fCBBY3RpdmVET01PYmplY3Q6
Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCiB2b2lkIFdvcmtlcjo6bm90aWZ5TmV0d29ya1N0
YXRlQ2hhbmdlKGJvb2wgaXNPbkxpbmUpCiB7Ci0gICAgbV9jb250ZXh0UHJveHktPm5vdGlmeU5l
dHdvcmtTdGF0ZUNoYW5nZShpc09uTGluZSk7CisgICAgbV9jb250ZXh0UHJveHkubm90aWZ5TmV0
d29ya1N0YXRlQ2hhbmdlKGlzT25MaW5lKTsKIH0KIAogdm9pZCBXb3JrZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgV29ya2VyOjpub3RpZnlGaW5pc2hl
ZCgpCiAgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJy
b3JFdmVudCwgZmFsc2UsIHRydWUpKTsKICAgICBlbHNlIHsKICAgICAgICAgY29uc3QgQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMgPSBtX2NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyA/IG1f
Y29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLnZhbHVlKCkgOiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5yZXNwb25zZUhlYWRlcnMo
KTsKLSAgICAgICAgbV9jb250ZXh0UHJveHktPnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUobV9zY3Jp
cHRMb2FkZXItPnVybCgpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVzZXJBZ2VudChtX3Nj
cmlwdExvYWRlci0+dXJsKCkpLCBtX3NjcmlwdExvYWRlci0+c2NyaXB0KCksIGNvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgbV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50
U2VjdXJpdHlQb2xpY3ksIG1fcnVudGltZUZsYWdzKTsKKyAgICAgICAgbV9jb250ZXh0UHJveHku
c3RhcnRXb3JrZXJHbG9iYWxTY29wZShtX3NjcmlwdExvYWRlci0+dXJsKCksIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+dXNlckFnZW50KG1fc2NyaXB0TG9hZGVyLT51cmwoKSksIG1fc2NyaXB0
TG9hZGVyLT5zY3JpcHQoKSwgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBt
X3Nob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9ydW50aW1lRmxh
Z3MpOwogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fc2NyaXB0TG9hZGVyLT5pZGVudGlmaWVyKCksIG1f
c2NyaXB0TG9hZGVyLT5zY3JpcHQoKSk7CiAgICAgfQogICAgIG1fc2NyaXB0TG9hZGVyID0gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCmluZGV4IDUyNjM3YTRlMTA3MWFhMjY2ZDMzYTI1
ZmYzMGYzYTU0MjAyZGQzYzIuLmUxNzRhMjlmYTM2M2Y1OWY2MjA3ODA1NWYzOWQzYzIxN2ViNGZi
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgog
CiAgICAgUmVmUHRyPFdvcmtlclNjcmlwdExvYWRlcj4gbV9zY3JpcHRMb2FkZXI7CiAgICAgU3Ry
aW5nIG1faWRlbnRpZmllcjsKLSAgICBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiBtX2NvbnRleHRQ
cm94eTsgLy8gVGhlIHByb3h5IG91dGxpdmVzIHRoZSB3b3JrZXIgdG8gcGVyZm9ybSB0aHJlYWQg
c2h1dGRvd24uCisgICAgV29ya2VyR2xvYmFsU2NvcGVQcm94eSYgbV9jb250ZXh0UHJveHk7IC8v
IFRoZSBwcm94eSBvdXRsaXZlcyB0aGUgd29ya2VyIHRvIHBlcmZvcm0gdGhyZWFkIHNodXRkb3du
LgogICAgIHN0ZDo6b3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
PiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKICAgICBib29sIG1fc2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5IHsgZmFsc2UgfTsKICAgICBK
U0M6OlJ1bnRpbWVGbGFncyBtX3J1bnRpbWVGbGFnczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKaW5kZXggMTZmOTcyMzYyZTQyNjFlYjQ5Njg0
MzZlY2JkYWYxODNmYjNlMDdjYy4uMDVkZGExODY3ODM0NjMxOTU4MGYyMWQzODE4MWU0NDlkMmNh
YjMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVBy
b3h5LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQpAQCAtMzAsMzUgKzMxLDI5IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTWVzc2Fn
ZVBvcnQuaCIKLSNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKLSNpbmNsdWRlIDxtZW1vcnk+Ci0j
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlICJNZXNzYWdlUG9ydENoYW5uZWwuaCIK
KyNpbmNsdWRlIDxydW50aW1lL1J1bnRpbWVGbGFncy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLSAgICBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7Ci0gICAg
Y2xhc3MgVVJMOwotICAgIGNsYXNzIFdvcmtlcjsKLQotICAgIC8vIEEgcHJveHkgdG8gdGFsayB0
byB0aGUgd29ya2VyIGNvbnRleHQuCi0gICAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGVQcm94eSB7
Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgV29ya2VyR2xvYmFsU2NvcGVQcm94eSogY3Jl
YXRlKFdvcmtlciopOwotCi0gICAgICAgIHZpcnR1YWwgfldvcmtlckdsb2JhbFNjb3BlUHJveHko
KSB7IH0KLQotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25z
dCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYg
c291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwg
Ym9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIEpTQzo6UnVu
dGltZUZsYWdzKSA9IDA7Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlckds
b2JhbFNjb3BlKCkgPSAwOwotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29y
a2VyR2xvYmFsU2NvcGUoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgc3RkOjp1bmlx
dWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PikgPSAwOwotCi0gICAgICAgIHZpcnR1YWwg
Ym9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCA9IDA7Ci0KLSAgICAgICAgdmlydHVhbCB2
b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpID0gMDsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQg
bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpID0gMDsKLSAgICB9OworY2xh
c3MgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOworY2xhc3MgVVJMOworY2xh
c3MgV29ya2VyOworCisvLyBBIHByb3h5IHRvIHRhbGsgdG8gdGhlIHdvcmtlciBjb250ZXh0Lgor
Y2xhc3MgV29ya2VyR2xvYmFsU2NvcGVQcm94eSB7CitwdWJsaWM6CisgICAgc3RhdGljIFdvcmtl
ckdsb2JhbFNjb3BlUHJveHkmIGNyZWF0ZShXb3JrZXImKTsKKworICAgIHZpcnR1YWwgdm9pZCBz
dGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBjb25zdCBDb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRl
bnRTZWN1cml0eVBvbGljeSwgSlNDOjpSdW50aW1lRmxhZ3MpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBv
c3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiYmLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KSA9IDA7CisgICAg
dmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBub3Rp
ZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkgPSAwOworCitwcm90ZWN0ZWQ6Cisg
ICAgdmlydHVhbCB+V29ya2VyR2xvYmFsU2NvcGVQcm94eSgpIHsgfQorfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJN
ZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2lu
Z1Byb3h5LmNwcAppbmRleCAxYzM4MjYxNTY5MDc5ODgwZGE5MjBmYTQ2OGYwZGJlOGViMjZmNWIw
Li4xNDBiOTYzNDk2YzI3MWEyNzNkNmViNDI5ODM0NTRmNGU1MzU0OWI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVk
ZSAiRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJFcnJvckV2ZW50LmgiCi0jaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgi
CkBAIC00OCwyMSArNDcsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Xb3JrZXJHbG9i
YWxTY29wZVByb3h5KiBXb3JrZXJHbG9iYWxTY29wZVByb3h5OjpjcmVhdGUoV29ya2VyKiB3b3Jr
ZXIpCitXb3JrZXJHbG9iYWxTY29wZVByb3h5JiBXb3JrZXJHbG9iYWxTY29wZVByb3h5OjpjcmVh
dGUoV29ya2VyJiB3b3JrZXIpCiB7Ci0gICAgcmV0dXJuIG5ldyBXb3JrZXJNZXNzYWdpbmdQcm94
eSh3b3JrZXIpOworICAgIHJldHVybiAqbmV3IFdvcmtlck1lc3NhZ2luZ1Byb3h5KHdvcmtlcik7
CiB9CiAKLVdvcmtlck1lc3NhZ2luZ1Byb3h5OjpXb3JrZXJNZXNzYWdpbmdQcm94eShXb3JrZXIq
IHdvcmtlck9iamVjdCkKLSAgICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCh3b3JrZXJPYmpl
Y3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1faW5zcGVjdG9yUHJveHkoc3Rk
OjptYWtlX3VuaXF1ZTxXb3JrZXJJbnNwZWN0b3JQcm94eT4od29ya2VyT2JqZWN0LT5pZGVudGlm
aWVyKCkpKQotICAgICwgbV93b3JrZXJPYmplY3Qod29ya2VyT2JqZWN0KQotICAgICwgbV9tYXlC
ZURlc3Ryb3llZChmYWxzZSkKLSAgICAsIG1fdW5jb25maXJtZWRNZXNzYWdlQ291bnQoMCkKLSAg
ICAsIG1fd29ya2VyVGhyZWFkSGFkUGVuZGluZ0FjdGl2aXR5KGZhbHNlKQotICAgICwgbV9hc2tl
ZFRvVGVybWluYXRlKGZhbHNlKQorV29ya2VyTWVzc2FnaW5nUHJveHk6Oldvcmtlck1lc3NhZ2lu
Z1Byb3h5KFdvcmtlciYgd29ya2VyT2JqZWN0KQorICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0KHdvcmtlck9iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgLCBtX2luc3Bl
Y3RvclByb3h5KHN0ZDo6bWFrZV91bmlxdWU8V29ya2VySW5zcGVjdG9yUHJveHk+KHdvcmtlck9i
amVjdC5pZGVudGlmaWVyKCkpKQorICAgICwgbV93b3JrZXJPYmplY3QoJndvcmtlck9iamVjdCkK
IHsKLSAgICBBU1NFUlQobV93b3JrZXJPYmplY3QpOwogICAgIEFTU0VSVCgoaXM8RG9jdW1lbnQ+
KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpICYmIGlzTWFpblRocmVhZCgpKQogICAgICAgICB8
fCAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpICYmIGN1
cnJlbnRUaHJlYWQoKSA9PSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkudGhyZWFkKCkudGhyZWFkSUQoKSkpOwogfQpAQCAtOTQsMTIgKzg4LDEy
IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29u
c3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0CiAgICAgU29ja2V0UHJvdmlkZXIqIHNvY2tldFBy
b3ZpZGVyID0gbnVsbHB0cjsKICNlbmRpZgogCi0gICAgUmVmUHRyPERlZGljYXRlZFdvcmtlclRo
cmVhZD4gdGhyZWFkID0gRGVkaWNhdGVkV29ya2VyVGhyZWFkOjpjcmVhdGUoc2NyaXB0VVJMLCBp
ZGVudGlmaWVyLCB1c2VyQWdlbnQsIHNvdXJjZUNvZGUsICp0aGlzLCAqdGhpcywgc3RhcnRNb2Rl
LCBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIHNob3VsZEJ5cGFzc01haW5X
b3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgZG9jdW1lbnQudG9wT3JpZ2luKCksIHByb3h5LCBz
b2NrZXRQcm92aWRlciwgcnVudGltZUZsYWdzKTsKKyAgICBhdXRvIHRocmVhZCA9IERlZGljYXRl
ZFdvcmtlclRocmVhZDo6Y3JlYXRlKHNjcmlwdFVSTCwgaWRlbnRpZmllciwgdXNlckFnZW50LCBz
b3VyY2VDb2RlLCAqdGhpcywgKnRoaXMsIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y3ksIGRvY3VtZW50LnRvcE9yaWdpbigpLCBwcm94eSwgc29ja2V0UHJvdmlkZXIsIHJ1bnRpbWVG
bGFncyk7CiAKLSAgICB3b3JrZXJUaHJlYWRDcmVhdGVkKHRocmVhZCk7CisgICAgd29ya2VyVGhy
ZWFkQ3JlYXRlZCh0aHJlYWQuZ2V0KCkpOwogICAgIHRocmVhZC0+c3RhcnQoKTsKIAotICAgIG1f
aW5zcGVjdG9yUHJveHktPndvcmtlclN0YXJ0ZWQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0Lmdl
dCgpLCB0aHJlYWQuZ2V0KCksIHNjcmlwdFVSTCk7CisgICAgbV9pbnNwZWN0b3JQcm94eS0+d29y
a2VyU3RhcnRlZChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCksIHRocmVhZC5wdHIoKSwg
c2NyaXB0VVJMKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VU
b1dvcmtlck9iamVjdChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIHN0
ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCkBAIC0xNzQs
OSArMTY4LDkgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1BhZ2VJ
bnNwZWN0b3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIH0pOwogfQogCi12b2lkIFdvcmtl
ck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJUaHJlYWRDcmVhdGVkKFBhc3NSZWZQdHI8RGVkaWNhdGVk
V29ya2VyVGhyZWFkPiB3b3JrZXJUaHJlYWQpCit2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3
b3JrZXJUaHJlYWRDcmVhdGVkKERlZGljYXRlZFdvcmtlclRocmVhZCYgd29ya2VyVGhyZWFkKQog
ewotICAgIG1fd29ya2VyVGhyZWFkID0gd29ya2VyVGhyZWFkOworICAgIG1fd29ya2VyVGhyZWFk
ID0gJndvcmtlclRocmVhZDsKIAogICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpIHsKICAgICAg
ICAgLy8gV29ya2VyLnRlcm1pbmF0ZSgpIGNvdWxkIGJlIGNhbGxlZCBmcm9tIEpTIGJlZm9yZSB0
aGUgdGhyZWFkIHdhcyBjcmVhdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJN
ZXNzYWdpbmdQcm94eS5oCmluZGV4IGEyZWM0YWNiYjFhY2VjMjJiYTY4YWRmNWNlY2UyOGQ1YjQ2
Yjg1NGIuLjFhODlmMmE1Yzg5ZmFiN2YzMGUwNTZiNzBlZTc5NTI2NjJiZDQ0ODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNzkgKzI1LDY5
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJM
b2FkZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCi0jaW5jbHVkZSA8
bWVtb3J5PgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAg
ICBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7Ci0gICAgY2xhc3Mg
RGVkaWNhdGVkV29ya2VyVGhyZWFkOwotICAgIGNsYXNzIFdvcmtlcjsKLSAgICBjbGFzcyBXb3Jr
ZXJJbnNwZWN0b3JQcm94eTsKLQotICAgIGNsYXNzIFdvcmtlck1lc3NhZ2luZ1Byb3h5IDogcHVi
bGljIFdvcmtlckdsb2JhbFNjb3BlUHJveHksIHB1YmxpYyBXb3JrZXJPYmplY3RQcm94eSwgcHVi
bGljIFdvcmtlckxvYWRlclByb3h5IHsKLSAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29y
a2VyTWVzc2FnaW5nUHJveHkpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIGV4cGxpY2l0IFdvcmtlck1lc3NhZ2luZ1Byb3h5KFdvcmtlciopOwotCi0gICAg
ICAgIC8vIEltcGxlbWVudGF0aW9ucyBvZiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LgotICAgICAg
ICAvLyAoT25seSB1c2UgdGhlc2UgbWV0aG9kcyBpbiB0aGUgd29ya2VyIG9iamVjdCB0aHJlYWQu
KQotICAgICAgICB2b2lkIHN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRV
UkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hvdWxkQnlw
YXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBKU0M6OlJ1bnRpbWVGbGFncykgb3Zl
cnJpZGU7Ci0gICAgICAgIHZvaWQgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKSBvdmVycmlk
ZTsKLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5Pikgb3ZlcnJpZGU7Ci0gICAgICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCkgb3ZlcnJp
ZGU7Ci0gICAgICAgIHZvaWQgbm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUp
IG92ZXJyaWRlOwotCi0gICAgICAgIC8vIEltcGxlbWVudGF0aW9ucyBvZiBXb3JrZXJPYmplY3RQ
cm94eS4KLSAgICAgICAgLy8gKE9ubHkgdXNlIHRoZXNlIG1ldGhvZHMgaW4gdGhlIHdvcmtlciBj
b250ZXh0IHRocmVhZC4pCi0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBv
cnRDaGFubmVsQXJyYXk+KSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgb3ZlcnJpZGU7Ci0gICAg
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1BhZ2VJbnNwZWN0b3IoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7Ci0gICAgICAgIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wgaGFz
UGVuZGluZ0FjdGl2aXR5KSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCByZXBvcnRQZW5kaW5nQWN0
aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIHdv
cmtlckdsb2JhbFNjb3BlQ2xvc2VkKCkgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgd29ya2VyR2xv
YmFsU2NvcGVEZXN0cm95ZWQoKSBvdmVycmlkZTsKLQotICAgICAgICAvLyBJbXBsZW1lbnRhdGlv
biBvZiBXb3JrZXJMb2FkZXJQcm94eS4KLSAgICAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgY2Fs
bGVkIG9uIGRpZmZlcmVudCB0aHJlYWRzIHRvIHNjaGVkdWxlIGxvYWRpbmcKLSAgICAgICAgLy8g
cmVxdWVzdHMgYW5kIHRvIHNlbmQgY2FsbGJhY2tzIGJhY2sgdG8gV29ya2VyR2xvYmFsU2NvcGUu
Ci0gICAgICAgIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrJiYpIG92ZXJyaWRlOwotICAgICAgICBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xv
YmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcmIG1v
ZGUpIG92ZXJyaWRlOwotCi0gICAgICAgIHZvaWQgd29ya2VyVGhyZWFkQ3JlYXRlZChQYXNzUmVm
UHRyPERlZGljYXRlZFdvcmtlclRocmVhZD4pOwotCi0gICAgICAgIC8vIE9ubHkgdXNlIHRoaXMg
bWV0aG9kIG9uIHRoZSB3b3JrZXIgb2JqZWN0IHRocmVhZC4KLSAgICAgICAgYm9vbCBhc2tlZFRv
VGVybWluYXRlKCkgY29uc3QgeyByZXR1cm4gbV9hc2tlZFRvVGVybWluYXRlOyB9Ci0KLSAgICBw
cm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgfldvcmtlck1lc3NhZ2luZ1Byb3h5KCk7Ci0KLSAg
ICBwcml2YXRlOgotICAgICAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJu
YWwoKTsKLSAgICAgICAgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHlJbnRlcm5hbChib29sIGNv
bmZpcm1pbmdNZXNzYWdlLCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSk7Ci0gICAgICAgIFdvcmtl
ciogd29ya2VyT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJPYmplY3Q7IH0KLQotICAg
ICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0OwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VySW5zcGVjdG9yUHJveHk+IG1faW5z
cGVjdG9yUHJveHk7Ci0gICAgICAgIFdvcmtlciogbV93b3JrZXJPYmplY3Q7Ci0gICAgICAgIGJv
b2wgbV9tYXlCZURlc3Ryb3llZDsKLSAgICAgICAgUmVmUHRyPERlZGljYXRlZFdvcmtlclRocmVh
ZD4gbV93b3JrZXJUaHJlYWQ7Ci0KLSAgICAgICAgdW5zaWduZWQgbV91bmNvbmZpcm1lZE1lc3Nh
Z2VDb3VudDsgLy8gVW5jb25maXJtZWQgbWVzc2FnZXMgZnJvbSB3b3JrZXIgb2JqZWN0IHRvIHdv
cmtlciB0aHJlYWQuCi0gICAgICAgIGJvb2wgbV93b3JrZXJUaHJlYWRIYWRQZW5kaW5nQWN0aXZp
dHk7IC8vIFRoZSBsYXRlc3QgY29uZmlybWF0aW9uIGZyb20gd29ya2VyIHRocmVhZCByZXBvcnRl
ZCB0aGF0IGl0IHdhcyBzdGlsbCBhY3RpdmUuCi0KLSAgICAgICAgYm9vbCBtX2Fza2VkVG9UZXJt
aW5hdGU7Ci0KLSAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPj4gbV9xdWV1ZWRFYXJseVRhc2tzOyAvLyBUYXNrcyBhcmUgcXVldWVkIGhl
cmUgdW50aWwgdGhlcmUncyBhIHRocmVhZCBvYmplY3QgY3JlYXRlZC4KLSAgICB9OworY2xhc3Mg
RGVkaWNhdGVkV29ya2VyVGhyZWFkOworY2xhc3MgV29ya2VySW5zcGVjdG9yUHJveHk7CisKK2Ns
YXNzIFdvcmtlck1lc3NhZ2luZ1Byb3h5IGZpbmFsIDogcHVibGljIFdvcmtlckdsb2JhbFNjb3Bl
UHJveHksIHB1YmxpYyBXb3JrZXJPYmplY3RQcm94eSwgcHVibGljIFdvcmtlckxvYWRlclByb3h5
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBX
b3JrZXJNZXNzYWdpbmdQcm94eShXb3JrZXImKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIH5X
b3JrZXJNZXNzYWdpbmdQcm94eSgpOworCisgICAgLy8gSW1wbGVtZW50YXRpb25zIG9mIFdvcmtl
ckdsb2JhbFNjb3BlUHJveHkuCisgICAgLy8gKE9ubHkgdXNlIHRoZXNlIGZ1bmN0aW9ucyBpbiB0
aGUgd29ya2VyIG9iamVjdCB0aHJlYWQuKQorICAgIHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxTY29w
ZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0
cmluZyYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIEpT
Qzo6UnVudGltZUZsYWdzKSBmaW5hbDsKKyAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNj
b3BlKCkgZmluYWw7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5PikgZmluYWw7CisgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25z
dCBmaW5hbDsKKyAgICB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpIGZpbmFsOworICAgIHZv
aWQgbm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpIGZpbmFsOworCisgICAg
Ly8gSW1wbGVtZW50YXRpb25zIG9mIFdvcmtlck9iamVjdFByb3h5LgorICAgIC8vIChPbmx5IHVz
ZSB0aGVzZSBmdW5jdGlvbnMgaW4gdGhlIHdvcmtlciBjb250ZXh0IHRocmVhZC4pCisgICAgdm9p
ZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
JiYsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pIGZpbmFsOworICAg
IHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpIGZpbmFsOworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1BhZ2VJbnNwZWN0b3IoY29uc3Qg
U3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3Qo
Ym9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOworICAgIHZvaWQgcmVwb3J0UGVuZGluZ0Fj
dGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSBmaW5hbDsKKyAgICB2b2lkIHdvcmtlckds
b2JhbFNjb3BlQ2xvc2VkKCkgZmluYWw7CisgICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ry
b3llZCgpIGZpbmFsOworCisgICAgLy8gSW1wbGVtZW50YXRpb24gb2YgV29ya2VyTG9hZGVyUHJv
eHkuCisgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgb24gZGlmZmVyZW50IHRocmVh
ZHMgdG8gc2NoZWR1bGUgbG9hZGluZworICAgIC8vIHJlcXVlc3RzIGFuZCB0byBzZW5kIGNhbGxi
YWNrcyBiYWNrIHRvIFdvcmtlckdsb2JhbFNjb3BlLgorICAgIHZvaWQgcG9zdFRhc2tUb0xvYWRl
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOworICAgIGJvb2wgcG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
JiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CisKKyAgICB2b2lkIHdvcmtlclRocmVhZENy
ZWF0ZWQoRGVkaWNhdGVkV29ya2VyVGhyZWFkJik7CisKKyAgICAvLyBPbmx5IHVzZSB0aGlzIG1l
dGhvZCBvbiB0aGUgd29ya2VyIG9iamVjdCB0aHJlYWQuCisgICAgYm9vbCBhc2tlZFRvVGVybWlu
YXRlKCkgY29uc3QgeyByZXR1cm4gbV9hc2tlZFRvVGVybWluYXRlOyB9CisKKyAgICB2b2lkIHdv
cmtlckdsb2JhbFNjb3BlRGVzdHJveWVkSW50ZXJuYWwoKTsKKyAgICB2b2lkIHJlcG9ydFBlbmRp
bmdBY3Rpdml0eUludGVybmFsKGJvb2wgY29uZmlybWluZ01lc3NhZ2UsIGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5KTsKKyAgICBXb3JrZXIqIHdvcmtlck9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1f
d29ya2VyT2JqZWN0OyB9CisKKyAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJJbnNwZWN0
b3JQcm94eT4gbV9pbnNwZWN0b3JQcm94eTsKKyAgICBXb3JrZXIqIG1fd29ya2VyT2JqZWN0Owor
ICAgIGJvb2wgbV9tYXlCZURlc3Ryb3llZCB7IGZhbHNlIH07CisgICAgUmVmUHRyPERlZGljYXRl
ZFdvcmtlclRocmVhZD4gbV93b3JrZXJUaHJlYWQ7CisKKyAgICB1bnNpZ25lZCBtX3VuY29uZmly
bWVkTWVzc2FnZUNvdW50IHsgMCB9OyAvLyBVbmNvbmZpcm1lZCBtZXNzYWdlcyBmcm9tIHdvcmtl
ciBvYmplY3QgdG8gd29ya2VyIHRocmVhZC4KKyAgICBib29sIG1fd29ya2VyVGhyZWFkSGFkUGVu
ZGluZ0FjdGl2aXR5IHsgZmFsc2UgfTsgLy8gVGhlIGxhdGVzdCBjb25maXJtYXRpb24gZnJvbSB3
b3JrZXIgdGhyZWFkIHJlcG9ydGVkIHRoYXQgaXQgd2FzIHN0aWxsIGFjdGl2ZS4KKworICAgIGJv
b2wgbV9hc2tlZFRvVGVybWluYXRlIHsgZmFsc2UgfTsKKworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4+IG1fcXVldWVkRWFybHlUYXNrczsg
Ly8gVGFza3MgYXJlIHF1ZXVlZCBoZXJlIHVudGlsIHRoZXJlJ3MgYSB0aHJlYWQgb2JqZWN0IGNy
ZWF0ZWQuCit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuaAppbmRleCBhYjBhODFkN2UwMzkyYjg0YTMwM2U1YTk4MWZhMGVmMzU3NDlm
MGMyLi4wOGY3MDA4Yjg4NTU0OGUzYzk1NjYyNDc0YzA0NTIxYzM1ZDViZGM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8cnVudGltZS9SdW50aW1lRmxhZ3MuaD4KICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODQsNyArODMsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgV29ya2VyVGhyZWFkKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwg
V29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVhZFN0
YXJ0TW9kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9v
bCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luKiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29j
a2V0UHJvdmlkZXIqLCBKU0M6OlJ1bnRpbWVGbGFncyk7CiAKICAgICAvLyBGYWN0b3J5IG1ldGhv
ZCBmb3IgY3JlYXRpbmcgYSBuZXcgd29ya2VyIGNvbnRleHQgZm9yIHRoZSB0aHJlYWQuCi0gICAg
dmlydHVhbCBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiB0b3BPcmlnaW4pID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxXb3JrZXJHbG9iYWxT
Y29wZT4gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50
U2VjdXJpdHlQb2xpY3ksIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4pID0gMDsK
IAogICAgIC8vIEV4ZWN1dGVzIHRoZSBldmVudCBsb29wIGZvciB0aGUgd29ya2VyIHRocmVhZC4g
RGVyaXZlZCBjbGFzc2VzIGNhbiBvdmVycmlkZSB0byBwZXJmb3JtIGFjdGlvbnMgYmVmb3JlL2Fm
dGVyIGVudGVyaW5nIHRoZSBldmVudCBsb29wLgogICAgIHZpcnR1YWwgdm9pZCBydW5FdmVudExv
b3AoKTsK
</data>
<flag name="review"
          id="320324"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>