<?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>216945</bug_id>
          
          <creation_ts>2020-09-24 15:12:43 -0700</creation_ts>
          <short_desc>Get rid of AudioNode::RefType</short_desc>
          <delta_ts>2021-01-13 17:29:53 -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>Web Audio</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>212611</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1691687</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-24 15:12:43 -0700</bug_when>
    <thetext>Get rid of AudioNode::RefType. Try to make AudioNode refcounting clearer and less leak-prone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691730</commentid>
    <comment_count>1</comment_count>
      <attachid>409642</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-24 17:45:14 -0700</bug_when>
    <thetext>Created attachment 409642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691739</commentid>
    <comment_count>2</comment_count>
      <attachid>409645</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-24 18:09:02 -0700</bug_when>
    <thetext>Created attachment 409645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691743</commentid>
    <comment_count>3</comment_count>
      <attachid>409647</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-24 18:37:12 -0700</bug_when>
    <thetext>Created attachment 409647
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691744</commentid>
    <comment_count>4</comment_count>
      <attachid>409648</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-24 18:49:47 -0700</bug_when>
    <thetext>Created attachment 409648
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691970</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-25 12:05:56 -0700</bug_when>
    <thetext>Any thoughts on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691978</commentid>
    <comment_count>6</comment_count>
      <attachid>409648</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-25 12:15:22 -0700</bug_when>
    <thetext>Comment on attachment 409648
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=409648&amp;action=review

&gt; Source/WTF/ChangeLog:11
&gt; +        Add third template parameter to RefPtr allowing to define the traits
&gt; +        from incrementing / decrementing the refcount. The default traits
&gt; +        call ref() / deref() but this can now be customized to call other
&gt; +        functions.

What about all the other RefPtr-like classes? Could RetainPtr be defined like this, or does it have features that are too fancy? WKRetainPtr? JSRetainPtr? NakedPtr? OSObjectPtr?

&gt; Source/WTF/wtf/RefPtr.h:49
&gt; +template&lt;typename T, typename _PtrTraits, typename _RefDerefTraits&gt;

Why the leading underscores? I think that’s technically reserved for the standard library.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691980</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-25 12:20:12 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; Comment on attachment 409648 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=409648&amp;action=review
&gt; 
&gt; &gt; Source/WTF/ChangeLog:11
&gt; &gt; +        Add third template parameter to RefPtr allowing to define the traits
&gt; &gt; +        from incrementing / decrementing the refcount. The default traits
&gt; &gt; +        call ref() / deref() but this can now be customized to call other
&gt; &gt; +        functions.
&gt; 
&gt; What about all the other RefPtr-like classes? Could RetainPtr be defined
&gt; like this, or does it have features that are too fancy? WKRetainPtr?
&gt; JSRetainPtr? NakedPtr? OSObjectPtr?

We don&apos;t have such need for the other classes yet. I had initially written my own class to wrap an AudioNode and call incrementConnectionCount() in constructor and decrementConnectionCount() in the destructor. I eventually realized I was duplicating a lot of the RefPtr code so I decided to make RefPtr more flexible so that I can reuse it instead.

If you don&apos;t like this approach though, I can try and go back to my original idea. I do want the calls to incrementConnectionCount() / decrementConnectionCount() to be abstracted away though to reduce the chance of leaks.

&gt; &gt; Source/WTF/wtf/RefPtr.h:49
&gt; &gt; +template&lt;typename T, typename _PtrTraits, typename _RefDerefTraits&gt;
&gt; 
&gt; Why the leading underscores? I think that’s technically reserved for the
&gt; standard library.

I could not do:
using PtrTraits = PtrTraits;

So I needed a way to differentiate the template parameter. I decided to use an underscore but I am open to suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692013</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-25 13:36:55 -0700</bug_when>
    <thetext>Committed r267591: &lt;https://trac.webkit.org/changeset/267591&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 409648.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692014</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-25 13:37:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/69591533&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719334</commentid>
    <comment_count>10</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-01-13 10:30:55 -0800</bug_when>
    <thetext>By the way, it looks like this has broken binary compatibility with open-source builds (because those builds use the system WebInspector.framework).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719336</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-13 10:34:41 -0800</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #10)
&gt; By the way, it looks like this has broken binary compatibility with
&gt; open-source builds (because those builds use the system
&gt; WebInspector.framework).

I am unclear what this change has to do with WebInspector.framework? I do not see any changes to inspector bits in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719337</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-13 10:35:10 -0800</bug_when>
    <thetext>I’m guessing it’s the change to RefPtr template arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719338</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-13 10:35:44 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #12)
&gt; I’m guessing it’s the change to RefPtr template arguments.

Oh, that makes sense indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719339</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-13 10:36:16 -0800</bug_when>
    <thetext>I don’t understand how mismatched WebKit and WebInspector frameworks is expected to work. It’s untenable to have such a fragile API contract between them; not sure when we decided on this strategy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719504</commentid>
    <comment_count>15</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-01-13 17:29:53 -0800</bug_when>
    <thetext>See also: https://bugs.webkit.org/show_bug.cgi?id=217778 and https://bugs.webkit.org/show_bug.cgi?id=215961</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409642</attachid>
            <date>2020-09-24 17:45:14 -0700</date>
            <delta_ts>2020-09-24 18:39:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216945-20200924174513.patch</filename>
            <type>text/plain</type>
            <size>42995</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
Mzc3MzlkZGM1NGYxNjhjZDRmOTAwZTY1MTJjYzA3NmQyMTIxYmUxLi43ZWRkMzRkYWRiNDIyYWNh
YTFjY2I0MWM3M2Q4OTEzMzZhZWVlNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMC0wOS0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEdldCByaWQgb2YgQXVkaW9Ob2RlOjpSZWZUeXBlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY5NDUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
OgorICAgICAgICAoSlNDOjpDYWNoZWRSZWZQdHI6OmRlY29kZSBjb25zdCk6CisKIDIwMjAtMDkt
MjQgIEJhc3VrZSBTdXp1a2kgIDxiYXN1a2Uuc3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtQ
bGF5U3RhdGlvbl0gU3RvcCByYWlzaW5nIFNJR1BJUEUgd2hlbiBjbGllbnQgc2lkZSBvZiBSZW1v
dGVJbnNwZWN0b3IgZGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwppbmRleCBhYjgwMjA1NjZiMDQzZTY1MTcwZWI3NmRiNDI3OTUwZmI1
OTZlMjIwLi42ODJkMTc4MDZhZjExMDJjNGM1OTFkOTcxZjYyNmNkOTgwMzZjNTBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMzIEBACisyMDIwLTA5LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgR2V0IHJpZCBvZiBBdWRpb05vZGU6OlJlZlR5cGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk0NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aGlyZCB0ZW1wbGF0ZSBwYXJh
bWV0ZXIgdG8gUmVmUHRyIGFsbG93aW5nIHRvIGRlZmluZSB0aGUgdHJhaXRzCisgICAgICAgIGZy
b20gaW5jcmVtZW50aW5nIC8gZGVjcmVtZW50aW5nIHRoZSByZWZjb3VudC4gVGhlIGRlZmF1bHQg
dHJhaXRzCisgICAgICAgIGNhbGwgcmVmKCkgLyBkZXJlZigpIGJ1dCB0aGlzIGNhbiBub3cgYmUg
Y3VzdG9taXplZCB0byBjYWxsIG90aGVyCisgICAgICAgIGZ1bmN0aW9ucy4KKworICAgICAgICAq
IHd0Zi9Db21wYWN0UmVmUHRyVHVwbGUuaDoKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOgorICAg
ICAgICAqIHd0Zi9SZWZQdHIuaDoKKyAgICAgICAgKFdURjo6RGVmYXVsdFJlZkRlcmVmVHJhaXRz
OjpyZWZJZk5vdE51bGwpOgorICAgICAgICAoV1RGOjpEZWZhdWx0UmVmRGVyZWZUcmFpdHM6OmRl
cmVmSWZOb3ROdWxsKToKKyAgICAgICAgKFdURjo6UmVmUHRyOjpSZWZQdHIpOgorICAgICAgICAo
V1RGOjpSZWZQdHI6On5SZWZQdHIpOgorICAgICAgICAoV1RGOjpWPjo6UmVmUHRyKToKKyAgICAg
ICAgKFdURjo6Vj46OmxlYWtSZWYpOgorICAgICAgICAoV1RGOjo9KToKKyAgICAgICAgKFdURjo6
Vj46OnN3YXApOgorICAgICAgICAoV1RGOjpzd2FwKToKKyAgICAgICAgKFdURjo6b3BlcmF0b3I9
PSk6CisgICAgICAgIChXVEY6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV1RGOjpzdGF0aWNfcG9p
bnRlcl9jYXN0KToKKyAgICAgICAgKFdURjo6YWRvcHRSZWYpOgorICAgICAgICAoV1RGOjppcyk6
CisKIDIwMjAtMDktMjQgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtMRkNdW0ludGVncmF0aW9uXSBFbmFibGUgb24gQXBwbGUgV2luZG93cyBwb3J0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNzMwZjY1MjdmMTc1YjlhM2FmMzg1OGIwN2I4MzU4MWI4NmUxZmIzMy4uZTJkYWFm
NWRjZjE1NWVkNWFiZDNjMmU1YjA2OTMyMzY2YTBmMGE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDcyIEBACisyMDIwLTA5LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgR2V0IHJpZCBvZiBBdWRpb05vZGU6OlJlZlR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk0NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZpb3VzbHksIHRoZSBub2RlIGhhZCByZWYo
KS9kZXJlZigpIGZ1bmN0aW9uIHRha2luZyBhIFJlZlR5cGUgcGFyYW1ldGVyLgorICAgICAgICBU
aGUgUmVmVHlwZSB3b3VsZCBiZSB1c2VkIHRvIGRldGVybWluZSB3aGljaCBjb3VudGVyIHNob3Vs
ZCBiZSBpbmNyZW1lbnRlZAorICAgICAgICBvciBkZWNyZW1lbnRlZDogZWl0aGVyIG1fbm9ybWFs
UmVmQ291bnQgb3IgbV9jb25uZWN0aW9uUmVmQ291bnQuCisKKyAgICAgICAgSW4gYSBwcmV2aW91
cyBwYXRjaCwgSSBoYXZlIGFscmVhZHkgcG9ydGVkIGNvZGUgdGhhdCB3YXMgY2FsbGluZyByZWYo
KSAvIGRlcmVmKCkKKyAgICAgICAgZXhwbGljaXRseSB3aXRoIFJlZlR5cGVOb3JtYWwgdG8gdXNl
IFJlZlB0cjw+IGluc3RlYWQuIFRoaXMgcGF0Y2ggZ29lcyBmdXJ0aGVyIGJ5OgorICAgICAgICAx
LiBEcm9wcGluZyB0aGUgUmVmVHlwZSBwYXJhbWV0ZXIgdG8gcmVmKCkgLyBkZXJlZigpLiByZWYo
KSAvIGRlcmVmKCkgbm93IGluY3JlbWVudAorICAgICAgICAgICBvciBkZWNyZW1lbnQgbV9ub3Jt
YWxSZWZDb3VudCBvbmx5LiBDbGllbnRzIGFyZSBleHBlY3RlZCB0byB1c2UgUmVmUHRyIHRvIGhh
bmRsZQorICAgICAgICAgICByZWYgY291bnRpbmcuCisgICAgICAgIDIuIEludHJvZHVjZSBuZXcg
aW5jcmVtZW50Q29ubmVjdGlvbkNvdW50KCkgLyBkZWNyZW1lbnRDb25uZWN0aW9uQ291bnQoKSB0
byBpbmNyZW1lbnQKKyAgICAgICAgICAgb3IgZGVjcmVtZW50IG1fY29ubmVjdGlvblJlZkNvdW50
LiBUbyByZWR1Y2UgdGhlIGNoYW5jZSBvZiBsZWFrYWdlLCBjbGllbnRzIHNob3VsZAorICAgICAg
ICAgICBub3QgY2FsbCB0aGVzZSBmdW5jdGlvbnMgZGlyZWN0bHkgYW55bW9yZS4gSW5zdGVhZCwg
dGhleSB1c2UgdXNlIHRoZSBuZXcKKyAgICAgICAgICAgQXVkaW9Db25uZWN0aW9uUmVmUHRyPD4g
cG9pbnRlciB0eXBlIHRvIGhhbmRsZSB0aGUgY29ubmVjdGlvbiByZWYgY291bnRpbmcgZm9yIHRo
ZW0uCisgICAgICAgICAgIEF1ZGlvQ29ubmVjdGlvblJlZlB0cjw+IGlzIGEgUmVmUHRyPD4gd2hp
Y2ggc3BlY2lhbCB0cmFpdHMgY2F1c2luZyBpbmNyZW1lbnRDb25uZWN0aW9uQ291bnQoKQorICAg
ICAgICAgICBhbmQgZGVjcmVtZW50Q29ubmVjdGlvbkNvdW50KCkgdG8gZ2V0IGNhbGxlZCBvbiB0
aGUgQXVkaW9Ob2RlIGluc3RlYWQgb2YgcmVmKCkgYW5kCisgICAgICAgICAgIGRlcmVmKCkuCisK
KyAgICAgICAgSSBiZWxpZXZlIHRoaXMgbmV3IGRlc2lnbiBpcyBhIGJpdCBzaW1wbGVyIHRvIHJl
YXNvbiBhYm91dCBhbmQgbGVzcyBwcm9uZSB0byBsZWFrcy4KKyAgICAgICAgVGhlcmUgaXMgbm8g
bG9uZ2VyIGFueSBjb2RlIGV4cGxpY2l0bHkgcmVmJ2luZyBvciBkZXJlZidpbmcgdGhlIEF1ZGlv
Tm9kZXMuIEluc3RlYWQsCisgICAgICAgIFJlZlB0cjw+IG9yIEF1ZGlvQ29ubmVjdGlvblJlZlB0
cjw+IGlzIHVzZWQgdG8gaW5jcmVtZW50L2RlY3JlbWVudCB0aGUgcmlnaHQgaW50ZXJuYWwKKyAg
ICAgICAgY291bnQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBXZWItZmFjaW5nIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0
UGFubmVyTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmNs
ZWFyUGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNv
dXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmRpc2FibGVPdXRwdXRzSWZOZWNlc3NhcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjppbmNyZW1lbnRDb25uZWN0aW9uQ291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpkZWNyZW1lbnRDb25uZWN0aW9uQ291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpkZWNyZW1lbnRDb25uZWN0aW9uQ291bnRXaXRo
TG9jayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6Om1hcmtOb2RlRm9yRGVsZXRpb25J
Zk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OnJlZik6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb05vZGU6OmRlcmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9k
ZTo6ZGVyZWZXaXRoTG9jayk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUNvbm5lY3Rpb25SZWZEZXJlZlRyYWl0czo6
cmVmSWZOb3ROdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUNvbm5lY3Rpb25SZWZE
ZXJlZlRyYWl0czo6ZGVyZWZJZk5vdE51bGwpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Ob2RlSW5wdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6OmNv
bm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6OmRpc2Nvbm5lY3QpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvTm9kZU91dHB1dDo6cHJvcGFnYXRlQ2hhbm5lbENvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvTm9kZU91dHB1dDo6YWRkSW5wdXQpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Ob2RlT3V0cHV0OjpkaXNjb25uZWN0QWxsSW5wdXRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvTm9kZU91dHB1dDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05v
ZGVPdXRwdXQ6OmVuYWJsZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVP
dXRwdXQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6fkJhc2VBdWRpb0NvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6cmVmTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpCYXNlQXVkaW9Db250ZXh0OjpkZXJlZk5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QmFzZUF1ZGlvQ29udGV4dDo6ZGVyZWZVbmZpbmlzaGVkU291cmNlTm9kZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWREZWNyZW1lbnRDb25uZWN0
aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6aGFuZGxlUG9z
dFJlbmRlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb0NvbnRleHQ6OmhhbmRs
ZURlZmVycmVkRGVjcmVtZW50Q29ubmVjdGlvbkNvdW50cyk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nv
ck5vZGU6OnByb2Nlc3MpOgorCiAyMDIwLTA5LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgVXNlIG1vcmUgaW5saW5lIGluaXRpYWxpemF0aW9uIGFuZCBjb25z
dGV4cHIgaW4gV2ViQXVkaW8gY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHlwZXMuY3BwCmluZGV4IDU0NzU3NjQ2ZDcwMjBkNTBlYmU3ZTQ1ZjFjMzI4OTk5YzY0
MGY2NGMuLmU0NGMxYTM5Nzk0YjI0YmNkODdhZWYzOThhN2MyODI1N2VmMGM1MmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTU1NCwxMCAr
NTU0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBp
ZiAoaXNOZXdBbGxvY2F0aW9uKSB7CiAgICAgICAgICAgICBkZWNvZGVyLmFkZEZpbmFsaXplcihb
PV0gewotICAgICAgICAgICAgICAgIGRlcmVmSWZOb3ROdWxsKGRlY29kZWRQdHIpOworICAgICAg
ICAgICAgICAgIFdURjo6RGVmYXVsdFJlZkRlcmVmVHJhaXRzPFNvdXJjZT46OmRlcmVmSWZOb3RO
dWxsKGRlY29kZWRQdHIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLSAgICAgICAgcmVm
SWZOb3ROdWxsKGRlY29kZWRQdHIpOworICAgICAgICBXVEY6OkRlZmF1bHRSZWZEZXJlZlRyYWl0
czxTb3VyY2U+OjpyZWZJZk5vdE51bGwoZGVjb2RlZFB0cik7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihkZWNvZGVkUHRyKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Nv
bXBhY3RSZWZQdHJUdXBsZS5oIGIvU291cmNlL1dURi93dGYvQ29tcGFjdFJlZlB0clR1cGxlLmgK
aW5kZXggMWFmMmUwNjNjOTAwZWQ4Mjc1NTI3MzI0MzA4NjY4M2VmZjBhMTI3MC4uNjQ2Y2FkNjQy
MjNlMmM5ZTZjODExODVjYTllYWRhZTMxYmE5ZGUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvQ29tcGFjdFJlZlB0clR1cGxlLmgKKysrIGIvU291cmNlL1dURi93dGYvQ29tcGFjdFJlZlB0
clR1cGxlLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIENvbXBhY3RSZWZQdHJUdXBs
ZSgpID0gZGVmYXVsdDsKICAgICB+Q29tcGFjdFJlZlB0clR1cGxlKCkKICAgICB7Ci0gICAgICAg
IGRlcmVmSWZOb3ROdWxsKG1fZGF0YS5wb2ludGVyKCkpOworICAgICAgICBXVEY6OkRlZmF1bHRS
ZWZEZXJlZlRyYWl0czxUPjo6ZGVyZWZJZk5vdE51bGwobV9kYXRhLnBvaW50ZXIoKSk7CiAgICAg
fQogCiAgICAgVCogcG9pbnRlcigpIGNvbnN0CkBAIC00OSwxMCArNDksMTAgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRQb2ludGVyKFQqIHBvaW50ZXIpCiAgICAgewotICAgICAgICByZWZJZk5v
dE51bGwocG9pbnRlcik7CisgICAgICAgIFdURjo6RGVmYXVsdFJlZkRlcmVmVHJhaXRzPFQ+Ojpy
ZWZJZk5vdE51bGwocG9pbnRlcik7CiAgICAgICAgIGF1dG8qIG9sZCA9IG1fZGF0YS5wb2ludGVy
KCk7CiAgICAgICAgIG1fZGF0YS5zZXRQb2ludGVyKHBvaW50ZXIpOwotICAgICAgICBkZXJlZklm
Tm90TnVsbChvbGQpOworICAgICAgICBXVEY6OkRlZmF1bHRSZWZEZXJlZlRyYWl0czxUPjo6ZGVy
ZWZJZk5vdE51bGwob2xkKTsKICAgICB9CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2RhdGEudHlwZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKaW5kZXggMzE2MmQxY2E0ODg2MmQzYjE4ODM5ZjVi
OTc0ZjZmNjNjMTc2YmU3ZC4uNTRjMGY3MmEzZTI3OTlhZWUyYWQ0YTY5MTUzYjBiNzIwMGQ3N2Ix
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0ZvcndhcmQuaApAQCAtNTksNiArNTksNyBAQCB1c2luZyBWZWN0b3JNYWxsb2MgPSBGYXN0
TWFsbG9jOwogI2VuZGlmCiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRHVtYlB0clRyYWl0
czsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRGVmYXVsdFJlZkRlcmVmVHJhaXRzOwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgQ29tcGxldGlvbkhhbmRsZXI7CiB0ZW1wbGF0ZTx0eXBl
bmFtZT4gY2xhc3MgRnVuY3Rpb247CkBAIC02OSw3ICs3MCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
PiBjbGFzcyBPcHRpb25hbDsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBQYWNrZWQ7CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgPSBhbGlnbm9mKFQpPiBjbGFzcyBQYWNrZWRBbGlnbmVk
UHRyOwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBEdW1iUHRyVHJhaXRzPFQ+PiBj
bGFzcyBSZWY7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IER1bWJQdHJUcmFpdHM8
VD4+IGNsYXNzIFJlZlB0cjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gRHVtYlB0
clRyYWl0czxUPiwgdHlwZW5hbWUgPSBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8VD4+IGNsYXNzIFJl
ZlB0cjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTdHJpbmdCdWZmZXI7CiB0ZW1wbGF0ZTx0
eXBlbmFtZT4gY2xhc3MgU3RyaW5nUGFyc2luZ0J1ZmZlcjsKIHRlbXBsYXRlPHR5cGVuYW1lLCB0
eXBlbmFtZSA9IHZvaWQ+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAppbmRleCBkZGJh
MjY2ZTQxZmNkOWY1NGU1MGY5MjYxNGNjMjIzZjA2ZjA1YzMwLi4wOTIzMmNiY2UyNzdiMWRiYmU1
ZjIxNmE1YzhjMjJmNDVjYWFhZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtMjksNDUgKzI5LDQ4IEBACiAKIG5h
bWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQdHJUcmFpdHM+
IGNsYXNzIFJlZlB0cjsKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFB0clRyYWl0cyA9
IER1bWJQdHJUcmFpdHM8VD4+IFJlZlB0cjxULCBQdHJUcmFpdHM+IGFkb3B0UmVmKFQqKTsKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0UmVmRGVyZWZUcmFpdHMgeworICAgIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcmVmSWZOb3ROdWxsKFQqIHB0cikKKyAgICB7CisgICAg
ICAgIGlmIChMSUtFTFkocHRyICE9IG51bGxwdHIpKQorICAgICAgICAgICAgcHRyLT5yZWYoKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGRlcmVmSWZOb3ROdWxsKFQq
IHB0cikKKyAgICB7CisgICAgICAgIGlmIChMSUtFTFkocHRyICE9IG51bGxwdHIpKQorICAgICAg
ICAgICAgcHRyLT5kZXJlZigpOworICAgIH0KK307CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IEFM
V0FZU19JTkxJTkUgdm9pZCByZWZJZk5vdE51bGwoVCogcHRyKQotewotICAgIGlmIChMSUtFTFko
cHRyICE9IG51bGxwdHIpKQotICAgICAgICBwdHItPnJlZigpOwotfQordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgUHRyVHJhaXRzLCB0eXBlbmFtZSBSZWZEZXJlZlRyYWl0cz4gY2xhc3Mg
UmVmUHRyOwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUHRyVHJhaXRzID0gRHVtYlB0
clRyYWl0czxUPiwgdHlwZW5hbWUgUmVmRGVyZWZUcmFpdHMgPSBEZWZhdWx0UmVmRGVyZWZUcmFp
dHM8VD4+IFJlZlB0cjxULCBQdHJUcmFpdHMsIFJlZkRlcmVmVHJhaXRzPiBhZG9wdFJlZihUKik7
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IEFMV0FZU19JTkxJTkUgdm9pZCBkZXJlZklmTm90TnVs
bChUKiBwdHIpCi17Ci0gICAgaWYgKExJS0VMWShwdHIgIT0gbnVsbHB0cikpCi0gICAgICAgIHB0
ci0+ZGVyZWYoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHJhaXRzPgor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgX1B0clRyYWl0cywgdHlwZW5hbWUgX1JlZkRl
cmVmVHJhaXRzPgogY2xhc3MgUmVmUHRyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICB1c2luZyBQdHJUcmFpdHMgPSBUcmFpdHM7CisgICAgdXNpbmcgUHRyVHJh
aXRzID0gX1B0clRyYWl0czsKKyAgICB1c2luZyBSZWZEZXJlZlRyYWl0cyA9IF9SZWZEZXJlZlRy
YWl0czsKICAgICB0eXBlZGVmIFQgVmFsdWVUeXBlOwogICAgIHR5cGVkZWYgVmFsdWVUeXBlKiBQ
dHJUeXBlOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUmVmUHRyID0gdHJ1ZTsKIAog
ICAgIEFMV0FZU19JTkxJTkUgY29uc3RleHByIFJlZlB0cigpIDogbV9wdHIobnVsbHB0cikgeyB9
Ci0gICAgQUxXQVlTX0lOTElORSBSZWZQdHIoVCogcHRyKSA6IG1fcHRyKHB0cikgeyByZWZJZk5v
dE51bGwocHRyKTsgfQotICAgIEFMV0FZU19JTkxJTkUgUmVmUHRyKGNvbnN0IFJlZlB0ciYgbykg
OiBtX3B0cihvLm1fcHRyKSB7IHJlZklmTm90TnVsbChQdHJUcmFpdHM6OnVud3JhcChtX3B0cikp
OyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4gUmVmUHRyKGNvbnN0IFJl
ZlB0cjxYLCBZPiYgbykgOiBtX3B0cihvLmdldCgpKSB7IHJlZklmTm90TnVsbChQdHJUcmFpdHM6
OnVud3JhcChtX3B0cikpOyB9CisgICAgQUxXQVlTX0lOTElORSBSZWZQdHIoVCogcHRyKSA6IG1f
cHRyKHB0cikgeyBSZWZEZXJlZlRyYWl0czo6cmVmSWZOb3ROdWxsKHB0cik7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIFJlZlB0cihjb25zdCBSZWZQdHImIG8pIDogbV9wdHIoby5tX3B0cikgeyBSZWZE
ZXJlZlRyYWl0czo6cmVmSWZOb3ROdWxsKFB0clRyYWl0czo6dW53cmFwKG1fcHRyKSk7IH0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZLCB0eXBlbmFtZSBaPiBSZWZQdHIoY29u
c3QgUmVmUHRyPFgsIFksIFo+JiBvKSA6IG1fcHRyKG8uZ2V0KCkpIHsgUmVmRGVyZWZUcmFpdHM6
OnJlZklmTm90TnVsbChQdHJUcmFpdHM6OnVud3JhcChtX3B0cikpOyB9CiAKICAgICBBTFdBWVNf
SU5MSU5FIFJlZlB0cihSZWZQdHImJiBvKSA6IG1fcHRyKG8ubGVha1JlZigpKSB7IH0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPiBSZWZQdHIoUmVmUHRyPFgsIFk+JiYgbykg
OiBtX3B0cihvLmxlYWtSZWYoKSkgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5h
bWUgWSwgdHlwZW5hbWUgWj4gUmVmUHRyKFJlZlB0cjxYLCBZLCBaPiYmIG8pIDogbV9wdHIoby5s
ZWFrUmVmKCkpIHsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+IFJlZlB0
cihSZWY8WCwgWT4mJik7CiAKICAgICAvLyBIYXNoIHRhYmxlIGRlbGV0ZWQgdmFsdWVzLCB3aGlj
aCBhcmUgb25seSBjb25zdHJ1Y3RlZCBhbmQgbmV2ZXIgY29waWVkIG9yIGRlc3Ryb3llZC4KICAg
ICBSZWZQdHIoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3B0cihQdHJUcmFpdHM6Omhh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpKSB7IH0KICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gUHRyVHJhaXRzOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSht
X3B0cik7IH0KIAotICAgIEFMV0FZU19JTkxJTkUgflJlZlB0cigpIHsgZGVyZWZJZk5vdE51bGwo
UHRyVHJhaXRzOjpleGNoYW5nZShtX3B0ciwgbnVsbHB0cikpOyB9CisgICAgQUxXQVlTX0lOTElO
RSB+UmVmUHRyKCkgeyBSZWZEZXJlZlRyYWl0czo6ZGVyZWZJZk5vdE51bGwoUHRyVHJhaXRzOjpl
eGNoYW5nZShtX3B0ciwgbnVsbHB0cikpOyB9CiAKICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVy
biBQdHJUcmFpdHM6OnVud3JhcChtX3B0cik7IH0KIApAQCAtOTAsMTIgKzkzLDEyIEBAIHB1Ymxp
YzoKICAgICBSZWZQdHImIG9wZXJhdG9yPShjb25zdCBSZWZQdHImKTsKICAgICBSZWZQdHImIG9w
ZXJhdG9yPShUKik7CiAgICAgUmVmUHRyJiBvcGVyYXRvcj0oc3RkOjpudWxscHRyX3QpOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+IFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0
IFJlZlB0cjxYLCBZPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFksIHR5
cGVuYW1lIFo+IFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFJlZlB0cjxYLCBZLCBaPiYpOwogICAg
IFJlZlB0ciYgb3BlcmF0b3I9KFJlZlB0ciYmKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0
eXBlbmFtZSBZPiBSZWZQdHImIG9wZXJhdG9yPShSZWZQdHI8WCwgWT4mJik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWSwgdHlwZW5hbWUgWj4gUmVmUHRyJiBvcGVyYXRvcj0o
UmVmUHRyPFgsIFksIFo+JiYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFg+IFJlZlB0ciYgb3Bl
cmF0b3I9KFJlZjxYPiYmKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+
IHZvaWQgc3dhcChSZWZQdHI8WCwgWT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBl
bmFtZSBZLCB0eXBlbmFtZSBaPiB2b2lkIHN3YXAoUmVmUHRyPFgsIFksIFo+Jik7CiAKICAgICBS
ZWZQdHIgY29weVJlZigpICYmID0gZGVsZXRlOwogICAgIFJlZlB0ciBjb3B5UmVmKCkgY29uc3Qg
JiBXQVJOX1VOVVNFRF9SRVRVUk4geyByZXR1cm4gUmVmUHRyKG1fcHRyKTsgfQpAQCAtMTAzLDgg
KzEwNiw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCB1bnNwZWNpZmllZEJvb2xUeXBl
SW5zdGFuY2UoKSBjb25zdCB7IH0KIAotICAgIGZyaWVuZCBSZWZQdHIgYWRvcHRSZWY8VCwgUHRy
VHJhaXRzPihUKik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4gZnJpZW5k
IGNsYXNzIFJlZlB0cjsKKyAgICBmcmllbmQgUmVmUHRyIGFkb3B0UmVmPFQsIFB0clRyYWl0cywg
UmVmRGVyZWZUcmFpdHM+KFQqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZ
LCB0eXBlbmFtZSBaPiBmcmllbmQgY2xhc3MgUmVmUHRyOwogCiAgICAgZW51bSBBZG9wdFRhZyB7
IEFkb3B0IH07CiAgICAgUmVmUHRyKFQqIHB0ciwgQWRvcHRUYWcpIDogbV9wdHIocHRyKSB7IH0K
QEAgLTExMiwxNDIgKzExNSwxNDIgQEAgcHJpdmF0ZToKICAgICB0eXBlbmFtZSBQdHJUcmFpdHM6
OlN0b3JhZ2VUeXBlIG1fcHRyOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgotaW5saW5lIFJlZlB0cjxULCBVPjo6UmVmUHRyKFJl
ZjxYLCBZPiYmIHJlZmVyZW5jZSkKK2lubGluZSBSZWZQdHI8VCwgVSwgVj46OlJlZlB0cihSZWY8
WCwgWT4mJiByZWZlcmVuY2UpCiAgICAgOiBtX3B0cigmcmVmZXJlbmNlLmxlYWtSZWYoKSkKIHsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBUKiBSZWZQdHI8
VCwgVT46OmxlYWtSZWYoKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgVj4KK2lubGluZSBUKiBSZWZQdHI8VCwgVSwgVj46OmxlYWtSZWYoKQogewogICAgIHJldHVy
biBVOjpleGNoYW5nZShtX3B0ciwgbnVsbHB0cik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+Ci1pbmxpbmUgUmVmUHRyPFQsIFU+JiBSZWZQdHI8VCwgVT46Om9wZXJhdG9y
PShjb25zdCBSZWZQdHImIG8pCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWPgoraW5saW5lIFJlZlB0cjxULCBVLCBWPiYgUmVmUHRyPFQsIFUsIFY+OjpvcGVyYXRv
cj0oY29uc3QgUmVmUHRyJiBvKQogewogICAgIFJlZlB0ciBwdHIgPSBvOwogICAgIHN3YXAocHRy
KTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgotaW5saW5lIFJlZlB0cjxULCBV
PiYgUmVmUHRyPFQsIFU+OjpvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFgsIFk+JiBvKQordGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KK3RlbXBsYXRlPHR5cGVuYW1l
IFgsIHR5cGVuYW1lIFksIHR5cGVuYW1lIFo+CitpbmxpbmUgUmVmUHRyPFQsIFUsIFY+JiBSZWZQ
dHI8VCwgVSwgVj46Om9wZXJhdG9yPShjb25zdCBSZWZQdHI8WCwgWSwgWj4mIG8pCiB7CiAgICAg
UmVmUHRyIHB0ciA9IG87CiAgICAgc3dhcChwdHIpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBSZWZQdHI8VCwgVT4mIFJl
ZlB0cjxULCBVPjo6b3BlcmF0b3I9KFQqIG9wdHIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWPgoraW5saW5lIFJlZlB0cjxULCBVLCBWPiYgUmVmUHRyPFQsIFUs
IFY+OjpvcGVyYXRvcj0oVCogb3B0cikKIHsKICAgICBSZWZQdHIgcHRyID0gb3B0cjsKICAgICBz
d2FwKHB0cik7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPgotaW5saW5lIFJlZlB0cjxULCBVPiYgUmVmUHRyPFQsIFU+OjpvcGVyYXRvcj0o
c3RkOjpudWxscHRyX3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWPgoraW5saW5lIFJlZlB0cjxULCBVLCBWPiYgUmVmUHRyPFQsIFUsIFY+OjpvcGVyYXRvcj0o
c3RkOjpudWxscHRyX3QpCiB7Ci0gICAgZGVyZWZJZk5vdE51bGwoVTo6ZXhjaGFuZ2UobV9wdHIs
IG51bGxwdHIpKTsKKyAgICBWOjpkZXJlZklmTm90TnVsbChVOjpleGNoYW5nZShtX3B0ciwgbnVs
bHB0cikpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KLWlubGluZSBSZWZQdHI8VCwgVT4mIFJlZlB0cjxULCBVPjo6b3BlcmF0b3I9KFJl
ZlB0ciYmIG8pCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgor
aW5saW5lIFJlZlB0cjxULCBVLCBWPiYgUmVmUHRyPFQsIFUsIFY+OjpvcGVyYXRvcj0oUmVmUHRy
JiYgbykKIHsKICAgICBSZWZQdHIgcHRyID0gV1RGTW92ZShvKTsKICAgICBzd2FwKHB0cik7CiAg
ICAgcmV0dXJuICp0aGlzOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgot
dGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KLWlubGluZSBSZWZQdHI8VCwgVT4mIFJl
ZlB0cjxULCBVPjo6b3BlcmF0b3I9KFJlZlB0cjxYLCBZPiYmIG8pCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgordGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5h
bWUgWSwgdHlwZW5hbWUgWj4KK2lubGluZSBSZWZQdHI8VCwgVSwgVj4mIFJlZlB0cjxULCBVLCBW
Pjo6b3BlcmF0b3I9KFJlZlB0cjxYLCBZLCBaPiYmIG8pCiB7CiAgICAgUmVmUHRyIHB0ciA9IFdU
Rk1vdmUobyk7CiAgICAgc3dhcChwdHIpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVj4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFYsIHR5cGVuYW1lIFc+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotaW5saW5lIFJlZlB0cjxULCBW
PiYgUmVmUHRyPFQsIFY+OjpvcGVyYXRvcj0oUmVmPFU+JiYgcmVmZXJlbmNlKQoraW5saW5lIFJl
ZlB0cjxULCBWLCBXPiYgUmVmUHRyPFQsIFYsIFc+OjpvcGVyYXRvcj0oUmVmPFU+JiYgcmVmZXJl
bmNlKQogewogICAgIFJlZlB0ciBwdHIgPSBXVEZNb3ZlKHJlZmVyZW5jZSk7CiAgICAgc3dhcChw
dHIpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgVCwgdHlwZW5hbWUg
VT4KLXRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+Ci1pbmxpbmUgdm9pZCBSZWZQdHI8
VCwgVT46OnN3YXAoUmVmUHRyPFgsIFk+JiBvKQordGVtcGxhdGU8Y2xhc3MgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgVj4KK3RlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFksIHR5cGVuYW1l
IFo+CitpbmxpbmUgdm9pZCBSZWZQdHI8VCwgVSwgVj46OnN3YXAoUmVmUHRyPFgsIFksIFo+JiBv
KQogewogICAgIFU6OnN3YXAobV9wdHIsIG8ubV9wdHIpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZLCB0eXBlbmFtZSA9IHN0ZDo6
ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2FtZTxVLCBEdW1iUHRyVHJhaXRzPFQ+Pjo6dmFsdWUgfHwg
IXN0ZDo6aXNfc2FtZTxZLCBEdW1iUHRyVHJhaXRzPFg+Pjo6dmFsdWU+PgotaW5saW5lIHZvaWQg
c3dhcChSZWZQdHI8VCwgVT4mIGEsIFJlZlB0cjxYLCBZPiYgYikKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFgsIHR5cGVuYW1lIFksIHR5cGVu
YW1lIFosIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19zYW1lPFUsIER1bWJQ
dHJUcmFpdHM8VD4+Ojp2YWx1ZSB8fCAhc3RkOjppc19zYW1lPFksIER1bWJQdHJUcmFpdHM8WD4+
Ojp2YWx1ZT4+CitpbmxpbmUgdm9pZCBzd2FwKFJlZlB0cjxULCBVLCBWPiYgYSwgUmVmUHRyPFgs
IFksIFo+JiBiKQogewogICAgIGEuc3dhcChiKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KLWlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgUmVmUHRyPFQsIFU+JiBhLCBjb25zdCBSZWZQdHI8WCwgWT4mIGIpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBYLCB0eXBlbmFt
ZSBZLCB0eXBlbmFtZSBaPgoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWZQdHI8VCwg
VSwgVj4mIGEsIGNvbnN0IFJlZlB0cjxYLCBZLCBaPiYgYikKIHsgCiAgICAgcmV0dXJuIGEuZ2V0
KCkgPT0gYi5nZXQoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgWD4KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVmUHRyPFQsIFU+JiBhLCBY
KiBiKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5h
bWUgWD4KK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVmUHRyPFQsIFUsIFY+JiBhLCBY
KiBiKQogeyAKICAgICByZXR1cm4gYS5nZXQoKSA9PSBiOyAKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KLWlubGluZSBib29sIG9wZXJhdG9yPT0oVCog
YSwgY29uc3QgUmVmUHRyPFgsIFk+JiBiKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
WCwgdHlwZW5hbWUgWSwgdHlwZW5hbWUgWj4KK2lubGluZSBib29sIG9wZXJhdG9yPT0oVCogYSwg
Y29uc3QgUmVmUHRyPFgsIFksIFo+JiBiKQogewogICAgIHJldHVybiBhID09IGIuZ2V0KCk7IAog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBYLCB0eXBlbmFt
ZSBZPgotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWZQdHI8VCwgVT4mIGEsIGNvbnN0
IFJlZlB0cjxYLCBZPiYgYikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFYsIHR5cGVuYW1lIFgsIHR5cGVuYW1lIFksIHR5cGVuYW1lIFo+CitpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFJlZlB0cjxULCBVLCBWPiYgYSwgY29uc3QgUmVmUHRyPFgsIFksIFo+
JiBiKQogeyAKICAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOyAKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgWD4KLWlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgUmVmUHRyPFQsIFU+JiBhLCBYKiBiKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgWD4KK2lubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgUmVmUHRyPFQsIFUsIFY+JiBhLCBYKiBiKQogewogICAgIHJldHVybiBhLmdldCgpICE9
IGI7IAogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgot
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25zdCBSZWZQdHI8WCwgWT4mIGIpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZLCB0eXBlbmFtZSBaPgoraW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25zdCBSZWZQdHI8WCwgWSwgWj4mIGIpCiB7IAog
ICAgIHJldHVybiBhICE9IGIuZ2V0KCk7IAogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVID0gRHVtYlB0clRyYWl0czxUPiwgdHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KLWlubGlu
ZSBSZWZQdHI8VCwgVT4gc3RhdGljX3BvaW50ZXJfY2FzdChjb25zdCBSZWZQdHI8WCwgWT4mIHAp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVID0gRHVtYlB0clRyYWl0czxUPiwgdHlw
ZW5hbWUgViA9IERlZmF1bHRSZWZEZXJlZlRyYWl0czxUPiwgdHlwZW5hbWUgWCwgdHlwZW5hbWUg
WSwgdHlwZW5hbWUgWj4KK2lubGluZSBSZWZQdHI8VCwgVSwgVj4gc3RhdGljX3BvaW50ZXJfY2Fz
dChjb25zdCBSZWZQdHI8WCwgWSwgWj4mIHApCiB7IAotICAgIHJldHVybiBSZWZQdHI8VCwgVT4o
c3RhdGljX2Nhc3Q8VCo+KHAuZ2V0KCkpKTsKKyAgICByZXR1cm4gUmVmUHRyPFQsIFUsIFY+KHN0
YXRpY19jYXN0PFQqPihwLmdldCgpKSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPgotc3RydWN0IElzU21hcnRQdHI8UmVmUHRyPFQsIFU+PiB7Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KK3N0cnVjdCBJc1NtYXJ0UHRyPFJlZlB0
cjxULCBVLCBWPj4gewogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1ZSA9IHRydWU7CiB9
OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIFJlZlB0cjxULCBV
PiBhZG9wdFJlZihUKiBwKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgVj4KK2lubGluZSBSZWZQdHI8VCwgVSwgVj4gYWRvcHRSZWYoVCogcCkKIHsKICAgICBhZG9w
dGVkKHApOwotICAgIHJldHVybiBSZWZQdHI8VCwgVT4ocCwgUmVmUHRyPFQsIFU+OjpBZG9wdCk7
CisgICAgcmV0dXJuIFJlZlB0cjxULCBVLCBWPihwLCBSZWZQdHI8VCwgVSwgVj46OkFkb3B0KTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFJlZlB0cjxUPiBtYWtlUmVmUHRyKFQq
IHBvaW50ZXIpCkBAIC0yNjAsMTQgKzI2MywxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgUmVmUHRyPFQ+IG1ha2VSZWZQdHIoVCYgcmVmZXJlbmNlKQogICAgIHJldHVybiAmcmVmZXJl
bmNlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5
cGUsIHR5cGVuYW1lIFB0clRyYWl0cz4KLWlubGluZSBib29sIGlzKFJlZlB0cjxBcmdUeXBlLCBQ
dHJUcmFpdHM+JiBzb3VyY2UpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVu
YW1lIEFyZ1R5cGUsIHR5cGVuYW1lIFB0clRyYWl0cywgdHlwZW5hbWUgUmVmRGVyZWZUcmFpdHM+
CitpbmxpbmUgYm9vbCBpcyhSZWZQdHI8QXJnVHlwZSwgUHRyVHJhaXRzLCBSZWZEZXJlZlRyYWl0
cz4mIHNvdXJjZSkKIHsKICAgICByZXR1cm4gaXM8RXhwZWN0ZWRUeXBlPihzb3VyY2UuZ2V0KCkp
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5cGUs
IHR5cGVuYW1lIFB0clRyYWl0cz4KLWlubGluZSBib29sIGlzKGNvbnN0IFJlZlB0cjxBcmdUeXBl
LCBQdHJUcmFpdHM+JiBzb3VyY2UpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5
cGVuYW1lIEFyZ1R5cGUsIHR5cGVuYW1lIFB0clRyYWl0cywgdHlwZW5hbWUgUmVmRGVyZWZUcmFp
dHM+CitpbmxpbmUgYm9vbCBpcyhjb25zdCBSZWZQdHI8QXJnVHlwZSwgUHRyVHJhaXRzLCBSZWZE
ZXJlZlRyYWl0cz4mIHNvdXJjZSkKIHsKICAgICByZXR1cm4gaXM8RXhwZWN0ZWRUeXBlPihzb3Vy
Y2UuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IDQ0MjQyNjQxMjgwODZlMWYxOTY4
MTdhYzIxODVhOTQxOGRkY2VkMDEuLmJhMGEyNWQ2YWVjMjBkYTEyOTI5ZjBiMDQ4N2ViOWYxMWUx
ZjUxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTU4MCwyMiArNTgwLDEzIEBAIGJvb2wgQXVk
aW9CdWZmZXJTb3VyY2VOb2RlOjpwcm9wYWdhdGVzU2lsZW5jZSgpIGNvbnN0CiAKIHZvaWQgQXVk
aW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKFBhbm5lck5vZGVCYXNlKiBwYW5uZXJO
b2RlKQogewotICAgIGlmIChtX3Bhbm5lck5vZGUgIT0gcGFubmVyTm9kZSAmJiAhaGFzRmluaXNo
ZWQoKSkgewotICAgICAgICBpZiAocGFubmVyTm9kZSkKLSAgICAgICAgICAgIHBhbm5lck5vZGUt
PnJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKLSAgICAgICAgaWYgKG1fcGFubmVy
Tm9kZSkKLSAgICAgICAgICAgIG1fcGFubmVyTm9kZS0+ZGVyZWYoQXVkaW9Ob2RlOjpSZWZUeXBl
Q29ubmVjdGlvbik7Ci0KKyAgICBpZiAobV9wYW5uZXJOb2RlICE9IHBhbm5lck5vZGUgJiYgIWhh
c0ZpbmlzaGVkKCkpCiAgICAgICAgIG1fcGFubmVyTm9kZSA9IHBhbm5lck5vZGU7Ci0gICAgfQog
fQogCiB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y2xlYXJQYW5uZXJOb2RlKCkKIHsKLSAg
ICBpZiAobV9wYW5uZXJOb2RlKSB7Ci0gICAgICAgIG1fcGFubmVyTm9kZS0+ZGVyZWYoQXVkaW9O
b2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7Ci0gICAgICAgIG1fcGFubmVyTm9kZSA9IG51bGxwdHI7
Ci0gICAgfQorICAgIG1fcGFubmVyTm9kZSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlOjpmaW5pc2goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKaW5kZXggYmY1Y2VkNmYzYjI0ZmRm
MmM1M2E5YTFlZGEyNjMyMDFlODdjZjY0Yy4uMTdhNzAwNjMwNjUxNWRmMWY0ZTQ5ZWZkNTE3N2Nl
ZmVkNzMzMzQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCkBAIC0xNDEsOCArMTQxLDggQEAgcHJpdmF0ZToK
ICAgICBkb3VibGUgdG90YWxQaXRjaFJhdGUoKTsKIAogICAgIC8vIFdlIG9wdGlvbmFsbHkga2Vl
cCB0cmFjayBvZiBhIHBhbm5lciBub2RlIHdoaWNoIGhhcyBhIGRvcHBsZXIgc2hpZnQgdGhhdCBp
cyBpbmNvcnBvcmF0ZWQgaW50bwotICAgIC8vIHRoZSBwaXRjaCByYXRlLiBXZSBtYW51YWxseSBt
YW5hZ2UgcmVmLWNvdW50aW5nIGJlY2F1c2Ugd2Ugd2FudCB0byB1c2UgUmVmVHlwZUNvbm5lY3Rp
b24uCi0gICAgUGFubmVyTm9kZUJhc2UqIG1fcGFubmVyTm9kZSB7IG51bGxwdHIgfTsKKyAgICAv
LyB0aGUgcGl0Y2ggcmF0ZS4KKyAgICBBdWRpb0Nvbm5lY3Rpb25SZWZQdHI8UGFubmVyTm9kZUJh
c2U+IG1fcGFubmVyTm9kZTsKIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHByb2Nlc3MoKSB3
aXRoIHNldEJ1ZmZlcigpIHdoaWNoIGNhbiBjYXVzZSBkeW5hbWljIGNoYW5uZWwgY291bnQgY2hh
bmdlcy4KICAgICBtdXRhYmxlIExvY2sgbV9wcm9jZXNzTXV0ZXg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKaW5kZXggYjFjYWRhMDc3MjA2MDU2ZGFi
NzFkMjQ2YjZjZmFjYjQwOThjZTM0ZS4uMTBlNWYxMzYzOWFlNjg1YWUxYmNkODQ2MzIyNmI0OGQw
NDE0Y2RkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
LmNwcApAQCAtNTQ4LDcgKzU0OCw3IEBAIHZvaWQgQXVkaW9Ob2RlOjplbmFibGVPdXRwdXRzSWZO
ZWNlc3NhcnkoKQogdm9pZCBBdWRpb05vZGU6OmRpc2FibGVPdXRwdXRzSWZOZWNlc3NhcnkoKQog
ewogICAgIC8vIERpc2FibGUgb3V0cHV0cyBpZiBhcHByb3ByaWF0ZS4gV2UgZG8gdGhpcyBpZiB0
aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGlzIDAgb3IgMS4gVGhlIGNhc2UKLSAgICAvLyBvZiAw
IGlzIGZyb20gZmluaXNoRGVyZWYoKSB3aGVyZSB0aGVyZSBhcmUgbm8gY29ubmVjdGlvbnMgbGVm
dC4gVGhlIGNhc2Ugb2YgMSBpcyBmcm9tCisgICAgLy8gb2YgMCBpcyBmcm9tIGRlY3JlbWVudENv
bm5lY3Rpb25Db3VudFdpdGhMb2NrKCkgd2hlcmUgdGhlcmUgYXJlIG5vIGNvbm5lY3Rpb25zIGxl
ZnQuIFRoZSBjYXNlIG9mIDEgaXMgZnJvbQogICAgIC8vIEF1ZGlvTm9kZUlucHV0OjpkaXNhYmxl
KCkgd2hlcmUgd2Ugd2FudCB0byBkaXNhYmxlIG91dHB1dHMgd2hlbiB0aGVyZSdzIG9ubHkgb25l
IGNvbm5lY3Rpb24KICAgICAvLyBsZWZ0IGJlY2F1c2Ugd2UncmUgcmVhZHkgdG8gZ28gYXdheSwg
YnV0IGNhbid0IHF1aXRlIHlldC4KICAgICBpZiAobV9jb25uZWN0aW9uUmVmQ291bnQgPD0gMSAm
JiAhbV9pc0Rpc2FibGVkKSB7CkBAIC01NzQsMzEgKzU3NCwyMSBAQCB2b2lkIEF1ZGlvTm9kZTo6
ZGlzYWJsZU91dHB1dHMoKQogICAgICAgICBvdXRwdXQtPmRpc2FibGUoKTsKIH0KIAotdm9pZCBB
dWRpb05vZGU6OnJlZihSZWZUeXBlIHJlZlR5cGUpCit2b2lkIEF1ZGlvTm9kZTo6aW5jcmVtZW50
Q29ubmVjdGlvbkNvdW50KCkKIHsKLSAgICBzd2l0Y2ggKHJlZlR5cGUpIHsKLSAgICBjYXNlIFJl
ZlR5cGVOb3JtYWw6Ci0gICAgICAgICsrbV9ub3JtYWxSZWZDb3VudDsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBSZWZUeXBlQ29ubmVjdGlvbjoKLSAgICAgICAgKyttX2Nvbm5lY3Rpb25SZWZD
b3VudDsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgfQotCi0jaWYgREVCVUdfQVVESU9OT0RFX1JFRkVSRU5DRVMKLSAgICBm
cHJpbnRmKHN0ZGVyciwgIiVwOiAlZDogQXVkaW9Ob2RlOjpyZWYoJWQpICVkICVkXG4iLCB0aGlz
LCBub2RlVHlwZSgpLCByZWZUeXBlLCBtX25vcm1hbFJlZkNvdW50LCBtX2Nvbm5lY3Rpb25SZWZD
b3VudCk7Ci0jZW5kaWYKKyAgICArK21fY29ubmVjdGlvblJlZkNvdW50OwogCi0gICAgLy8gU2Vl
IHRoZSBkaXNhYmxpbmcgY29kZSBpbiBmaW5pc2hEZXJlZigpIGJlbG93LiBUaGlzIGhhbmRsZXMg
dGhlIGNhc2Ugd2hlcmUgYSBub2RlCisgICAgLy8gU2VlIHRoZSBkaXNhYmxpbmcgY29kZSBpbiBk
ZWNyZW1lbnRDb25uZWN0aW9uQ291bnRXaXRoTG9jaygpIGJlbG93LiBUaGlzIGhhbmRsZXMgdGhl
IGNhc2Ugd2hlcmUgYSBub2RlCiAgICAgLy8gaXMgYmVpbmcgcmUtY29ubmVjdGVkIGFmdGVyIGJl
aW5nIHVzZWQgYXQgbGVhc3Qgb25jZSBhbmQgZGlzY29ubmVjdGVkLgogICAgIC8vIEluIHRoaXMg
Y2FzZSwgd2UgbmVlZCB0byByZS1lbmFibGUuCi0gICAgaWYgKHJlZlR5cGUgPT0gUmVmVHlwZUNv
bm5lY3Rpb24pCi0gICAgICAgIGVuYWJsZU91dHB1dHNJZk5lY2Vzc2FyeSgpOworICAgIGVuYWJs
ZU91dHB1dHNJZk5lY2Vzc2FyeSgpOworCisjaWYgREVCVUdfQVVESU9OT0RFX1JFRkVSRU5DRVMK
KyAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiAlZDogQXVkaW9Ob2RlOjppbmNyZW1lbnRDb25uZWN0
aW9uQ291bnQoKSAlZCAlZFxuIiwgdGhpcywgbm9kZVR5cGUoKSwgbV9ub3JtYWxSZWZDb3VudCwg
bV9jb25uZWN0aW9uUmVmQ291bnQpOworI2VuZGlmCiB9CiAKLXZvaWQgQXVkaW9Ob2RlOjpkZXJl
ZihSZWZUeXBlIHJlZlR5cGUpCit2b2lkIEF1ZGlvTm9kZTo6ZGVjcmVtZW50Q29ubmVjdGlvbkNv
dW50KCkKIHsKICAgICAvLyBUaGUgYWN0dWFsbHkgd29yayBmb3IgZGVyZWYgaGFwcGVucyBjb21w
bGV0ZWx5IHdpdGhpbiB0aGUgYXVkaW8gY29udGV4dCdzIGdyYXBoIGxvY2suCiAgICAgLy8gSW4g
dGhlIGNhc2Ugb2YgdGhlIGF1ZGlvIHRocmVhZCwgd2UgbXVzdCB1c2UgYSB0cnlMb2NrIHRvIGF2
b2lkIGdsaXRjaGVzLgpAQCAtNjE1LDE1ICs2MDUsNzQgQEAgdm9pZCBBdWRpb05vZGU6OmRlcmVm
KFJlZlR5cGUgcmVmVHlwZSkKIAogICAgIGlmIChoYXNMb2NrKSB7CiAgICAgICAgIC8vIFRoaXMg
aXMgd2hlcmUgdGhlIHJlYWwgZGVyZWYgd29yayBoYXBwZW5zLgotICAgICAgICBmaW5pc2hEZXJl
ZihyZWZUeXBlKTsKKyAgICAgICAgZGVjcmVtZW50Q29ubmVjdGlvbkNvdW50V2l0aExvY2soKTsK
IAogICAgICAgICBpZiAobXVzdFJlbGVhc2VMb2NrKQogICAgICAgICAgICAgY29udGV4dCgpLnVu
bG9jaygpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIHdlcmUgdW5hYmxlIHRvIGdldCB0
aGUgbG9jaywgc28gcHV0IHRoaXMgaW4gYSBsaXN0IHRvIGZpbmlzaCB1cCBsYXRlci4KICAgICAg
ICAgQVNTRVJUKGNvbnRleHQoKS5pc0F1ZGlvVGhyZWFkKCkpOwotICAgICAgICBBU1NFUlQocmVm
VHlwZSA9PSBSZWZUeXBlQ29ubmVjdGlvbik7Ci0gICAgICAgIGNvbnRleHQoKS5hZGREZWZlcnJl
ZEZpbmlzaERlcmVmKHRoaXMpOworICAgICAgICBjb250ZXh0KCkuYWRkRGVmZXJyZWREZWNyZW1l
bnRDb25uZWN0aW9uQ291bnQodGhpcyk7CisgICAgfQorCisgICAgLy8gT25jZSBBdWRpb0NvbnRl
eHQ6OnVuaW5pdGlhbGl6ZSgpIGlzIGNhbGxlZCB0aGVyZSdzIG5vIG1vcmUgY2hhbmNlcyBmb3Ig
ZGVsZXRlTWFya2VkTm9kZXMoKSB0byBnZXQgY2FsbGVkLCBzbyB3ZSBjYWxsIGhlcmUuCisgICAg
Ly8gV2UgY2FuJ3QgY2FsbCBpbiBBdWRpb0NvbnRleHQ6On5BdWRpb0NvbnRleHQoKSBzaW5jZSBp
dCB3aWxsIG5ldmVyIGJlIGNhbGxlZCBhcyBsb25nIGFzIGFueSBBdWRpb05vZGUgaXMgYWxpdmUK
KyAgICAvLyBiZWNhdXNlIEF1ZGlvTm9kZXMga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgY29udGV4
dC4KKyAgICBpZiAoY29udGV4dCgpLmlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKQorICAgICAgICBj
b250ZXh0KCkuZGVsZXRlTWFya2VkTm9kZXMoKTsKK30KKwordm9pZCBBdWRpb05vZGU6OmRlY3Jl
bWVudENvbm5lY3Rpb25Db3VudFdpdGhMb2NrKCkKK3sKKyAgICBBU1NFUlQoY29udGV4dCgpLmlz
R3JhcGhPd25lcigpKTsKKworICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25SZWZDb3VudCA+IDApOwor
ICAgIC0tbV9jb25uZWN0aW9uUmVmQ291bnQ7CisKKyNpZiBERUJVR19BVURJT05PREVfUkVGRVJF
TkNFUworICAgIGZwcmludGYoc3RkZXJyLCAiJXA6ICVkOiBBdWRpb05vZGU6OmRlY3JlbWVudENv
bm5lY3Rpb25Db3VudFdpdGhMb2NrKCkgJWQgJWRcbiIsIHRoaXMsIG5vZGVUeXBlKCksIG1fbm9y
bWFsUmVmQ291bnQsIG1fY29ubmVjdGlvblJlZkNvdW50KTsKKyNlbmRpZgorCisgICAgaWYgKCFt
X2Nvbm5lY3Rpb25SZWZDb3VudCAmJiBtX25vcm1hbFJlZkNvdW50KQorICAgICAgICBkaXNhYmxl
T3V0cHV0c0lmTmVjZXNzYXJ5KCk7CisKKyAgICBtYXJrTm9kZUZvckRlbGV0aW9uSWZOZWNlc3Nh
cnkoKTsKK30KKwordm9pZCBBdWRpb05vZGU6Om1hcmtOb2RlRm9yRGVsZXRpb25JZk5lY2Vzc2Fy
eSgpCit7CisgICAgQVNTRVJUKGNvbnRleHQoKS5pc0dyYXBoT3duZXIoKSk7CisKKyAgICBpZiAo
bV9jb25uZWN0aW9uUmVmQ291bnQgfHwgbV9ub3JtYWxSZWZDb3VudCB8fCBtX2lzTWFya2VkRm9y
RGVsZXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEFsbCByZWZlcmVuY2VzIGFyZSBn
b25lIC0gd2UgbmVlZCB0byBnbyBhd2F5LgorICAgIGZvciAoYXV0byYgb3V0cHV0IDogbV9vdXRw
dXRzKQorICAgICAgICBvdXRwdXQtPmRpc2Nvbm5lY3RBbGwoKTsgLy8gVGhpcyB3aWxsIGRlcmVm
KCkgbm9kZXMgd2UncmUgY29ubmVjdGVkIHRvLgorCisgICAgLy8gTWFyayBmb3IgZGVsZXRpb24g
YXQgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gb3Igd2hlbiBjb250ZXh0IHNodXRzIGRvd24u
CisgICAgY29udGV4dCgpLm1hcmtGb3JEZWxldGlvbigqdGhpcyk7CisgICAgbV9pc01hcmtlZEZv
ckRlbGV0aW9uID0gdHJ1ZTsKKyAgICBkaWRCZWNvbWVNYXJrZWRGb3JEZWxldGlvbigpOworfQor
Cit2b2lkIEF1ZGlvTm9kZTo6cmVmKCkKK3sKKyAgICArK21fbm9ybWFsUmVmQ291bnQ7CisKKyNp
ZiBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUworICAgIGZwcmludGYoc3RkZXJyLCAiJXA6ICVk
OiBBdWRpb05vZGU6OnJlZigpICVkICVkXG4iLCB0aGlzLCBub2RlVHlwZSgpLCBtX25vcm1hbFJl
ZkNvdW50LCBtX2Nvbm5lY3Rpb25SZWZDb3VudCk7CisjZW5kaWYKK30KKwordm9pZCBBdWRpb05v
ZGU6OmRlcmVmKCkKK3sKKyAgICBBU1NFUlQoIWNvbnRleHQoKS5pc0F1ZGlvVGhyZWFkKCkpOwor
CisgICAgeworICAgICAgICBCYXNlQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250
ZXh0KCkpOworICAgICAgICAvLyBUaGlzIGlzIHdoZXJlIHRoZSByZWFsIGRlcmVmIHdvcmsgaGFw
cGVucy4KKyAgICAgICAgZGVyZWZXaXRoTG9jaygpOwogICAgIH0KIAogICAgIC8vIE9uY2UgQXVk
aW9Db250ZXh0Ojp1bmluaXRpYWxpemUoKSBpcyBjYWxsZWQgdGhlcmUncyBubyBtb3JlIGNoYW5j
ZXMgZm9yIGRlbGV0ZU1hcmtlZE5vZGVzKCkgdG8gZ2V0IGNhbGxlZCwgc28gd2UgY2FsbCBoZXJl
LgpAQCAtNjQwLDQyICs2ODksMTggQEAgVmFyaWFudDxSZWZQdHI8QmFzZUF1ZGlvQ29udGV4dD4s
IFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+PiBBdWRpb05vZGU6OmNvbnRleHQKICAgICByZXR1
cm4gbWFrZVJlZlB0cihtX2NvbnRleHQuZ2V0KCkpOwogfQogCi12b2lkIEF1ZGlvTm9kZTo6Zmlu
aXNoRGVyZWYoUmVmVHlwZSByZWZUeXBlKQordm9pZCBBdWRpb05vZGU6OmRlcmVmV2l0aExvY2so
KQogewogICAgIEFTU0VSVChjb250ZXh0KCkuaXNHcmFwaE93bmVyKCkpOwogICAgIAotICAgIHN3
aXRjaCAocmVmVHlwZSkgewotICAgIGNhc2UgUmVmVHlwZU5vcm1hbDoKLSAgICAgICAgQVNTRVJU
KG1fbm9ybWFsUmVmQ291bnQgPiAwKTsKLSAgICAgICAgLS1tX25vcm1hbFJlZkNvdW50OwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFJlZlR5cGVDb25uZWN0aW9uOgotICAgICAgICBBU1NFUlQo
bV9jb25uZWN0aW9uUmVmQ291bnQgPiAwKTsKLSAgICAgICAgLS1tX2Nvbm5lY3Rpb25SZWZDb3Vu
dDsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgfQorICAgIEFTU0VSVChtX25vcm1hbFJlZkNvdW50ID4gMCk7CisgICAgLS1t
X25vcm1hbFJlZkNvdW50OwogICAgIAogI2lmIERFQlVHX0FVRElPTk9ERV9SRUZFUkVOQ0VTCi0g
ICAgZnByaW50ZihzdGRlcnIsICIlcDogJWQ6IEF1ZGlvTm9kZTo6ZGVyZWYoJWQpICVkICVkXG4i
LCB0aGlzLCBub2RlVHlwZSgpLCByZWZUeXBlLCBtX25vcm1hbFJlZkNvdW50LCBtX2Nvbm5lY3Rp
b25SZWZDb3VudCk7CisgICAgZnByaW50ZihzdGRlcnIsICIlcDogJWQ6IEF1ZGlvTm9kZTo6ZGVy
ZWYoKSAlZCAlZFxuIiwgdGhpcywgbm9kZVR5cGUoKSwgbV9ub3JtYWxSZWZDb3VudCwgbV9jb25u
ZWN0aW9uUmVmQ291bnQpOwogI2VuZGlmCiAKLSAgICBpZiAoIW1fY29ubmVjdGlvblJlZkNvdW50
KSB7Ci0gICAgICAgIGlmICghbV9ub3JtYWxSZWZDb3VudCkgewotICAgICAgICAgICAgaWYgKCFt
X2lzTWFya2VkRm9yRGVsZXRpb24pIHsKLSAgICAgICAgICAgICAgICAvLyBBbGwgcmVmZXJlbmNl
cyBhcmUgZ29uZSAtIHdlIG5lZWQgdG8gZ28gYXdheS4KLSAgICAgICAgICAgICAgICBmb3IgKGF1
dG8mIG91dHB1dCA6IG1fb3V0cHV0cykKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0LT5kaXNj
b25uZWN0QWxsKCk7IC8vIFRoaXMgd2lsbCBkZXJlZigpIG5vZGVzIHdlJ3JlIGNvbm5lY3RlZCB0
by4KLQotICAgICAgICAgICAgICAgIC8vIE1hcmsgZm9yIGRlbGV0aW9uIGF0IGVuZCBvZiBlYWNo
IHJlbmRlciBxdWFudHVtIG9yIHdoZW4gY29udGV4dCBzaHV0cyBkb3duLgotICAgICAgICAgICAg
ICAgIGNvbnRleHQoKS5tYXJrRm9yRGVsZXRpb24oKnRoaXMpOwotICAgICAgICAgICAgICAgIG1f
aXNNYXJrZWRGb3JEZWxldGlvbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZGlkQmVjb21lTWFy
a2VkRm9yRGVsZXRpb24oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChyZWZU
eXBlID09IFJlZlR5cGVDb25uZWN0aW9uKQotICAgICAgICAgICAgZGlzYWJsZU91dHB1dHNJZk5l
Y2Vzc2FyeSgpOwotICAgIH0KKyAgICBtYXJrTm9kZUZvckRlbGV0aW9uSWZOZWNlc3NhcnkoKTsK
IH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpoYW5kbGVBdWRpb05vZGVPcHRpb25z
KGNvbnN0IEF1ZGlvTm9kZU9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IERlZmF1bHRBdWRpb05vZGVP
cHRpb25zJiBkZWZhdWx0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Tm9kZS5oCmluZGV4IDg0YzUwZDJjZTBkODNiNjMwMDE3N2MyNjE3YzRjMzkyY2ZjZjU3MjMuLjRm
YmY0YjA5NzQ3YzcwZDYyM2VhNDYzYmEzYmFhNTE1ZjRmOGRmNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtOTYsMTcgKzk2LDE0IEBAIHB1Ymxp
YzoKICAgICBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZVR5cGU7IH0K
ICAgICB2b2lkIHNldE5vZGVUeXBlKE5vZGVUeXBlKTsKIAotICAgIC8vIFdlIGhhbmRsZSBvdXIg
b3duIHJlZi1jb3VudGluZyBiZWNhdXNlIG9mIHRoZSB0aHJlYWRpbmcgaXNzdWVzIGFuZCBzdWJ0
bGUgbmF0dXJlIG9mCi0gICAgLy8gaG93IEF1ZGlvTm9kZXMgY2FuIGNvbnRpbnVlIHByb2Nlc3Np
bmcgKHBsYXlpbmcgb25lLXNob3Qgc291bmQpIGFmdGVyIHRoZXJlIGFyZSBubyBtb3JlCi0gICAg
Ly8gSmF2YVNjcmlwdCByZWZlcmVuY2VzIHRvIHRoZSBvYmplY3QuCi0gICAgZW51bSBSZWZUeXBl
IHsgUmVmVHlwZU5vcm1hbCwgUmVmVHlwZUNvbm5lY3Rpb24gfTsKLQogICAgIC8vIENhbiBiZSBj
YWxsZWQgZnJvbSBtYWluIHRocmVhZCBvciBjb250ZXh0J3MgYXVkaW8gdGhyZWFkLgotICAgIHZv
aWQgcmVmKFJlZlR5cGUgcmVmVHlwZSA9IFJlZlR5cGVOb3JtYWwpOwotICAgIHZvaWQgZGVyZWYo
UmVmVHlwZSByZWZUeXBlID0gUmVmVHlwZU5vcm1hbCk7CisgICAgdm9pZCByZWYoKTsKKyAgICB2
b2lkIGRlcmVmKCk7CisgICAgdm9pZCBpbmNyZW1lbnRDb25uZWN0aW9uQ291bnQoKTsKKyAgICB2
b2lkIGRlY3JlbWVudENvbm5lY3Rpb25Db3VudCgpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBm
cm9tIG1haW4gdGhyZWFkIG9yIGNvbnRleHQncyBhdWRpbyB0aHJlYWQuICBJdCBtdXN0IGJlIGNh
bGxlZCB3aGlsZSB0aGUgY29udGV4dCdzIGdyYXBoIGxvY2sgaXMgaGVsZC4KLSAgICB2b2lkIGZp
bmlzaERlcmVmKFJlZlR5cGUgcmVmVHlwZSk7CisgICAgdm9pZCBkZWNyZW1lbnRDb25uZWN0aW9u
Q291bnRXaXRoTG9jaygpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVNYXJrZWRGb3JEZWxl
dGlvbigpIHsgfQogCiAgICAgLy8gVGhlIEF1ZGlvTm9kZUlucHV0KHMpIChpZiBhbnkpIHdpbGwg
YWxyZWFkeSBoYXZlIHRoZWlyIGlucHV0IGRhdGEgYXZhaWxhYmxlIHdoZW4gcHJvY2VzcygpIGlz
IGNhbGxlZC4KQEAgLTIwMiw2ICsxOTksOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRJbnB1
dChzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Ob2RlSW5wdXQ+KTsKICAgICB2b2lkIGFkZE91dHB1dChz
dGQ6OnVuaXF1ZV9wdHI8QXVkaW9Ob2RlT3V0cHV0Pik7CiAKKyAgICB2b2lkIG1hcmtOb2RlRm9y
RGVsZXRpb25JZk5lY2Vzc2FyeSgpOworICAgIHZvaWQgZGVyZWZXaXRoTG9jaygpOworCiAgICAg
c3RydWN0IERlZmF1bHRBdWRpb05vZGVPcHRpb25zIHsKICAgICAgICAgdW5zaWduZWQgY2hhbm5l
bENvdW50OwogICAgICAgICBDaGFubmVsQ291bnRNb2RlIGNoYW5uZWxDb3VudE1vZGU7CkBAIC0y
NzAsNiArMjcwLDIzIEBAIHByaXZhdGU6CiAgICAgQ2hhbm5lbEludGVycHJldGF0aW9uIG1fY2hh
bm5lbEludGVycHJldGF0aW9uIHsgQ2hhbm5lbEludGVycHJldGF0aW9uOjpTcGVha2VycyB9Owog
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEF1ZGlvTm9kZUNvbm5lY3Rpb25SZWZE
ZXJlZlRyYWl0cyB7CisgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCByZWZJZk5vdE51bGwo
VCogcHRyKQorICAgIHsKKyAgICAgICAgaWYgKExJS0VMWShwdHIgIT0gbnVsbHB0cikpCisgICAg
ICAgICAgICBwdHItPmluY3JlbWVudENvbm5lY3Rpb25Db3VudCgpOworICAgIH0KKworICAgIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZGVyZWZJZk5vdE51bGwoVCogcHRyKQorICAgIHsKKyAg
ICAgICAgaWYgKExJS0VMWShwdHIgIT0gbnVsbHB0cikpCisgICAgICAgICAgICBwdHItPmRlY3Jl
bWVudENvbm5lY3Rpb25Db3VudCgpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
Cit1c2luZyBBdWRpb0Nvbm5lY3Rpb25SZWZQdHIgPSBSZWZQdHI8VCwgRHVtYlB0clRyYWl0czxU
PiwgQXVkaW9Ob2RlQ29ubmVjdGlvblJlZkRlcmVmVHJhaXRzPFQ+PjsKKwogU3RyaW5nIGNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKEF1ZGlvTm9kZTo6Tm9kZVR5cGUpOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZUlucHV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Ob2RlSW5wdXQuY3BwCmluZGV4IGVjMjcyZWY0YjkzZTYwZDhjMTA2YjM4MjJkZGYyYmQ2NDcy
NDEzZmEuLjgwMzQ5NmNjMWRjYjJhYTVkMGNiNDAzNzRkYTI1ZmU3MGVjYTNiZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQuY3BwCkBA
IC01OSw5ICs1OSw2IEBAIHZvaWQgQXVkaW9Ob2RlSW5wdXQ6OmNvbm5lY3QoQXVkaW9Ob2RlT3V0
cHV0KiBvdXRwdXQpCiAKICAgICBvdXRwdXQtPmFkZElucHV0KHRoaXMpOwogICAgIGNoYW5nZWRP
dXRwdXRzKCk7Ci0KLSAgICAvLyBTb21ib2R5IGhhcyBqdXN0IGNvbm5lY3RlZCB0byB1cywgc28g
Y291bnQgaXQgYXMgYSByZWZlcmVuY2UuCi0gICAgbm9kZSgpLT5yZWYoQXVkaW9Ob2RlOjpSZWZU
eXBlQ29ubmVjdGlvbik7CiB9CiAKIHZvaWQgQXVkaW9Ob2RlSW5wdXQ6OmRpc2Nvbm5lY3QoQXVk
aW9Ob2RlT3V0cHV0KiBvdXRwdXQpCkBAIC03NSwxNSArNzIsMTMgQEAgdm9pZCBBdWRpb05vZGVJ
bnB1dDo6ZGlzY29ubmVjdChBdWRpb05vZGVPdXRwdXQqIG91dHB1dCkKICAgICAvLyBGaXJzdCB0
cnkgdG8gZGlzY29ubmVjdCBmcm9tICJhY3RpdmUiIGNvbm5lY3Rpb25zLgogICAgIGlmIChtX291
dHB1dHMucmVtb3ZlKG91dHB1dCkpIHsKICAgICAgICAgY2hhbmdlZE91dHB1dHMoKTsKLSAgICAg
ICAgb3V0cHV0LT5yZW1vdmVJbnB1dCh0aGlzKTsKLSAgICAgICAgbm9kZSgpLT5kZXJlZihBdWRp
b05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsgLy8gTm90ZTogaXQncyBpbXBvcnRhbnQgdG8gcmV0
dXJuIGltbWVkaWF0ZWx5IGFmdGVyIGFsbCBkZXJlZigpIGNhbGxzIHNpbmNlIHRoZSBub2RlIG1h
eSBiZSBkZWxldGVkLgorICAgICAgICBvdXRwdXQtPnJlbW92ZUlucHV0KHRoaXMpOyAvLyBOb3Rl
OiBpdCdzIGltcG9ydGFudCB0byByZXR1cm4gaW1tZWRpYXRlbHkgYWZ0ZXIgdGhpcyBzaW5jZSB0
aGUgbm9kZSBtYXkgYmUgZGVsZXRlZC4KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAg
ICAvLyBPdGhlcndpc2UsIHRyeSB0byBkaXNjb25uZWN0IGZyb20gZGlzYWJsZWQgY29ubmVjdGlv
bnMuCiAgICAgaWYgKG1fZGlzYWJsZWRPdXRwdXRzLnJlbW92ZShvdXRwdXQpKSB7Ci0gICAgICAg
IG91dHB1dC0+cmVtb3ZlSW5wdXQodGhpcyk7Ci0gICAgICAgIG5vZGUoKS0+ZGVyZWYoQXVkaW9O
b2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7IC8vIE5vdGU6IGl0J3MgaW1wb3J0YW50IHRvIHJldHVy
biBpbW1lZGlhdGVseSBhZnRlciBhbGwgZGVyZWYoKSBjYWxscyBzaW5jZSB0aGUgbm9kZSBtYXkg
YmUgZGVsZXRlZC4KKyAgICAgICAgb3V0cHV0LT5yZW1vdmVJbnB1dCh0aGlzKTsgLy8gTm90ZTog
aXQncyBpbXBvcnRhbnQgdG8gcmV0dXJuIGltbWVkaWF0ZWx5IGFmdGVyIHRoaXMgc2luY2UgdGhl
IG5vZGUgbWF5IGJlIGRlbGV0ZWQuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcAppbmRl
eCA2YjZkZTBiYzIzNTQ4ODJhY2U0MjYxMmQ1NTNjNzIyNzAzM2M4NzVjLi5iN2VlMmRmZGZjMmEz
YzFiNmM0YmUxZTlkYjFmYjA2YTgyY2I1NTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZv
aWQgQXVkaW9Ob2RlT3V0cHV0Ojpwcm9wYWdhdGVDaGFubmVsQ291bnQoKQogICAgIAogICAgIGlm
IChpc0NoYW5uZWxDb3VudEtub3duKCkpIHsKICAgICAgICAgLy8gQW5ub3VuY2UgdG8gYW55IG5v
ZGVzIHdlJ3JlIGNvbm5lY3RlZCB0byB0aGF0IHdlIGNoYW5nZWQgb3VyIGNoYW5uZWwgY291bnQg
Zm9yIGl0cyBpbnB1dC4KLSAgICAgICAgZm9yIChhdXRvJiBpbnB1dCA6IG1faW5wdXRzKSB7Cisg
ICAgICAgIGZvciAoYXV0byYgaW5wdXQgOiBtX2lucHV0cy5rZXlzKCkpIHsKICAgICAgICAgICAg
IEF1ZGlvTm9kZSogY29ubmVjdGlvbk5vZGUgPSBpbnB1dC0+bm9kZSgpOwogICAgICAgICAgICAg
Y29ubmVjdGlvbk5vZGUtPmNoZWNrTnVtYmVyT2ZDaGFubmVsc0ZvcklucHV0KGlucHV0KTsKICAg
ICAgICAgfQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgQXVkaW9Ob2RlT3V0cHV0OjphZGRJbnB1
dChBdWRpb05vZGVJbnB1dCogaW5wdXQpCiAgICAgaWYgKCFpbnB1dCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9pbnB1dHMuYWRkKGlucHV0KTsKKyAgICBtX2lucHV0cy5hZGQoaW5wdXQsIGlu
cHV0LT5ub2RlKCkpOwogfQogCiB2b2lkIEF1ZGlvTm9kZU91dHB1dDo6cmVtb3ZlSW5wdXQoQXVk
aW9Ob2RlSW5wdXQqIGlucHV0KQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgQXVkaW9Ob2RlT3V0
cHV0OjpkaXNjb25uZWN0QWxsSW5wdXRzKCkKICAgICAKICAgICAvLyBBdWRpb05vZGVJbnB1dDo6
ZGlzY29ubmVjdCgpIGNoYW5nZXMgbV9pbnB1dHMgYnkgY2FsbGluZyByZW1vdmVJbnB1dCgpLgog
ICAgIHdoaWxlICghbV9pbnB1dHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEF1ZGlvTm9kZUlucHV0
KiBpbnB1dCA9ICptX2lucHV0cy5iZWdpbigpOworICAgICAgICBBdWRpb05vZGVJbnB1dCogaW5w
dXQgPSBtX2lucHV0cy5iZWdpbigpLT5rZXk7CiAgICAgICAgIGlucHV0LT5kaXNjb25uZWN0KHRo
aXMpOwogICAgIH0KIH0KQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIEF1ZGlvTm9kZU91dHB1dDo6
ZGlzYWJsZSgpCiAgICAgQVNTRVJUKGNvbnRleHQoKS5pc0dyYXBoT3duZXIoKSk7CiAKICAgICBp
ZiAobV9pc0VuYWJsZWQpIHsKLSAgICAgICAgZm9yIChhdXRvJiBpbnB1dCA6IG1faW5wdXRzKQor
ICAgICAgICBmb3IgKGF1dG8mIGlucHV0IDogbV9pbnB1dHMua2V5cygpKQogICAgICAgICAgICAg
aW5wdXQtPmRpc2FibGUodGhpcyk7CiAgICAgICAgIG1faXNFbmFibGVkID0gZmFsc2U7CiAgICAg
fQpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgQXVkaW9Ob2RlT3V0cHV0OjplbmFibGUoKQogICAg
IEFTU0VSVChjb250ZXh0KCkuaXNHcmFwaE93bmVyKCkpOwogCiAgICAgaWYgKCFtX2lzRW5hYmxl
ZCkgewotICAgICAgICBmb3IgKGF1dG8mIGlucHV0IDogbV9pbnB1dHMpCisgICAgICAgIGZvciAo
YXV0byYgaW5wdXQgOiBtX2lucHV0cy5rZXlzKCkpCiAgICAgICAgICAgICBpbnB1dC0+ZW5hYmxl
KHRoaXMpOwogICAgICAgICBtX2lzRW5hYmxlZCA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmgKaW5kZXggYjJiNzZl
OTE5OTYyNWFmZDAzZTY1Yzc3ZTJkNTY1ZGJhNzM2NzcxMC4uY2NmOTVlZGExODMxNzgyMGI5NWZl
MWJjOTlkNzEzNDdlOGYxOGRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oCkBAIC0xNDAsOCArMTQwLDkgQEAgcHJpdmF0ZToKICAg
ICAvLyBJZiBtX2lzSW5QbGFjZSBpcyB0cnVlLCB1c2UgbV9pblBsYWNlQnVzIGFzIHRoZSB2YWxp
ZCBBdWRpb0J1czsgSWYgZmFsc2UsIHVzZSB0aGUgZGVmYXVsdCBtX2ludGVybmFsQnVzLgogICAg
IGJvb2wgbV9pc0luUGxhY2UgeyBmYWxzZSB9OwogCi0gICAgSGFzaFNldDxBdWRpb05vZGVJbnB1
dCo+IG1faW5wdXRzOwotICAgIHR5cGVkZWYgSGFzaFNldDxBdWRpb05vZGVJbnB1dCo+OjppdGVy
YXRvciBJbnB1dHNJdGVyYXRvcjsKKyAgICB1c2luZyBJbnB1dHNNYXAgPSBIYXNoTWFwPEF1ZGlv
Tm9kZUlucHV0KiwgQXVkaW9Db25uZWN0aW9uUmVmUHRyPEF1ZGlvTm9kZT4+OworICAgIElucHV0
c01hcCBtX2lucHV0czsKKyAgICB0eXBlZGVmIElucHV0c01hcDo6aXRlcmF0b3IgSW5wdXRzSXRl
cmF0b3I7CiAgICAgYm9vbCBtX2lzRW5hYmxlZCB7IHRydWUgfTsKIAogICAgIC8vIEZvciB0aGUg
cHVycG9zZXMgb2YgcmVuZGVyaW5nLCBrZWVwcyB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGlucHV0
cyBhbmQgQXVkaW9QYXJhbXMgd2UncmUgY29ubmVjdGVkIHRvLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5jcHAKaW5kZXggN2M5NjE5
ZjVkY2Q1MTFiMGFhODFjNDk3NjgyMzRlNmVhN2E3MjE1My4uY2M3ZWFiZTU2ODAzMmRmMTBlMDY5
YWY4NDExNzhhM2U3ODE4NmRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgQmFzZUF1
ZGlvQ29udGV4dDo6fkJhc2VBdWRpb0NvbnRleHQoKQogICAgIGlmIChtX2F1dG9tYXRpY1B1bGxO
b2Rlc05lZWRVcGRhdGluZykKICAgICAgICAgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMu
cmVzaXplKG1fYXV0b21hdGljUHVsbE5vZGVzLnNpemUoKSk7CiAgICAgQVNTRVJUKG1fcmVuZGVy
aW5nQXV0b21hdGljUHVsbE5vZGVzLmlzRW1wdHkoKSk7Ci0gICAgLy8gRklYTUU6IENhbiB3ZSBh
c3NlcnQgdGhhdCBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0IGlzIGVtcHR5PworICAgIC8vIEZJ
WE1FOiBDYW4gd2UgYXNzZXJ0IHRoYXQgbV9kZWZlcnJlZEJyZWFrQ29ubmVjdGlvbkxpc3QgaXMg
ZW1wdHk/CiAKICAgICBpZiAoIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpIHsKICAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlQXVkaW9Qcm9kdWNlcigqdGhp
cyk7CkBAIC02ODEsNyArNjgxLDYgQEAgdm9pZCBCYXNlQXVkaW9Db250ZXh0OjpyZWZOb2RlKEF1
ZGlvTm9kZSYgbm9kZSkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEF1dG9Mb2Nr
ZXIgbG9ja2VyKCp0aGlzKTsKICAgICAKLSAgICBub2RlLnJlZihBdWRpb05vZGU6OlJlZlR5cGVD
b25uZWN0aW9uKTsKICAgICBtX3JlZmVyZW5jZWROb2Rlcy5hcHBlbmQoJm5vZGUpOwogfQogCkBA
IC02ODksOCArNjg4LDYgQEAgdm9pZCBCYXNlQXVkaW9Db250ZXh0OjpkZXJlZk5vZGUoQXVkaW9O
b2RlJiBub2RlKQogewogICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CiAgICAgCi0gICAgbm9k
ZS5kZXJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKLQogICAgIEFTU0VSVChtX3Jl
ZmVyZW5jZWROb2Rlcy5jb250YWlucygmbm9kZSkpOwogICAgIG1fcmVmZXJlbmNlZE5vZGVzLnJl
bW92ZUZpcnN0KCZub2RlKTsKIH0KQEAgLTY5OCw5ICs2OTUsNiBAQCB2b2lkIEJhc2VBdWRpb0Nv
bnRleHQ6OmRlcmVmTm9kZShBdWRpb05vZGUmIG5vZGUpCiB2b2lkIEJhc2VBdWRpb0NvbnRleHQ6
OmRlcmVmVW5maW5pc2hlZFNvdXJjZU5vZGVzKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkgJiYgaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpOwotICAgIGZvciAoYXV0byYgbm9kZSA6IG1f
cmVmZXJlbmNlZE5vZGVzKQotICAgICAgICBub2RlLT5kZXJlZihBdWRpb05vZGU6OlJlZlR5cGVD
b25uZWN0aW9uKTsKLQogICAgIG1fcmVmZXJlbmNlZE5vZGVzLmNsZWFyKCk7CiB9CiAKQEAgLTc3
OCwxMCArNzcyLDEwIEBAIGJvb2wgQmFzZUF1ZGlvQ29udGV4dDo6aXNHcmFwaE93bmVyKCkgY29u
c3QKICAgICByZXR1cm4gbV9ncmFwaE93bmVyVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKTsK
IH0KIAotdm9pZCBCYXNlQXVkaW9Db250ZXh0OjphZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlv
Tm9kZSogbm9kZSkKK3ZvaWQgQmFzZUF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWREZWNyZW1lbnRD
b25uZWN0aW9uQ291bnQoQXVkaW9Ob2RlKiBub2RlKQogewogICAgIEFTU0VSVChpc0F1ZGlvVGhy
ZWFkKCkpOwotICAgIG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QuYXBwZW5kKG5vZGUpOworICAg
IG1fZGVmZXJyZWRCcmVha0Nvbm5lY3Rpb25MaXN0LmFwcGVuZChub2RlKTsKIH0KIAogdm9pZCBC
YXNlQXVkaW9Db250ZXh0OjpoYW5kbGVQcmVSZW5kZXJUYXNrcyhjb25zdCBBdWRpb0lPUG9zaXRp
b24mIG91dHB1dFBvc2l0aW9uKQpAQCAtODIxLDcgKzgxNSw3IEBAIHZvaWQgQmFzZUF1ZGlvQ29u
dGV4dDo6aGFuZGxlUG9zdFJlbmRlclRhc2tzKCkKICAgICBib29sIG11c3RSZWxlYXNlTG9jazsK
ICAgICBpZiAodHJ5TG9jayhtdXN0UmVsZWFzZUxvY2spKSB7CiAgICAgICAgIC8vIFRha2UgY2Fy
ZSBvZiBmaW5pc2hpbmcgYW55IGRlcmVmcyB3aGVyZSB0aGUgdHJ5TG9jaygpIGZhaWxlZCBwcmV2
aW91c2x5LgotICAgICAgICBoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpOworICAgICAgICBo
YW5kbGVEZWZlcnJlZERlY3JlbWVudENvbm5lY3Rpb25Db3VudHMoKTsKIAogICAgICAgICAvLyBE
eW5hbWljYWxseSBjbGVhbiB1cCBub2RlcyB3aGljaCBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KICAg
ICAgICAgZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKCk7CkBAIC04NDEsMTMgKzgzNSwxMyBAQCB2
b2lkIEJhc2VBdWRpb0NvbnRleHQ6OmhhbmRsZVBvc3RSZW5kZXJUYXNrcygpCiAgICAgfQogfQog
Ci12b2lkIEJhc2VBdWRpb0NvbnRleHQ6OmhhbmRsZURlZmVycmVkRmluaXNoRGVyZWZzKCkKK3Zv
aWQgQmFzZUF1ZGlvQ29udGV4dDo6aGFuZGxlRGVmZXJyZWREZWNyZW1lbnRDb25uZWN0aW9uQ291
bnRzKCkKIHsKICAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpICYmIGlzR3JhcGhPd25lcigpKTsK
LSAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0KQotICAgICAg
ICBub2RlLT5maW5pc2hEZXJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKKyAgICBm
b3IgKGF1dG8mIG5vZGUgOiBtX2RlZmVycmVkQnJlYWtDb25uZWN0aW9uTGlzdCkKKyAgICAgICAg
bm9kZS0+ZGVjcmVtZW50Q29ubmVjdGlvbkNvdW50V2l0aExvY2soKTsKICAgICAKLSAgICBtX2Rl
ZmVycmVkRmluaXNoRGVyZWZMaXN0LmNsZWFyKCk7CisgICAgbV9kZWZlcnJlZEJyZWFrQ29ubmVj
dGlvbkxpc3QuY2xlYXIoKTsKIH0KIAogdm9pZCBCYXNlQXVkaW9Db250ZXh0OjptYXJrRm9yRGVs
ZXRpb24oQXVkaW9Ob2RlJiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaAppbmRleCBiYzg4NTk2N2E3YTQzNWM0YjkxYjM5M2Vl
ZWVmYzQ5MTkzNjUxNDJiLi44ODY1ZWJmOGQ2YTBhZTNkZWM3MTNjMDc5ZjE1N2RlMDJiYTM3ZWEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0Nv
bnRleHQuaApAQCAtMjI5LDExICsyMjksMTEgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdGhl
IG1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzIHdlIGNhbiBzdXBwb3J0LgogICAgIHN0YXRpYyB1
bnNpZ25lZCBtYXhOdW1iZXJPZkNoYW5uZWxzKCkgeyByZXR1cm4gTWF4TnVtYmVyT2ZDaGFubmVs
czsgfQogICAgIAotICAgIC8vIEluIEF1ZGlvTm9kZTo6ZGVyZWYoKSBhIHRyeUxvY2soKSBpcyB1
c2VkIGZvciBjYWxsaW5nIGZpbmlzaERlcmVmKCksIGJ1dCBpZiBpdCBmYWlscyBrZWVwIHRyYWNr
IGhlcmUuCi0gICAgdm9pZCBhZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSopOworICAg
IC8vIEluIEF1ZGlvTm9kZTo6ZGVjcmVtZW50Q29ubmVjdGlvbkNvdW50KCkgYSB0cnlMb2NrKCkg
aXMgdXNlZCBmb3IgY2FsbGluZyBkZWNyZW1lbnRDb25uZWN0aW9uQ291bnRXaXRoTG9jaygpLCBi
dXQgaWYgaXQgZmFpbHMga2VlcCB0cmFjayBoZXJlLgorICAgIHZvaWQgYWRkRGVmZXJyZWREZWNy
ZW1lbnRDb25uZWN0aW9uQ291bnQoQXVkaW9Ob2RlKik7CiAKLSAgICAvLyBJbiB0aGUgYXVkaW8g
dGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5k
bGVEZWZlcnJlZEZpbmlzaERlcmVmcygpLgotICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRGaW5pc2hE
ZXJlZnMoKTsKKyAgICAvLyBJbiB0aGUgYXVkaW8gdGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNo
IHJlbmRlciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5kbGVEZWZlcnJlZERlY3JlbWVudENvbm5lY3Rp
b25Db3VudHMoKS4KKyAgICB2b2lkIGhhbmRsZURlZmVycmVkRGVjcmVtZW50Q29ubmVjdGlvbkNv
dW50cygpOwogCiAgICAgLy8gT25seSBhY2Nlc3NlZCB3aGVuIHRoZSBncmFwaCBsb2NrIGlzIGhl
bGQuCiAgICAgdm9pZCBtYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5nSnVuY3Rp
b24qKTsKQEAgLTM5NywxMCArMzk3LDggQEAgcHJpdmF0ZToKICAgICAvLyBPbmx5IGFjY2Vzc2Vk
IGluIHRoZSBhdWRpbyB0aHJlYWQuCiAgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fZmluaXNoZWRO
b2RlczsKIAotICAgIC8vIFdlIGRvbid0IHVzZSBSZWZQdHI8QXVkaW9Ob2RlPiBoZXJlIGJlY2F1
c2UgQXVkaW9Ob2RlIGhhcyBhIG1vcmUgY29tcGxleCByZWYoKSAvIGRlcmVmKCkgaW1wbGVtZW50
YXRpb24KLSAgICAvLyB3aXRoIGFuIG9wdGlvbmFsIGFyZ3VtZW50IGZvciByZWZUeXBlLiAgV2Ug
bmVlZCB0byB1c2UgdGhlIHNwZWNpYWwgcmVmVHlwZTogUmVmVHlwZUNvbm5lY3Rpb24KICAgICAv
LyBFaXRoZXIgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLCBvciBvbiB0aGUg
bWFpbiB0aHJlYWQgd2hlbiB0aGUgYXVkaW8gdGhyZWFkIGhhcyBmaW5pc2hlZC4KLSAgICBWZWN0
b3I8QXVkaW9Ob2RlKj4gbV9yZWZlcmVuY2VkTm9kZXM7CisgICAgVmVjdG9yPEF1ZGlvQ29ubmVj
dGlvblJlZlB0cjxBdWRpb05vZGU+PiBtX3JlZmVyZW5jZWROb2RlczsKIAogICAgIC8vIEFjY3Vt
dWxhdGUgbm9kZXMgd2hpY2ggbmVlZCB0byBiZSBkZWxldGVkIGhlcmUuCiAgICAgLy8gVGhpcyBp
cyBjb3BpZWQgdG8gbV9ub2Rlc1RvRGVsZXRlIGF0IHRoZSBlbmQgb2YgYSByZW5kZXIgY3ljbGUg
aW4gaGFuZGxlUG9zdFJlbmRlclRhc2tzKCksIHdoZXJlIHdlJ3JlIGFzc3VyZWQgb2YgYSBzdGFi
bGUgZ3JhcGgKQEAgLTQyNyw3ICs0MjUsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8QXVkaW9O
b2RlKj4gbV9hdXRvbWF0aWNQdWxsTm9kZXM7CiAgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVu
ZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzOwogICAgIC8vIE9ubHkgYWNjZXNzZWQgaW4gdGhlIGF1
ZGlvIHRocmVhZC4KLSAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9kZWZlcnJlZEZpbmlzaERlcmVm
TGlzdDsKKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9kZWZlcnJlZEJyZWFrQ29ubmVjdGlvbkxp
c3Q7CiAgICAgVmVjdG9yPFZlY3RvcjxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+PiBtX3N0YXRl
UmVhY3Rpb25zOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uPiBt
X21lZGlhU2Vzc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4IDlhYzdhZDNmYjdmZTUxYTNmNzAxN2I0
ZGFlZGNlMzQxZGE1MDEwZjQuLjIzN2U5MDE3MDIyZTcxNjMyZTY0MDU3NjNlMDkzMGFlY2IwNTNi
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3Jp
cHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtMTgzLDEyICsxODMsMTAgQEAgdm9pZCBTY3JpcHRQcm9j
ZXNzb3JOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgLy8gV2hlbiB0
aGlzIGhhcHBlbnMsIGZpcmUgYW4gZXZlbnQgYW5kIHN3YXAgYnVmZmVycy4KICAgICBpZiAoIW1f
YnVmZmVyUmVhZFdyaXRlSW5kZXgpIHsKICAgICAgICAgLy8gUmVmZXJlbmNlIG91cnNlbGYgc28g
d2UgZG9uJ3QgYWNjaWRlbnRhbGx5IGdldCBkZWxldGVkIGJlZm9yZSBmaXJlUHJvY2Vzc0V2ZW50
KCkgZ2V0cyBjYWxsZWQuCi0gICAgICAgIGF1dG8gcHJvdGVjdG9yID0gbWFrZVJlZigqdGhpcyk7
Ci0KICAgICAgICAgLy8gV2Ugb25seSB3YWl0IGZvciBzY3JpcHQgY29kZSBleGVjdXRpb24gd2hl
biB0aGUgY29udGV4dCBpcyBhbiBvZmZsaW5lIG9uZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4K
ICAgICAgICAgaWYgKGNvbnRleHQoKS5pc09mZmxpbmVDb250ZXh0KCkpIHsKICAgICAgICAgICAg
IEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzLCAmc2VtYXBob3JlLCBkb3VibGVCdWZmZXJJbmRleCA9IG1fZG91YmxlQnVmZmVySW5k
ZXhdIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsICZzZW1hcGhvcmUsIGRv
dWJsZUJ1ZmZlckluZGV4ID0gbV9kb3VibGVCdWZmZXJJbmRleCwgcHJvdGVjdG9yID0gbWFrZVJl
ZigqdGhpcyldIHsKICAgICAgICAgICAgICAgICBmaXJlUHJvY2Vzc0V2ZW50KGRvdWJsZUJ1ZmZl
ckluZGV4KTsKICAgICAgICAgICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7CiAgICAgICAgICAg
ICB9KTsKQEAgLTIwMiw3ICsyMDAsNyBAQCB2b2lkIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnByb2Nl
c3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGRvdWJsZUJ1
ZmZlckluZGV4ID0gbV9kb3VibGVCdWZmZXJJbmRleCwgcHJvdGVjdG9yID0gV1RGTW92ZShwcm90
ZWN0b3IpXSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBkb3VibGVCdWZm
ZXJJbmRleCA9IG1fZG91YmxlQnVmZmVySW5kZXgsIHByb3RlY3RvciA9IG1ha2VSZWYoKnRoaXMp
XSB7CiAgICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2Nr
KTsKICAgICAgICAgICAgICAgICBmaXJlUHJvY2Vzc0V2ZW50KGRvdWJsZUJ1ZmZlckluZGV4KTsK
ICAgICAgICAgICAgIH0pOwo=
</data>
<flag name="commit-queue"
          id="425422"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409645</attachid>
            <date>2020-09-24 18:09:02 -0700</date>
            <delta_ts>2020-09-24 18:37:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216945-20200924180901.patch</filename>
            <type>text/plain</type>
            <size>48102</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
Mzc3MzlkZGM1NGYxNjhjZDRmOTAwZTY1MTJjYzA3NmQyMTIxYmUxLi43ZWRkMzRkYWRiNDIyYWNh
YTFjY2I0MWM3M2Q4OTEzMzZhZWVlNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMC0wOS0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEdldCByaWQgb2YgQXVkaW9Ob2RlOjpSZWZUeXBlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY5NDUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
OgorICAgICAgICAoSlNDOjpDYWNoZWRSZWZQdHI6OmRlY29kZSBjb25zdCk6CisKIDIwMjAtMDkt
MjQgIEJhc3VrZSBTdXp1a2kgIDxiYXN1a2Uuc3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtQ
bGF5U3RhdGlvbl0gU3RvcCByYWlzaW5nIFNJR1BJUEUgd2hlbiBjbGllbnQgc2lkZSBvZiBSZW1v
dGVJbnNwZWN0b3IgZGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwppbmRleCBhYjgwMjA1NjZiMDQzZTY1MTcwZWI3NmRiNDI3OTUwZmI1
OTZlMjIwLi42ODJkMTc4MDZhZjExMDJjNGM1OTFkOTcxZjYyNmNkOTgwMzZjNTBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMzIEBACisyMDIwLTA5LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgR2V0IHJpZCBvZiBBdWRpb05vZGU6OlJlZlR5cGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk0NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aGlyZCB0ZW1wbGF0ZSBwYXJh
bWV0ZXIgdG8gUmVmUHRyIGFsbG93aW5nIHRvIGRlZmluZSB0aGUgdHJhaXRzCisgICAgICAgIGZy
b20gaW5jcmVtZW50aW5nIC8gZGVjcmVtZW50aW5nIHRoZSByZWZjb3VudC4gVGhlIGRlZmF1bHQg
dHJhaXRzCisgICAgICAgIGNhbGwgcmVmKCkgLyBkZXJlZigpIGJ1dCB0aGlzIGNhbiBub3cgYmUg
Y3VzdG9taXplZCB0byBjYWxsIG90aGVyCisgICAgICAgIGZ1bmN0aW9ucy4KKworICAgICAgICAq
IHd0Zi9Db21wYWN0UmVmUHRyVHVwbGUuaDoKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOgorICAg
ICAgICAqIHd0Zi9SZWZQdHIuaDoKKyAgICAgICAgKFdURjo6RGVmYXVsdFJlZkRlcmVmVHJhaXRz
OjpyZWZJZk5vdE51bGwpOgorICAgICAgICAoV1RGOjpEZWZhdWx0UmVmRGVyZWZUcmFpdHM6OmRl
cmVmSWZOb3ROdWxsKToKKyAgICAgICAgKFdURjo6UmVmUHRyOjpSZWZQdHIpOgorICAgICAgICAo
V1RGOjpSZWZQdHI6On5SZWZQdHIpOgorICAgICAgICAoV1RGOjpWPjo6UmVmUHRyKToKKyAgICAg
ICAgKFdURjo6Vj46OmxlYWtSZWYpOgorICAgICAgICAoV1RGOjo9KToKKyAgICAgICAgKFdURjo6
Vj46OnN3YXApOgorICAgICAgICAoV1RGOjpzd2FwKToKKyAgICAgICAgKFdURjo6b3BlcmF0b3I9
PSk6CisgICAgICAgIChXVEY6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV1RGOjpzdGF0aWNfcG9p
bnRlcl9jYXN0KToKKyAgICAgICAgKFdURjo6YWRvcHRSZWYpOgorICAgICAgICAoV1RGOjppcyk6
CisKIDIwMjAtMDktMjQgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtMRkNdW0ludGVncmF0aW9uXSBFbmFibGUgb24gQXBwbGUgV2luZG93cyBwb3J0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNzMwZjY1MjdmMTc1YjlhM2FmMzg1OGIwN2I4MzU4MWI4NmUxZmIzMy4uZTJkYWFm
NWRjZjE1NWVkNWFiZDNjMmU1YjA2OTMyMzY2YTBmMGE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDcyIEBACisyMDIwLTA5LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgR2V0IHJpZCBvZiBBdWRpb05vZGU6OlJlZlR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk0NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZpb3VzbHksIHRoZSBub2RlIGhhZCByZWYo
KS9kZXJlZigpIGZ1bmN0aW9uIHRha2luZyBhIFJlZlR5cGUgcGFyYW1ldGVyLgorICAgICAgICBU
aGUgUmVmVHlwZSB3b3VsZCBiZSB1c2VkIHRvIGRldGVybWluZSB3aGljaCBjb3VudGVyIHNob3Vs
ZCBiZSBpbmNyZW1lbnRlZAorICAgICAgICBvciBkZWNyZW1lbnRlZDogZWl0aGVyIG1fbm9ybWFs
UmVmQ291bnQgb3IgbV9jb25uZWN0aW9uUmVmQ291bnQuCisKKyAgICAgICAgSW4gYSBwcmV2aW91
cyBwYXRjaCwgSSBoYXZlIGFscmVhZHkgcG9ydGVkIGNvZGUgdGhhdCB3YXMgY2FsbGluZyByZWYo
KSAvIGRlcmVmKCkKKyAgICAgICAgZXhwbGljaXRseSB3aXRoIFJlZlR5cGVOb3JtYWwgdG8gdXNl
IFJlZlB0cjw+IGluc3RlYWQuIFRoaXMgcGF0Y2ggZ29lcyBmdXJ0aGVyIGJ5OgorICAgICAgICAx
LiBEcm9wcGluZyB0aGUgUmVmVHlwZSBwYXJhbWV0ZXIgdG8gcmVmKCkgLyBkZXJlZigpLiByZWYo
KSAvIGRlcmVmKCkgbm93IGluY3JlbWVudAorICAgICAgICAgICBvciBkZWNyZW1lbnQgbV9ub3Jt
YWxSZWZDb3VudCBvbmx5LiBDbGllbnRzIGFyZSBleHBlY3RlZCB0byB1c2UgUmVmUHRyIHRvIGhh
bmRsZQorICAgICAgICAgICByZWYgY291bnRpbmcuCisgICAgICAgIDIuIEludHJvZHVjZSBuZXcg
aW5jcmVtZW50Q29ubmVjdGlvbkNvdW50KCkgLyBkZWNyZW1lbnRDb25uZWN0aW9uQ291bnQoKSB0
byBpbmNyZW1lbnQKKyAgICAgICAgICAgb3IgZGVjcmVtZW50IG1fY29ubmVjdGlvblJlZkNvdW50
LiBUbyByZWR1Y2UgdGhlIGNoYW5jZSBvZiBsZWFrYWdlLCBjbGllbnRzIHNob3VsZAorICAgICAg
ICAgICBub3QgY2FsbCB0aGVzZSBmdW5jdGlvbnMgZGlyZWN0bHkgYW55bW9yZS4gSW5zdGVhZCwg
dGhleSB1c2UgdXNlIHRoZSBuZXcKKyAgICAgICAgICAgQXVkaW9Db25uZWN0aW9uUmVmUHRyPD4g
cG9pbnRlciB0eXBlIHRvIGhhbmRsZSB0aGUgY29ubmVjdGlvbiByZWYgY291bnRpbmcgZm9yIHRo
ZW0uCisgICAgICAgICAgIEF1ZGlvQ29ubmVjdGlvblJlZlB0cjw+IGlzIGEgUmVmUHRyPD4gd2hp
Y2ggc3BlY2lhbCB0cmFpdHMgY2F1c2luZyBpbmNyZW1lbnRDb25uZWN0aW9uQ291bnQoKQorICAg
ICAgICAgICBhbmQgZGVjcmVtZW50Q29ubmVjdGlvbkNvdW50KCkgdG8gZ2V0IGNhbGxlZCBvbiB0
aGUgQXVkaW9Ob2RlIGluc3RlYWQgb2YgcmVmKCkgYW5kCisgICAgICAgICAgIGRlcmVmKCkuCisK
KyAgICAgICAgSSBiZWxpZXZlIHRoaXMgbmV3IGRlc2lnbiBpcyBhIGJpdCBzaW1wbGVyIHRvIHJl
YXNvbiBhYm91dCBhbmQgbGVzcyBwcm9uZSB0byBsZWFrcy4KKyAgICAgICAgVGhlcmUgaXMgbm8g
bG9uZ2VyIGFueSBjb2RlIGV4cGxpY2l0bHkgcmVmJ2luZyBvciBkZXJlZidpbmcgdGhlIEF1ZGlv
Tm9kZXMuIEluc3RlYWQsCisgICAgICAgIFJlZlB0cjw+IG9yIEF1ZGlvQ29ubmVjdGlvblJlZlB0
cjw+IGlzIHVzZWQgdG8gaW5jcmVtZW50L2RlY3JlbWVudCB0aGUgcmlnaHQgaW50ZXJuYWwKKyAg
ICAgICAgY291bnQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBXZWItZmFjaW5nIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0
UGFubmVyTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmNs
ZWFyUGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNv
dXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmRpc2FibGVPdXRwdXRzSWZOZWNlc3NhcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjppbmNyZW1lbnRDb25uZWN0aW9uQ291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpkZWNyZW1lbnRDb25uZWN0aW9uQ291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpkZWNyZW1lbnRDb25uZWN0aW9uQ291bnRXaXRo
TG9jayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6Om1hcmtOb2RlRm9yRGVsZXRpb25J
Zk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OnJlZik6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb05vZGU6OmRlcmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9k
ZTo6ZGVyZWZXaXRoTG9jayk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUNvbm5lY3Rpb25SZWZEZXJlZlRyYWl0czo6
cmVmSWZOb3ROdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUNvbm5lY3Rpb25SZWZE
ZXJlZlRyYWl0czo6ZGVyZWZJZk5vdE51bGwpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Ob2RlSW5wdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6OmNv
bm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6OmRpc2Nvbm5lY3QpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvTm9kZU91dHB1dDo6cHJvcGFnYXRlQ2hhbm5lbENvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvTm9kZU91dHB1dDo6YWRkSW5wdXQpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Ob2RlT3V0cHV0OjpkaXNjb25uZWN0QWxsSW5wdXRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvTm9kZU91dHB1dDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05v
ZGVPdXRwdXQ6OmVuYWJsZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVP
dXRwdXQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6fkJhc2VBdWRpb0NvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6cmVmTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpCYXNlQXVkaW9Db250ZXh0OjpkZXJlZk5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QmFzZUF1ZGlvQ29udGV4dDo6ZGVyZWZVbmZpbmlzaGVkU291cmNlTm9kZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWREZWNyZW1lbnRDb25uZWN0
aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6aGFuZGxlUG9z
dFJlbmRlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb0NvbnRleHQ6OmhhbmRs
ZURlZmVycmVkRGVjcmVtZW50Q29ubmVjdGlvbkNvdW50cyk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nv
ck5vZGU6OnByb2Nlc3MpOgorCiAyMDIwLTA5LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgVXNlIG1vcmUgaW5saW5lIGluaXRpYWxpemF0aW9uIGFuZCBjb25z
dGV4cHIgaW4gV2ViQXVkaW8gY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHlwZXMuY3BwCmluZGV4IDU0NzU3NjQ2ZDcwMjBkNTBlYmU3ZTQ1ZjFjMzI4OTk5YzY0
MGY2NGMuLmU0NGMxYTM5Nzk0YjI0YmNkODdhZWYzOThhN2MyODI1N2VmMGM1MmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTU1NCwxMCAr
NTU0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBp
ZiAoaXNOZXdBbGxvY2F0aW9uKSB7CiAgICAgICAgICAgICBkZWNvZGVyLmFkZEZpbmFsaXplcihb
PV0gewotICAgICAgICAgICAgICAgIGRlcmVmSWZOb3ROdWxsKGRlY29kZWRQdHIpOworICAgICAg
ICAgICAgICAgIFdURjo6RGVmYXVsdFJlZkRlcmVmVHJhaXRzPFNvdXJjZT46OmRlcmVmSWZOb3RO
dWxsKGRlY29kZWRQdHIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLSAgICAgICAgcmVm
SWZOb3ROdWxsKGRlY29kZWRQdHIpOworICAgICAgICBXVEY6OkRlZmF1bHRSZWZEZXJlZlRyYWl0
czxTb3VyY2U+OjpyZWZJZk5vdE51bGwoZGVjb2RlZFB0cik7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihkZWNvZGVkUHRyKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Nv
bXBhY3RSZWZQdHJUdXBsZS5oIGIvU291cmNlL1dURi93dGYvQ29tcGFjdFJlZlB0clR1cGxlLmgK
aW5kZXggMWFmMmUwNjNjOTAwZWQ4Mjc1NTI3MzI0MzA4NjY4M2VmZjBhMTI3MC4uNjQ2Y2FkNjQy
MjNlMmM5ZTZjODExODVjYTllYWRhZTMxYmE5ZGUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvQ29tcGFjdFJlZlB0clR1cGxlLmgKKysrIGIvU291cmNlL1dURi93dGYvQ29tcGFjdFJlZlB0
clR1cGxlLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIENvbXBhY3RSZWZQdHJUdXBs
ZSgpID0gZGVmYXVsdDsKICAgICB+Q29tcGFjdFJlZlB0clR1cGxlKCkKICAgICB7Ci0gICAgICAg
IGRlcmVmSWZOb3ROdWxsKG1fZGF0YS5wb2ludGVyKCkpOworICAgICAgICBXVEY6OkRlZmF1bHRS
ZWZEZXJlZlRyYWl0czxUPjo6ZGVyZWZJZk5vdE51bGwobV9kYXRhLnBvaW50ZXIoKSk7CiAgICAg
fQogCiAgICAgVCogcG9pbnRlcigpIGNvbnN0CkBAIC00OSwxMCArNDksMTAgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRQb2ludGVyKFQqIHBvaW50ZXIpCiAgICAgewotICAgICAgICByZWZJZk5v
dE51bGwocG9pbnRlcik7CisgICAgICAgIFdURjo6RGVmYXVsdFJlZkRlcmVmVHJhaXRzPFQ+Ojpy
ZWZJZk5vdE51bGwocG9pbnRlcik7CiAgICAgICAgIGF1dG8qIG9sZCA9IG1fZGF0YS5wb2ludGVy
KCk7CiAgICAgICAgIG1fZGF0YS5zZXRQb2ludGVyKHBvaW50ZXIpOwotICAgICAgICBkZXJlZklm
Tm90TnVsbChvbGQpOworICAgICAgICBXVEY6OkRlZmF1bHRSZWZEZXJlZlRyYWl0czxUPjo6ZGVy
ZWZJZk5vdE51bGwob2xkKTsKICAgICB9CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2RhdGEudHlwZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKaW5kZXggMzE2MmQxY2E0ODg2MmQzYjE4ODM5ZjVi
OTc0ZjZmNjNjMTc2YmU3ZC4uNTRjMGY3MmEzZTI3OTlhZWUyYWQ0YTY5MTUzYjBiNzIwMGQ3N2Ix
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0ZvcndhcmQuaApAQCAtNTksNiArNTksNyBAQCB1c2luZyBWZWN0b3JNYWxsb2MgPSBGYXN0
TWFsbG9jOwogI2VuZGlmCiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRHVtYlB0clRyYWl0
czsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRGVmYXVsdFJlZkRlcmVmVHJhaXRzOwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgQ29tcGxldGlvbkhhbmRsZXI7CiB0ZW1wbGF0ZTx0eXBl
bmFtZT4gY2xhc3MgRnVuY3Rpb247CkBAIC02OSw3ICs3MCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
PiBjbGFzcyBPcHRpb25hbDsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBQYWNrZWQ7CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgPSBhbGlnbm9mKFQpPiBjbGFzcyBQYWNrZWRBbGlnbmVk
UHRyOwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBEdW1iUHRyVHJhaXRzPFQ+PiBj
bGFzcyBSZWY7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IER1bWJQdHJUcmFpdHM8
VD4+IGNsYXNzIFJlZlB0cjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gRHVtYlB0
clRyYWl0czxUPiwgdHlwZW5hbWUgPSBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8VD4+IGNsYXNzIFJl
ZlB0cjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTdHJpbmdCdWZmZXI7CiB0ZW1wbGF0ZTx0
eXBlbmFtZT4gY2xhc3MgU3RyaW5nUGFyc2luZ0J1ZmZlcjsKIHRlbXBsYXRlPHR5cGVuYW1lLCB0
eXBlbmFtZSA9IHZvaWQ+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAppbmRleCBkZGJh
MjY2ZTQxZmNkOWY1NGU1MGY5MjYxNGNjMjIzZjA2ZjA1YzMwLi4wOTIzMmNiY2UyNzdiMWRiYmU1
ZjIxNmE1YzhjMjJmNDVjYWFhZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtMjksNDUgKzI5LDQ4IEBACiAKIG5h
bWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQdHJUcmFpdHM+
IGNsYXNzIFJlZlB0cjsKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFB0clRyYWl0cyA9
IER1bWJQdHJUcmFpdHM8VD4+IFJlZlB0cjxULCBQdHJUcmFpdHM+IGFkb3B0UmVmKFQqKTsKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0UmVmRGVyZWZUcmFpdHMgeworICAgIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcmVmSWZOb3ROdWxsKFQqIHB0cikKKyAgICB7CisgICAg
ICAgIGlmIChMSUtFTFkocHRyICE9IG51bGxwdHIpKQorICAgICAgICAgICAgcHRyLT5yZWYoKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGRlcmVmSWZOb3ROdWxsKFQq
IHB0cikKKyAgICB7CisgICAgICAgIGlmIChMSUtFTFkocHRyICE9IG51bGxwdHIpKQorICAgICAg
ICAgICAgcHRyLT5kZXJlZigpOworICAgIH0KK307CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IEFM
V0FZU19JTkxJTkUgdm9pZCByZWZJZk5vdE51bGwoVCogcHRyKQotewotICAgIGlmIChMSUtFTFko
cHRyICE9IG51bGxwdHIpKQotICAgICAgICBwdHItPnJlZigpOwotfQordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgUHRyVHJhaXRzLCB0eXBlbmFtZSBSZWZEZXJlZlRyYWl0cz4gY2xhc3Mg
UmVmUHRyOwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUHRyVHJhaXRzID0gRHVtYlB0
clRyYWl0czxUPiwgdHlwZW5hbWUgUmVmRGVyZWZUcmFpdHMgPSBEZWZhdWx0UmVmRGVyZWZUcmFp
dHM8VD4+IFJlZlB0cjxULCBQdHJUcmFpdHMsIFJlZkRlcmVmVHJhaXRzPiBhZG9wdFJlZihUKik7
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IEFMV0FZU19JTkxJTkUgdm9pZCBkZXJlZklmTm90TnVs
bChUKiBwdHIpCi17Ci0gICAgaWYgKExJS0VMWShwdHIgIT0gbnVsbHB0cikpCi0gICAgICAgIHB0
ci0+ZGVyZWYoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHJhaXRzPgor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgX1B0clRyYWl0cywgdHlwZW5hbWUgX1JlZkRl
cmVmVHJhaXRzPgogY2xhc3MgUmVmUHRyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICB1c2luZyBQdHJUcmFpdHMgPSBUcmFpdHM7CisgICAgdXNpbmcgUHRyVHJh
aXRzID0gX1B0clRyYWl0czsKKyAgICB1c2luZyBSZWZEZXJlZlRyYWl0cyA9IF9SZWZEZXJlZlRy
YWl0czsKICAgICB0eXBlZGVmIFQgVmFsdWVUeXBlOwogICAgIHR5cGVkZWYgVmFsdWVUeXBlKiBQ
dHJUeXBlOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUmVmUHRyID0gdHJ1ZTsKIAog
ICAgIEFMV0FZU19JTkxJTkUgY29uc3RleHByIFJlZlB0cigpIDogbV9wdHIobnVsbHB0cikgeyB9
Ci0gICAgQUxXQVlTX0lOTElORSBSZWZQdHIoVCogcHRyKSA6IG1fcHRyKHB0cikgeyByZWZJZk5v
dE51bGwocHRyKTsgfQotICAgIEFMV0FZU19JTkxJTkUgUmVmUHRyKGNvbnN0IFJlZlB0ciYgbykg
OiBtX3B0cihvLm1fcHRyKSB7IHJlZklmTm90TnVsbChQdHJUcmFpdHM6OnVud3JhcChtX3B0cikp
OyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4gUmVmUHRyKGNvbnN0IFJl
ZlB0cjxYLCBZPiYgbykgOiBtX3B0cihvLmdldCgpKSB7IHJlZklmTm90TnVsbChQdHJUcmFpdHM6
OnVud3JhcChtX3B0cikpOyB9CisgICAgQUxXQVlTX0lOTElORSBSZWZQdHIoVCogcHRyKSA6IG1f
cHRyKHB0cikgeyBSZWZEZXJlZlRyYWl0czo6cmVmSWZOb3ROdWxsKHB0cik7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIFJlZlB0cihjb25zdCBSZWZQdHImIG8pIDogbV9wdHIoby5tX3B0cikgeyBSZWZE
ZXJlZlRyYWl0czo6cmVmSWZOb3ROdWxsKFB0clRyYWl0czo6dW53cmFwKG1fcHRyKSk7IH0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZLCB0eXBlbmFtZSBaPiBSZWZQdHIoY29u
c3QgUmVmUHRyPFgsIFksIFo+JiBvKSA6IG1fcHRyKG8uZ2V0KCkpIHsgUmVmRGVyZWZUcmFpdHM6
OnJlZklmTm90TnVsbChQdHJUcmFpdHM6OnVud3JhcChtX3B0cikpOyB9CiAKICAgICBBTFdBWVNf
SU5MSU5FIFJlZlB0cihSZWZQdHImJiBvKSA6IG1fcHRyKG8ubGVha1JlZigpKSB7IH0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPiBSZWZQdHIoUmVmUHRyPFgsIFk+JiYgbykg
OiBtX3B0cihvLmxlYWtSZWYoKSkgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5h
bWUgWSwgdHlwZW5hbWUgWj4gUmVmUHRyKFJlZlB0cjxYLCBZLCBaPiYmIG8pIDogbV9wdHIoby5s
ZWFrUmVmKCkpIHsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+IFJlZlB0
cihSZWY8WCwgWT4mJik7CiAKICAgICAvLyBIYXNoIHRhYmxlIGRlbGV0ZWQgdmFsdWVzLCB3aGlj
aCBhcmUgb25seSBjb25zdHJ1Y3RlZCBhbmQgbmV2ZXIgY29waWVkIG9yIGRlc3Ryb3llZC4KICAg
ICBSZWZQdHIoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3B0cihQdHJUcmFpdHM6Omhh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpKSB7IH0KICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gUHRyVHJhaXRzOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSht
X3B0cik7IH0KIAotICAgIEFMV0FZU19JTkxJTkUgflJlZlB0cigpIHsgZGVyZWZJZk5vdE51bGwo
UHRyVHJhaXRzOjpleGNoYW5nZShtX3B0ciwgbnVsbHB0cikpOyB9CisgICAgQUxXQVlTX0lOTElO
RSB+UmVmUHRyKCkgeyBSZWZEZXJlZlRyYWl0czo6ZGVyZWZJZk5vdE51bGwoUHRyVHJhaXRzOjpl
eGNoYW5nZShtX3B0ciwgbnVsbHB0cikpOyB9CiAKICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVy
biBQdHJUcmFpdHM6OnVud3JhcChtX3B0cik7IH0KIApAQCAtOTAsMTIgKzkzLDEyIEBAIHB1Ymxp
YzoKICAgICBSZWZQdHImIG9wZXJhdG9yPShjb25zdCBSZWZQdHImKTsKICAgICBSZWZQdHImIG9w
ZXJhdG9yPShUKik7CiAgICAgUmVmUHRyJiBvcGVyYXRvcj0oc3RkOjpudWxscHRyX3QpOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+IFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0
IFJlZlB0cjxYLCBZPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFksIHR5
cGVuYW1lIFo+IFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFJlZlB0cjxYLCBZLCBaPiYpOwogICAg
IFJlZlB0ciYgb3BlcmF0b3I9KFJlZlB0ciYmKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0
eXBlbmFtZSBZPiBSZWZQdHImIG9wZXJhdG9yPShSZWZQdHI8WCwgWT4mJik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWSwgdHlwZW5hbWUgWj4gUmVmUHRyJiBvcGVyYXRvcj0o
UmVmUHRyPFgsIFksIFo+JiYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFg+IFJlZlB0ciYgb3Bl
cmF0b3I9KFJlZjxYPiYmKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+
IHZvaWQgc3dhcChSZWZQdHI8WCwgWT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBl
bmFtZSBZLCB0eXBlbmFtZSBaPiB2b2lkIHN3YXAoUmVmUHRyPFgsIFksIFo+Jik7CiAKICAgICBS
ZWZQdHIgY29weVJlZigpICYmID0gZGVsZXRlOwogICAgIFJlZlB0ciBjb3B5UmVmKCkgY29uc3Qg
JiBXQVJOX1VOVVNFRF9SRVRVUk4geyByZXR1cm4gUmVmUHRyKG1fcHRyKTsgfQpAQCAtMTAzLDgg
KzEwNiw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCB1bnNwZWNpZmllZEJvb2xUeXBl
SW5zdGFuY2UoKSBjb25zdCB7IH0KIAotICAgIGZyaWVuZCBSZWZQdHIgYWRvcHRSZWY8VCwgUHRy
VHJhaXRzPihUKik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4gZnJpZW5k
IGNsYXNzIFJlZlB0cjsKKyAgICBmcmllbmQgUmVmUHRyIGFkb3B0UmVmPFQsIFB0clRyYWl0cywg
UmVmRGVyZWZUcmFpdHM+KFQqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZ
LCB0eXBlbmFtZSBaPiBmcmllbmQgY2xhc3MgUmVmUHRyOwogCiAgICAgZW51bSBBZG9wdFRhZyB7
IEFkb3B0IH07CiAgICAgUmVmUHRyKFQqIHB0ciwgQWRvcHRUYWcpIDogbV9wdHIocHRyKSB7IH0K
QEAgLTExMiwxNDIgKzExNSwxNDIgQEAgcHJpdmF0ZToKICAgICB0eXBlbmFtZSBQdHJUcmFpdHM6
OlN0b3JhZ2VUeXBlIG1fcHRyOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgotaW5saW5lIFJlZlB0cjxULCBVPjo6UmVmUHRyKFJl
ZjxYLCBZPiYmIHJlZmVyZW5jZSkKK2lubGluZSBSZWZQdHI8VCwgVSwgVj46OlJlZlB0cihSZWY8
WCwgWT4mJiByZWZlcmVuY2UpCiAgICAgOiBtX3B0cigmcmVmZXJlbmNlLmxlYWtSZWYoKSkKIHsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBUKiBSZWZQdHI8
VCwgVT46OmxlYWtSZWYoKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgVj4KK2lubGluZSBUKiBSZWZQdHI8VCwgVSwgVj46OmxlYWtSZWYoKQogewogICAgIHJldHVy
biBVOjpleGNoYW5nZShtX3B0ciwgbnVsbHB0cik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+Ci1pbmxpbmUgUmVmUHRyPFQsIFU+JiBSZWZQdHI8VCwgVT46Om9wZXJhdG9y
PShjb25zdCBSZWZQdHImIG8pCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWPgoraW5saW5lIFJlZlB0cjxULCBVLCBWPiYgUmVmUHRyPFQsIFUsIFY+OjpvcGVyYXRv
cj0oY29uc3QgUmVmUHRyJiBvKQogewogICAgIFJlZlB0ciBwdHIgPSBvOwogICAgIHN3YXAocHRy
KTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgotaW5saW5lIFJlZlB0cjxULCBV
PiYgUmVmUHRyPFQsIFU+OjpvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFgsIFk+JiBvKQordGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KK3RlbXBsYXRlPHR5cGVuYW1l
IFgsIHR5cGVuYW1lIFksIHR5cGVuYW1lIFo+CitpbmxpbmUgUmVmUHRyPFQsIFUsIFY+JiBSZWZQ
dHI8VCwgVSwgVj46Om9wZXJhdG9yPShjb25zdCBSZWZQdHI8WCwgWSwgWj4mIG8pCiB7CiAgICAg
UmVmUHRyIHB0ciA9IG87CiAgICAgc3dhcChwdHIpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBSZWZQdHI8VCwgVT4mIFJl
ZlB0cjxULCBVPjo6b3BlcmF0b3I9KFQqIG9wdHIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWPgoraW5saW5lIFJlZlB0cjxULCBVLCBWPiYgUmVmUHRyPFQsIFUs
IFY+OjpvcGVyYXRvcj0oVCogb3B0cikKIHsKICAgICBSZWZQdHIgcHRyID0gb3B0cjsKICAgICBz
d2FwKHB0cik7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPgotaW5saW5lIFJlZlB0cjxULCBVPiYgUmVmUHRyPFQsIFU+OjpvcGVyYXRvcj0o
c3RkOjpudWxscHRyX3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWPgoraW5saW5lIFJlZlB0cjxULCBVLCBWPiYgUmVmUHRyPFQsIFUsIFY+OjpvcGVyYXRvcj0o
c3RkOjpudWxscHRyX3QpCiB7Ci0gICAgZGVyZWZJZk5vdE51bGwoVTo6ZXhjaGFuZ2UobV9wdHIs
IG51bGxwdHIpKTsKKyAgICBWOjpkZXJlZklmTm90TnVsbChVOjpleGNoYW5nZShtX3B0ciwgbnVs
bHB0cikpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KLWlubGluZSBSZWZQdHI8VCwgVT4mIFJlZlB0cjxULCBVPjo6b3BlcmF0b3I9KFJl
ZlB0ciYmIG8pCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgor
aW5saW5lIFJlZlB0cjxULCBVLCBWPiYgUmVmUHRyPFQsIFUsIFY+OjpvcGVyYXRvcj0oUmVmUHRy
JiYgbykKIHsKICAgICBSZWZQdHIgcHRyID0gV1RGTW92ZShvKTsKICAgICBzd2FwKHB0cik7CiAg
ICAgcmV0dXJuICp0aGlzOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgot
dGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KLWlubGluZSBSZWZQdHI8VCwgVT4mIFJl
ZlB0cjxULCBVPjo6b3BlcmF0b3I9KFJlZlB0cjxYLCBZPiYmIG8pCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgordGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5h
bWUgWSwgdHlwZW5hbWUgWj4KK2lubGluZSBSZWZQdHI8VCwgVSwgVj4mIFJlZlB0cjxULCBVLCBW
Pjo6b3BlcmF0b3I9KFJlZlB0cjxYLCBZLCBaPiYmIG8pCiB7CiAgICAgUmVmUHRyIHB0ciA9IFdU
Rk1vdmUobyk7CiAgICAgc3dhcChwdHIpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVj4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFYsIHR5cGVuYW1lIFc+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotaW5saW5lIFJlZlB0cjxULCBW
PiYgUmVmUHRyPFQsIFY+OjpvcGVyYXRvcj0oUmVmPFU+JiYgcmVmZXJlbmNlKQoraW5saW5lIFJl
ZlB0cjxULCBWLCBXPiYgUmVmUHRyPFQsIFYsIFc+OjpvcGVyYXRvcj0oUmVmPFU+JiYgcmVmZXJl
bmNlKQogewogICAgIFJlZlB0ciBwdHIgPSBXVEZNb3ZlKHJlZmVyZW5jZSk7CiAgICAgc3dhcChw
dHIpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgVCwgdHlwZW5hbWUg
VT4KLXRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+Ci1pbmxpbmUgdm9pZCBSZWZQdHI8
VCwgVT46OnN3YXAoUmVmUHRyPFgsIFk+JiBvKQordGVtcGxhdGU8Y2xhc3MgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgVj4KK3RlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFksIHR5cGVuYW1l
IFo+CitpbmxpbmUgdm9pZCBSZWZQdHI8VCwgVSwgVj46OnN3YXAoUmVmUHRyPFgsIFksIFo+JiBv
KQogewogICAgIFU6OnN3YXAobV9wdHIsIG8ubV9wdHIpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZLCB0eXBlbmFtZSA9IHN0ZDo6
ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2FtZTxVLCBEdW1iUHRyVHJhaXRzPFQ+Pjo6dmFsdWUgfHwg
IXN0ZDo6aXNfc2FtZTxZLCBEdW1iUHRyVHJhaXRzPFg+Pjo6dmFsdWU+PgotaW5saW5lIHZvaWQg
c3dhcChSZWZQdHI8VCwgVT4mIGEsIFJlZlB0cjxYLCBZPiYgYikKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFgsIHR5cGVuYW1lIFksIHR5cGVu
YW1lIFosIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19zYW1lPFUsIER1bWJQ
dHJUcmFpdHM8VD4+Ojp2YWx1ZSB8fCAhc3RkOjppc19zYW1lPFksIER1bWJQdHJUcmFpdHM8WD4+
Ojp2YWx1ZT4+CitpbmxpbmUgdm9pZCBzd2FwKFJlZlB0cjxULCBVLCBWPiYgYSwgUmVmUHRyPFgs
IFksIFo+JiBiKQogewogICAgIGEuc3dhcChiKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KLWlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgUmVmUHRyPFQsIFU+JiBhLCBjb25zdCBSZWZQdHI8WCwgWT4mIGIpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBYLCB0eXBlbmFt
ZSBZLCB0eXBlbmFtZSBaPgoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWZQdHI8VCwg
VSwgVj4mIGEsIGNvbnN0IFJlZlB0cjxYLCBZLCBaPiYgYikKIHsgCiAgICAgcmV0dXJuIGEuZ2V0
KCkgPT0gYi5nZXQoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgWD4KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVmUHRyPFQsIFU+JiBhLCBY
KiBiKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5h
bWUgWD4KK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVmUHRyPFQsIFUsIFY+JiBhLCBY
KiBiKQogeyAKICAgICByZXR1cm4gYS5nZXQoKSA9PSBiOyAKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KLWlubGluZSBib29sIG9wZXJhdG9yPT0oVCog
YSwgY29uc3QgUmVmUHRyPFgsIFk+JiBiKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
WCwgdHlwZW5hbWUgWSwgdHlwZW5hbWUgWj4KK2lubGluZSBib29sIG9wZXJhdG9yPT0oVCogYSwg
Y29uc3QgUmVmUHRyPFgsIFksIFo+JiBiKQogewogICAgIHJldHVybiBhID09IGIuZ2V0KCk7IAog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBYLCB0eXBlbmFt
ZSBZPgotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWZQdHI8VCwgVT4mIGEsIGNvbnN0
IFJlZlB0cjxYLCBZPiYgYikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFYsIHR5cGVuYW1lIFgsIHR5cGVuYW1lIFksIHR5cGVuYW1lIFo+CitpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFJlZlB0cjxULCBVLCBWPiYgYSwgY29uc3QgUmVmUHRyPFgsIFksIFo+
JiBiKQogeyAKICAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOyAKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgWD4KLWlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgUmVmUHRyPFQsIFU+JiBhLCBYKiBiKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgWD4KK2lubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgUmVmUHRyPFQsIFUsIFY+JiBhLCBYKiBiKQogewogICAgIHJldHVybiBhLmdldCgpICE9
IGI7IAogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgot
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25zdCBSZWZQdHI8WCwgWT4mIGIpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZLCB0eXBlbmFtZSBaPgoraW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25zdCBSZWZQdHI8WCwgWSwgWj4mIGIpCiB7IAog
ICAgIHJldHVybiBhICE9IGIuZ2V0KCk7IAogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVID0gRHVtYlB0clRyYWl0czxUPiwgdHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KLWlubGlu
ZSBSZWZQdHI8VCwgVT4gc3RhdGljX3BvaW50ZXJfY2FzdChjb25zdCBSZWZQdHI8WCwgWT4mIHAp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVID0gRHVtYlB0clRyYWl0czxUPiwgdHlw
ZW5hbWUgViA9IERlZmF1bHRSZWZEZXJlZlRyYWl0czxUPiwgdHlwZW5hbWUgWCwgdHlwZW5hbWUg
WSwgdHlwZW5hbWUgWj4KK2lubGluZSBSZWZQdHI8VCwgVSwgVj4gc3RhdGljX3BvaW50ZXJfY2Fz
dChjb25zdCBSZWZQdHI8WCwgWSwgWj4mIHApCiB7IAotICAgIHJldHVybiBSZWZQdHI8VCwgVT4o
c3RhdGljX2Nhc3Q8VCo+KHAuZ2V0KCkpKTsKKyAgICByZXR1cm4gUmVmUHRyPFQsIFUsIFY+KHN0
YXRpY19jYXN0PFQqPihwLmdldCgpKSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPgotc3RydWN0IElzU21hcnRQdHI8UmVmUHRyPFQsIFU+PiB7Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KK3N0cnVjdCBJc1NtYXJ0UHRyPFJlZlB0
cjxULCBVLCBWPj4gewogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1ZSA9IHRydWU7CiB9
OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIFJlZlB0cjxULCBV
PiBhZG9wdFJlZihUKiBwKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgVj4KK2lubGluZSBSZWZQdHI8VCwgVSwgVj4gYWRvcHRSZWYoVCogcCkKIHsKICAgICBhZG9w
dGVkKHApOwotICAgIHJldHVybiBSZWZQdHI8VCwgVT4ocCwgUmVmUHRyPFQsIFU+OjpBZG9wdCk7
CisgICAgcmV0dXJuIFJlZlB0cjxULCBVLCBWPihwLCBSZWZQdHI8VCwgVSwgVj46OkFkb3B0KTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFJlZlB0cjxUPiBtYWtlUmVmUHRyKFQq
IHBvaW50ZXIpCkBAIC0yNjAsMTQgKzI2MywxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgUmVmUHRyPFQ+IG1ha2VSZWZQdHIoVCYgcmVmZXJlbmNlKQogICAgIHJldHVybiAmcmVmZXJl
bmNlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5
cGUsIHR5cGVuYW1lIFB0clRyYWl0cz4KLWlubGluZSBib29sIGlzKFJlZlB0cjxBcmdUeXBlLCBQ
dHJUcmFpdHM+JiBzb3VyY2UpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVu
YW1lIEFyZ1R5cGUsIHR5cGVuYW1lIFB0clRyYWl0cywgdHlwZW5hbWUgUmVmRGVyZWZUcmFpdHM+
CitpbmxpbmUgYm9vbCBpcyhSZWZQdHI8QXJnVHlwZSwgUHRyVHJhaXRzLCBSZWZEZXJlZlRyYWl0
cz4mIHNvdXJjZSkKIHsKICAgICByZXR1cm4gaXM8RXhwZWN0ZWRUeXBlPihzb3VyY2UuZ2V0KCkp
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5cGUs
IHR5cGVuYW1lIFB0clRyYWl0cz4KLWlubGluZSBib29sIGlzKGNvbnN0IFJlZlB0cjxBcmdUeXBl
LCBQdHJUcmFpdHM+JiBzb3VyY2UpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5
cGVuYW1lIEFyZ1R5cGUsIHR5cGVuYW1lIFB0clRyYWl0cywgdHlwZW5hbWUgUmVmRGVyZWZUcmFp
dHM+CitpbmxpbmUgYm9vbCBpcyhjb25zdCBSZWZQdHI8QXJnVHlwZSwgUHRyVHJhaXRzLCBSZWZE
ZXJlZlRyYWl0cz4mIHNvdXJjZSkKIHsKICAgICByZXR1cm4gaXM8RXhwZWN0ZWRUeXBlPihzb3Vy
Y2UuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IDQ0MjQyNjQxMjgwODZlMWYxOTY4
MTdhYzIxODVhOTQxOGRkY2VkMDEuLmJhMGEyNWQ2YWVjMjBkYTEyOTI5ZjBiMDQ4N2ViOWYxMWUx
ZjUxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTU4MCwyMiArNTgwLDEzIEBAIGJvb2wgQXVk
aW9CdWZmZXJTb3VyY2VOb2RlOjpwcm9wYWdhdGVzU2lsZW5jZSgpIGNvbnN0CiAKIHZvaWQgQXVk
aW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKFBhbm5lck5vZGVCYXNlKiBwYW5uZXJO
b2RlKQogewotICAgIGlmIChtX3Bhbm5lck5vZGUgIT0gcGFubmVyTm9kZSAmJiAhaGFzRmluaXNo
ZWQoKSkgewotICAgICAgICBpZiAocGFubmVyTm9kZSkKLSAgICAgICAgICAgIHBhbm5lck5vZGUt
PnJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKLSAgICAgICAgaWYgKG1fcGFubmVy
Tm9kZSkKLSAgICAgICAgICAgIG1fcGFubmVyTm9kZS0+ZGVyZWYoQXVkaW9Ob2RlOjpSZWZUeXBl
Q29ubmVjdGlvbik7Ci0KKyAgICBpZiAobV9wYW5uZXJOb2RlICE9IHBhbm5lck5vZGUgJiYgIWhh
c0ZpbmlzaGVkKCkpCiAgICAgICAgIG1fcGFubmVyTm9kZSA9IHBhbm5lck5vZGU7Ci0gICAgfQog
fQogCiB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y2xlYXJQYW5uZXJOb2RlKCkKIHsKLSAg
ICBpZiAobV9wYW5uZXJOb2RlKSB7Ci0gICAgICAgIG1fcGFubmVyTm9kZS0+ZGVyZWYoQXVkaW9O
b2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7Ci0gICAgICAgIG1fcGFubmVyTm9kZSA9IG51bGxwdHI7
Ci0gICAgfQorICAgIG1fcGFubmVyTm9kZSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlOjpmaW5pc2goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKaW5kZXggYmY1Y2VkNmYzYjI0ZmRm
MmM1M2E5YTFlZGEyNjMyMDFlODdjZjY0Yy4uMTdhNzAwNjMwNjUxNWRmMWY0ZTQ5ZWZkNTE3N2Nl
ZmVkNzMzMzQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCkBAIC0xNDEsOCArMTQxLDggQEAgcHJpdmF0ZToK
ICAgICBkb3VibGUgdG90YWxQaXRjaFJhdGUoKTsKIAogICAgIC8vIFdlIG9wdGlvbmFsbHkga2Vl
cCB0cmFjayBvZiBhIHBhbm5lciBub2RlIHdoaWNoIGhhcyBhIGRvcHBsZXIgc2hpZnQgdGhhdCBp
cyBpbmNvcnBvcmF0ZWQgaW50bwotICAgIC8vIHRoZSBwaXRjaCByYXRlLiBXZSBtYW51YWxseSBt
YW5hZ2UgcmVmLWNvdW50aW5nIGJlY2F1c2Ugd2Ugd2FudCB0byB1c2UgUmVmVHlwZUNvbm5lY3Rp
b24uCi0gICAgUGFubmVyTm9kZUJhc2UqIG1fcGFubmVyTm9kZSB7IG51bGxwdHIgfTsKKyAgICAv
LyB0aGUgcGl0Y2ggcmF0ZS4KKyAgICBBdWRpb0Nvbm5lY3Rpb25SZWZQdHI8UGFubmVyTm9kZUJh
c2U+IG1fcGFubmVyTm9kZTsKIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHByb2Nlc3MoKSB3
aXRoIHNldEJ1ZmZlcigpIHdoaWNoIGNhbiBjYXVzZSBkeW5hbWljIGNoYW5uZWwgY291bnQgY2hh
bmdlcy4KICAgICBtdXRhYmxlIExvY2sgbV9wcm9jZXNzTXV0ZXg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKaW5kZXggYjFjYWRhMDc3MjA2MDU2ZGFi
NzFkMjQ2YjZjZmFjYjQwOThjZTM0ZS4uMTBlNWYxMzYzOWFlNjg1YWUxYmNkODQ2MzIyNmI0OGQw
NDE0Y2RkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
LmNwcApAQCAtNTQ4LDcgKzU0OCw3IEBAIHZvaWQgQXVkaW9Ob2RlOjplbmFibGVPdXRwdXRzSWZO
ZWNlc3NhcnkoKQogdm9pZCBBdWRpb05vZGU6OmRpc2FibGVPdXRwdXRzSWZOZWNlc3NhcnkoKQog
ewogICAgIC8vIERpc2FibGUgb3V0cHV0cyBpZiBhcHByb3ByaWF0ZS4gV2UgZG8gdGhpcyBpZiB0
aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGlzIDAgb3IgMS4gVGhlIGNhc2UKLSAgICAvLyBvZiAw
IGlzIGZyb20gZmluaXNoRGVyZWYoKSB3aGVyZSB0aGVyZSBhcmUgbm8gY29ubmVjdGlvbnMgbGVm
dC4gVGhlIGNhc2Ugb2YgMSBpcyBmcm9tCisgICAgLy8gb2YgMCBpcyBmcm9tIGRlY3JlbWVudENv
bm5lY3Rpb25Db3VudFdpdGhMb2NrKCkgd2hlcmUgdGhlcmUgYXJlIG5vIGNvbm5lY3Rpb25zIGxl
ZnQuIFRoZSBjYXNlIG9mIDEgaXMgZnJvbQogICAgIC8vIEF1ZGlvTm9kZUlucHV0OjpkaXNhYmxl
KCkgd2hlcmUgd2Ugd2FudCB0byBkaXNhYmxlIG91dHB1dHMgd2hlbiB0aGVyZSdzIG9ubHkgb25l
IGNvbm5lY3Rpb24KICAgICAvLyBsZWZ0IGJlY2F1c2Ugd2UncmUgcmVhZHkgdG8gZ28gYXdheSwg
YnV0IGNhbid0IHF1aXRlIHlldC4KICAgICBpZiAobV9jb25uZWN0aW9uUmVmQ291bnQgPD0gMSAm
JiAhbV9pc0Rpc2FibGVkKSB7CkBAIC01NzQsMzEgKzU3NCwyMSBAQCB2b2lkIEF1ZGlvTm9kZTo6
ZGlzYWJsZU91dHB1dHMoKQogICAgICAgICBvdXRwdXQtPmRpc2FibGUoKTsKIH0KIAotdm9pZCBB
dWRpb05vZGU6OnJlZihSZWZUeXBlIHJlZlR5cGUpCit2b2lkIEF1ZGlvTm9kZTo6aW5jcmVtZW50
Q29ubmVjdGlvbkNvdW50KCkKIHsKLSAgICBzd2l0Y2ggKHJlZlR5cGUpIHsKLSAgICBjYXNlIFJl
ZlR5cGVOb3JtYWw6Ci0gICAgICAgICsrbV9ub3JtYWxSZWZDb3VudDsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBSZWZUeXBlQ29ubmVjdGlvbjoKLSAgICAgICAgKyttX2Nvbm5lY3Rpb25SZWZD
b3VudDsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgfQotCi0jaWYgREVCVUdfQVVESU9OT0RFX1JFRkVSRU5DRVMKLSAgICBm
cHJpbnRmKHN0ZGVyciwgIiVwOiAlZDogQXVkaW9Ob2RlOjpyZWYoJWQpICVkICVkXG4iLCB0aGlz
LCBub2RlVHlwZSgpLCByZWZUeXBlLCBtX25vcm1hbFJlZkNvdW50LCBtX2Nvbm5lY3Rpb25SZWZD
b3VudCk7Ci0jZW5kaWYKKyAgICArK21fY29ubmVjdGlvblJlZkNvdW50OwogCi0gICAgLy8gU2Vl
IHRoZSBkaXNhYmxpbmcgY29kZSBpbiBmaW5pc2hEZXJlZigpIGJlbG93LiBUaGlzIGhhbmRsZXMg
dGhlIGNhc2Ugd2hlcmUgYSBub2RlCisgICAgLy8gU2VlIHRoZSBkaXNhYmxpbmcgY29kZSBpbiBk
ZWNyZW1lbnRDb25uZWN0aW9uQ291bnRXaXRoTG9jaygpIGJlbG93LiBUaGlzIGhhbmRsZXMgdGhl
IGNhc2Ugd2hlcmUgYSBub2RlCiAgICAgLy8gaXMgYmVpbmcgcmUtY29ubmVjdGVkIGFmdGVyIGJl
aW5nIHVzZWQgYXQgbGVhc3Qgb25jZSBhbmQgZGlzY29ubmVjdGVkLgogICAgIC8vIEluIHRoaXMg
Y2FzZSwgd2UgbmVlZCB0byByZS1lbmFibGUuCi0gICAgaWYgKHJlZlR5cGUgPT0gUmVmVHlwZUNv
bm5lY3Rpb24pCi0gICAgICAgIGVuYWJsZU91dHB1dHNJZk5lY2Vzc2FyeSgpOworICAgIGVuYWJs
ZU91dHB1dHNJZk5lY2Vzc2FyeSgpOworCisjaWYgREVCVUdfQVVESU9OT0RFX1JFRkVSRU5DRVMK
KyAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiAlZDogQXVkaW9Ob2RlOjppbmNyZW1lbnRDb25uZWN0
aW9uQ291bnQoKSAlZCAlZFxuIiwgdGhpcywgbm9kZVR5cGUoKSwgbV9ub3JtYWxSZWZDb3VudCwg
bV9jb25uZWN0aW9uUmVmQ291bnQpOworI2VuZGlmCiB9CiAKLXZvaWQgQXVkaW9Ob2RlOjpkZXJl
ZihSZWZUeXBlIHJlZlR5cGUpCit2b2lkIEF1ZGlvTm9kZTo6ZGVjcmVtZW50Q29ubmVjdGlvbkNv
dW50KCkKIHsKICAgICAvLyBUaGUgYWN0dWFsbHkgd29yayBmb3IgZGVyZWYgaGFwcGVucyBjb21w
bGV0ZWx5IHdpdGhpbiB0aGUgYXVkaW8gY29udGV4dCdzIGdyYXBoIGxvY2suCiAgICAgLy8gSW4g
dGhlIGNhc2Ugb2YgdGhlIGF1ZGlvIHRocmVhZCwgd2UgbXVzdCB1c2UgYSB0cnlMb2NrIHRvIGF2
b2lkIGdsaXRjaGVzLgpAQCAtNjE1LDE1ICs2MDUsNzQgQEAgdm9pZCBBdWRpb05vZGU6OmRlcmVm
KFJlZlR5cGUgcmVmVHlwZSkKIAogICAgIGlmIChoYXNMb2NrKSB7CiAgICAgICAgIC8vIFRoaXMg
aXMgd2hlcmUgdGhlIHJlYWwgZGVyZWYgd29yayBoYXBwZW5zLgotICAgICAgICBmaW5pc2hEZXJl
ZihyZWZUeXBlKTsKKyAgICAgICAgZGVjcmVtZW50Q29ubmVjdGlvbkNvdW50V2l0aExvY2soKTsK
IAogICAgICAgICBpZiAobXVzdFJlbGVhc2VMb2NrKQogICAgICAgICAgICAgY29udGV4dCgpLnVu
bG9jaygpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIHdlcmUgdW5hYmxlIHRvIGdldCB0
aGUgbG9jaywgc28gcHV0IHRoaXMgaW4gYSBsaXN0IHRvIGZpbmlzaCB1cCBsYXRlci4KICAgICAg
ICAgQVNTRVJUKGNvbnRleHQoKS5pc0F1ZGlvVGhyZWFkKCkpOwotICAgICAgICBBU1NFUlQocmVm
VHlwZSA9PSBSZWZUeXBlQ29ubmVjdGlvbik7Ci0gICAgICAgIGNvbnRleHQoKS5hZGREZWZlcnJl
ZEZpbmlzaERlcmVmKHRoaXMpOworICAgICAgICBjb250ZXh0KCkuYWRkRGVmZXJyZWREZWNyZW1l
bnRDb25uZWN0aW9uQ291bnQodGhpcyk7CisgICAgfQorCisgICAgLy8gT25jZSBBdWRpb0NvbnRl
eHQ6OnVuaW5pdGlhbGl6ZSgpIGlzIGNhbGxlZCB0aGVyZSdzIG5vIG1vcmUgY2hhbmNlcyBmb3Ig
ZGVsZXRlTWFya2VkTm9kZXMoKSB0byBnZXQgY2FsbGVkLCBzbyB3ZSBjYWxsIGhlcmUuCisgICAg
Ly8gV2UgY2FuJ3QgY2FsbCBpbiBBdWRpb0NvbnRleHQ6On5BdWRpb0NvbnRleHQoKSBzaW5jZSBp
dCB3aWxsIG5ldmVyIGJlIGNhbGxlZCBhcyBsb25nIGFzIGFueSBBdWRpb05vZGUgaXMgYWxpdmUK
KyAgICAvLyBiZWNhdXNlIEF1ZGlvTm9kZXMga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgY29udGV4
dC4KKyAgICBpZiAoY29udGV4dCgpLmlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKQorICAgICAgICBj
b250ZXh0KCkuZGVsZXRlTWFya2VkTm9kZXMoKTsKK30KKwordm9pZCBBdWRpb05vZGU6OmRlY3Jl
bWVudENvbm5lY3Rpb25Db3VudFdpdGhMb2NrKCkKK3sKKyAgICBBU1NFUlQoY29udGV4dCgpLmlz
R3JhcGhPd25lcigpKTsKKworICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25SZWZDb3VudCA+IDApOwor
ICAgIC0tbV9jb25uZWN0aW9uUmVmQ291bnQ7CisKKyNpZiBERUJVR19BVURJT05PREVfUkVGRVJF
TkNFUworICAgIGZwcmludGYoc3RkZXJyLCAiJXA6ICVkOiBBdWRpb05vZGU6OmRlY3JlbWVudENv
bm5lY3Rpb25Db3VudFdpdGhMb2NrKCkgJWQgJWRcbiIsIHRoaXMsIG5vZGVUeXBlKCksIG1fbm9y
bWFsUmVmQ291bnQsIG1fY29ubmVjdGlvblJlZkNvdW50KTsKKyNlbmRpZgorCisgICAgaWYgKCFt
X2Nvbm5lY3Rpb25SZWZDb3VudCAmJiBtX25vcm1hbFJlZkNvdW50KQorICAgICAgICBkaXNhYmxl
T3V0cHV0c0lmTmVjZXNzYXJ5KCk7CisKKyAgICBtYXJrTm9kZUZvckRlbGV0aW9uSWZOZWNlc3Nh
cnkoKTsKK30KKwordm9pZCBBdWRpb05vZGU6Om1hcmtOb2RlRm9yRGVsZXRpb25JZk5lY2Vzc2Fy
eSgpCit7CisgICAgQVNTRVJUKGNvbnRleHQoKS5pc0dyYXBoT3duZXIoKSk7CisKKyAgICBpZiAo
bV9jb25uZWN0aW9uUmVmQ291bnQgfHwgbV9ub3JtYWxSZWZDb3VudCB8fCBtX2lzTWFya2VkRm9y
RGVsZXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEFsbCByZWZlcmVuY2VzIGFyZSBn
b25lIC0gd2UgbmVlZCB0byBnbyBhd2F5LgorICAgIGZvciAoYXV0byYgb3V0cHV0IDogbV9vdXRw
dXRzKQorICAgICAgICBvdXRwdXQtPmRpc2Nvbm5lY3RBbGwoKTsgLy8gVGhpcyB3aWxsIGRlcmVm
KCkgbm9kZXMgd2UncmUgY29ubmVjdGVkIHRvLgorCisgICAgLy8gTWFyayBmb3IgZGVsZXRpb24g
YXQgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gb3Igd2hlbiBjb250ZXh0IHNodXRzIGRvd24u
CisgICAgY29udGV4dCgpLm1hcmtGb3JEZWxldGlvbigqdGhpcyk7CisgICAgbV9pc01hcmtlZEZv
ckRlbGV0aW9uID0gdHJ1ZTsKKyAgICBkaWRCZWNvbWVNYXJrZWRGb3JEZWxldGlvbigpOworfQor
Cit2b2lkIEF1ZGlvTm9kZTo6cmVmKCkKK3sKKyAgICArK21fbm9ybWFsUmVmQ291bnQ7CisKKyNp
ZiBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUworICAgIGZwcmludGYoc3RkZXJyLCAiJXA6ICVk
OiBBdWRpb05vZGU6OnJlZigpICVkICVkXG4iLCB0aGlzLCBub2RlVHlwZSgpLCBtX25vcm1hbFJl
ZkNvdW50LCBtX2Nvbm5lY3Rpb25SZWZDb3VudCk7CisjZW5kaWYKK30KKwordm9pZCBBdWRpb05v
ZGU6OmRlcmVmKCkKK3sKKyAgICBBU1NFUlQoIWNvbnRleHQoKS5pc0F1ZGlvVGhyZWFkKCkpOwor
CisgICAgeworICAgICAgICBCYXNlQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250
ZXh0KCkpOworICAgICAgICAvLyBUaGlzIGlzIHdoZXJlIHRoZSByZWFsIGRlcmVmIHdvcmsgaGFw
cGVucy4KKyAgICAgICAgZGVyZWZXaXRoTG9jaygpOwogICAgIH0KIAogICAgIC8vIE9uY2UgQXVk
aW9Db250ZXh0Ojp1bmluaXRpYWxpemUoKSBpcyBjYWxsZWQgdGhlcmUncyBubyBtb3JlIGNoYW5j
ZXMgZm9yIGRlbGV0ZU1hcmtlZE5vZGVzKCkgdG8gZ2V0IGNhbGxlZCwgc28gd2UgY2FsbCBoZXJl
LgpAQCAtNjQwLDQyICs2ODksMTggQEAgVmFyaWFudDxSZWZQdHI8QmFzZUF1ZGlvQ29udGV4dD4s
IFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+PiBBdWRpb05vZGU6OmNvbnRleHQKICAgICByZXR1
cm4gbWFrZVJlZlB0cihtX2NvbnRleHQuZ2V0KCkpOwogfQogCi12b2lkIEF1ZGlvTm9kZTo6Zmlu
aXNoRGVyZWYoUmVmVHlwZSByZWZUeXBlKQordm9pZCBBdWRpb05vZGU6OmRlcmVmV2l0aExvY2so
KQogewogICAgIEFTU0VSVChjb250ZXh0KCkuaXNHcmFwaE93bmVyKCkpOwogICAgIAotICAgIHN3
aXRjaCAocmVmVHlwZSkgewotICAgIGNhc2UgUmVmVHlwZU5vcm1hbDoKLSAgICAgICAgQVNTRVJU
KG1fbm9ybWFsUmVmQ291bnQgPiAwKTsKLSAgICAgICAgLS1tX25vcm1hbFJlZkNvdW50OwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFJlZlR5cGVDb25uZWN0aW9uOgotICAgICAgICBBU1NFUlQo
bV9jb25uZWN0aW9uUmVmQ291bnQgPiAwKTsKLSAgICAgICAgLS1tX2Nvbm5lY3Rpb25SZWZDb3Vu
dDsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgfQorICAgIEFTU0VSVChtX25vcm1hbFJlZkNvdW50ID4gMCk7CisgICAgLS1t
X25vcm1hbFJlZkNvdW50OwogICAgIAogI2lmIERFQlVHX0FVRElPTk9ERV9SRUZFUkVOQ0VTCi0g
ICAgZnByaW50ZihzdGRlcnIsICIlcDogJWQ6IEF1ZGlvTm9kZTo6ZGVyZWYoJWQpICVkICVkXG4i
LCB0aGlzLCBub2RlVHlwZSgpLCByZWZUeXBlLCBtX25vcm1hbFJlZkNvdW50LCBtX2Nvbm5lY3Rp
b25SZWZDb3VudCk7CisgICAgZnByaW50ZihzdGRlcnIsICIlcDogJWQ6IEF1ZGlvTm9kZTo6ZGVy
ZWYoKSAlZCAlZFxuIiwgdGhpcywgbm9kZVR5cGUoKSwgbV9ub3JtYWxSZWZDb3VudCwgbV9jb25u
ZWN0aW9uUmVmQ291bnQpOwogI2VuZGlmCiAKLSAgICBpZiAoIW1fY29ubmVjdGlvblJlZkNvdW50
KSB7Ci0gICAgICAgIGlmICghbV9ub3JtYWxSZWZDb3VudCkgewotICAgICAgICAgICAgaWYgKCFt
X2lzTWFya2VkRm9yRGVsZXRpb24pIHsKLSAgICAgICAgICAgICAgICAvLyBBbGwgcmVmZXJlbmNl
cyBhcmUgZ29uZSAtIHdlIG5lZWQgdG8gZ28gYXdheS4KLSAgICAgICAgICAgICAgICBmb3IgKGF1
dG8mIG91dHB1dCA6IG1fb3V0cHV0cykKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0LT5kaXNj
b25uZWN0QWxsKCk7IC8vIFRoaXMgd2lsbCBkZXJlZigpIG5vZGVzIHdlJ3JlIGNvbm5lY3RlZCB0
by4KLQotICAgICAgICAgICAgICAgIC8vIE1hcmsgZm9yIGRlbGV0aW9uIGF0IGVuZCBvZiBlYWNo
IHJlbmRlciBxdWFudHVtIG9yIHdoZW4gY29udGV4dCBzaHV0cyBkb3duLgotICAgICAgICAgICAg
ICAgIGNvbnRleHQoKS5tYXJrRm9yRGVsZXRpb24oKnRoaXMpOwotICAgICAgICAgICAgICAgIG1f
aXNNYXJrZWRGb3JEZWxldGlvbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZGlkQmVjb21lTWFy
a2VkRm9yRGVsZXRpb24oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChyZWZU
eXBlID09IFJlZlR5cGVDb25uZWN0aW9uKQotICAgICAgICAgICAgZGlzYWJsZU91dHB1dHNJZk5l
Y2Vzc2FyeSgpOwotICAgIH0KKyAgICBtYXJrTm9kZUZvckRlbGV0aW9uSWZOZWNlc3NhcnkoKTsK
IH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpoYW5kbGVBdWRpb05vZGVPcHRpb25z
KGNvbnN0IEF1ZGlvTm9kZU9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IERlZmF1bHRBdWRpb05vZGVP
cHRpb25zJiBkZWZhdWx0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Tm9kZS5oCmluZGV4IDg0YzUwZDJjZTBkODNiNjMwMDE3N2MyNjE3YzRjMzkyY2ZjZjU3MjMuLjRm
YmY0YjA5NzQ3YzcwZDYyM2VhNDYzYmEzYmFhNTE1ZjRmOGRmNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtOTYsMTcgKzk2LDE0IEBAIHB1Ymxp
YzoKICAgICBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZVR5cGU7IH0K
ICAgICB2b2lkIHNldE5vZGVUeXBlKE5vZGVUeXBlKTsKIAotICAgIC8vIFdlIGhhbmRsZSBvdXIg
b3duIHJlZi1jb3VudGluZyBiZWNhdXNlIG9mIHRoZSB0aHJlYWRpbmcgaXNzdWVzIGFuZCBzdWJ0
bGUgbmF0dXJlIG9mCi0gICAgLy8gaG93IEF1ZGlvTm9kZXMgY2FuIGNvbnRpbnVlIHByb2Nlc3Np
bmcgKHBsYXlpbmcgb25lLXNob3Qgc291bmQpIGFmdGVyIHRoZXJlIGFyZSBubyBtb3JlCi0gICAg
Ly8gSmF2YVNjcmlwdCByZWZlcmVuY2VzIHRvIHRoZSBvYmplY3QuCi0gICAgZW51bSBSZWZUeXBl
IHsgUmVmVHlwZU5vcm1hbCwgUmVmVHlwZUNvbm5lY3Rpb24gfTsKLQogICAgIC8vIENhbiBiZSBj
YWxsZWQgZnJvbSBtYWluIHRocmVhZCBvciBjb250ZXh0J3MgYXVkaW8gdGhyZWFkLgotICAgIHZv
aWQgcmVmKFJlZlR5cGUgcmVmVHlwZSA9IFJlZlR5cGVOb3JtYWwpOwotICAgIHZvaWQgZGVyZWYo
UmVmVHlwZSByZWZUeXBlID0gUmVmVHlwZU5vcm1hbCk7CisgICAgdm9pZCByZWYoKTsKKyAgICB2
b2lkIGRlcmVmKCk7CisgICAgdm9pZCBpbmNyZW1lbnRDb25uZWN0aW9uQ291bnQoKTsKKyAgICB2
b2lkIGRlY3JlbWVudENvbm5lY3Rpb25Db3VudCgpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBm
cm9tIG1haW4gdGhyZWFkIG9yIGNvbnRleHQncyBhdWRpbyB0aHJlYWQuICBJdCBtdXN0IGJlIGNh
bGxlZCB3aGlsZSB0aGUgY29udGV4dCdzIGdyYXBoIGxvY2sgaXMgaGVsZC4KLSAgICB2b2lkIGZp
bmlzaERlcmVmKFJlZlR5cGUgcmVmVHlwZSk7CisgICAgdm9pZCBkZWNyZW1lbnRDb25uZWN0aW9u
Q291bnRXaXRoTG9jaygpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVNYXJrZWRGb3JEZWxl
dGlvbigpIHsgfQogCiAgICAgLy8gVGhlIEF1ZGlvTm9kZUlucHV0KHMpIChpZiBhbnkpIHdpbGwg
YWxyZWFkeSBoYXZlIHRoZWlyIGlucHV0IGRhdGEgYXZhaWxhYmxlIHdoZW4gcHJvY2VzcygpIGlz
IGNhbGxlZC4KQEAgLTIwMiw2ICsxOTksOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRJbnB1
dChzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Ob2RlSW5wdXQ+KTsKICAgICB2b2lkIGFkZE91dHB1dChz
dGQ6OnVuaXF1ZV9wdHI8QXVkaW9Ob2RlT3V0cHV0Pik7CiAKKyAgICB2b2lkIG1hcmtOb2RlRm9y
RGVsZXRpb25JZk5lY2Vzc2FyeSgpOworICAgIHZvaWQgZGVyZWZXaXRoTG9jaygpOworCiAgICAg
c3RydWN0IERlZmF1bHRBdWRpb05vZGVPcHRpb25zIHsKICAgICAgICAgdW5zaWduZWQgY2hhbm5l
bENvdW50OwogICAgICAgICBDaGFubmVsQ291bnRNb2RlIGNoYW5uZWxDb3VudE1vZGU7CkBAIC0y
NzAsNiArMjcwLDIzIEBAIHByaXZhdGU6CiAgICAgQ2hhbm5lbEludGVycHJldGF0aW9uIG1fY2hh
bm5lbEludGVycHJldGF0aW9uIHsgQ2hhbm5lbEludGVycHJldGF0aW9uOjpTcGVha2VycyB9Owog
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEF1ZGlvTm9kZUNvbm5lY3Rpb25SZWZE
ZXJlZlRyYWl0cyB7CisgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCByZWZJZk5vdE51bGwo
VCogcHRyKQorICAgIHsKKyAgICAgICAgaWYgKExJS0VMWShwdHIgIT0gbnVsbHB0cikpCisgICAg
ICAgICAgICBwdHItPmluY3JlbWVudENvbm5lY3Rpb25Db3VudCgpOworICAgIH0KKworICAgIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZGVyZWZJZk5vdE51bGwoVCogcHRyKQorICAgIHsKKyAg
ICAgICAgaWYgKExJS0VMWShwdHIgIT0gbnVsbHB0cikpCisgICAgICAgICAgICBwdHItPmRlY3Jl
bWVudENvbm5lY3Rpb25Db3VudCgpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
Cit1c2luZyBBdWRpb0Nvbm5lY3Rpb25SZWZQdHIgPSBSZWZQdHI8VCwgRHVtYlB0clRyYWl0czxU
PiwgQXVkaW9Ob2RlQ29ubmVjdGlvblJlZkRlcmVmVHJhaXRzPFQ+PjsKKwogU3RyaW5nIGNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKEF1ZGlvTm9kZTo6Tm9kZVR5cGUpOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZUlucHV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Ob2RlSW5wdXQuY3BwCmluZGV4IGVjMjcyZWY0YjkzZTYwZDhjMTA2YjM4MjJkZGYyYmQ2NDcy
NDEzZmEuLjgwMzQ5NmNjMWRjYjJhYTVkMGNiNDAzNzRkYTI1ZmU3MGVjYTNiZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQuY3BwCkBA
IC01OSw5ICs1OSw2IEBAIHZvaWQgQXVkaW9Ob2RlSW5wdXQ6OmNvbm5lY3QoQXVkaW9Ob2RlT3V0
cHV0KiBvdXRwdXQpCiAKICAgICBvdXRwdXQtPmFkZElucHV0KHRoaXMpOwogICAgIGNoYW5nZWRP
dXRwdXRzKCk7Ci0KLSAgICAvLyBTb21ib2R5IGhhcyBqdXN0IGNvbm5lY3RlZCB0byB1cywgc28g
Y291bnQgaXQgYXMgYSByZWZlcmVuY2UuCi0gICAgbm9kZSgpLT5yZWYoQXVkaW9Ob2RlOjpSZWZU
eXBlQ29ubmVjdGlvbik7CiB9CiAKIHZvaWQgQXVkaW9Ob2RlSW5wdXQ6OmRpc2Nvbm5lY3QoQXVk
aW9Ob2RlT3V0cHV0KiBvdXRwdXQpCkBAIC03NSwxNSArNzIsMTMgQEAgdm9pZCBBdWRpb05vZGVJ
bnB1dDo6ZGlzY29ubmVjdChBdWRpb05vZGVPdXRwdXQqIG91dHB1dCkKICAgICAvLyBGaXJzdCB0
cnkgdG8gZGlzY29ubmVjdCBmcm9tICJhY3RpdmUiIGNvbm5lY3Rpb25zLgogICAgIGlmIChtX291
dHB1dHMucmVtb3ZlKG91dHB1dCkpIHsKICAgICAgICAgY2hhbmdlZE91dHB1dHMoKTsKLSAgICAg
ICAgb3V0cHV0LT5yZW1vdmVJbnB1dCh0aGlzKTsKLSAgICAgICAgbm9kZSgpLT5kZXJlZihBdWRp
b05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsgLy8gTm90ZTogaXQncyBpbXBvcnRhbnQgdG8gcmV0
dXJuIGltbWVkaWF0ZWx5IGFmdGVyIGFsbCBkZXJlZigpIGNhbGxzIHNpbmNlIHRoZSBub2RlIG1h
eSBiZSBkZWxldGVkLgorICAgICAgICBvdXRwdXQtPnJlbW92ZUlucHV0KHRoaXMpOyAvLyBOb3Rl
OiBpdCdzIGltcG9ydGFudCB0byByZXR1cm4gaW1tZWRpYXRlbHkgYWZ0ZXIgdGhpcyBzaW5jZSB0
aGUgbm9kZSBtYXkgYmUgZGVsZXRlZC4KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAg
ICAvLyBPdGhlcndpc2UsIHRyeSB0byBkaXNjb25uZWN0IGZyb20gZGlzYWJsZWQgY29ubmVjdGlv
bnMuCiAgICAgaWYgKG1fZGlzYWJsZWRPdXRwdXRzLnJlbW92ZShvdXRwdXQpKSB7Ci0gICAgICAg
IG91dHB1dC0+cmVtb3ZlSW5wdXQodGhpcyk7Ci0gICAgICAgIG5vZGUoKS0+ZGVyZWYoQXVkaW9O
b2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7IC8vIE5vdGU6IGl0J3MgaW1wb3J0YW50IHRvIHJldHVy
biBpbW1lZGlhdGVseSBhZnRlciBhbGwgZGVyZWYoKSBjYWxscyBzaW5jZSB0aGUgbm9kZSBtYXkg
YmUgZGVsZXRlZC4KKyAgICAgICAgb3V0cHV0LT5yZW1vdmVJbnB1dCh0aGlzKTsgLy8gTm90ZTog
aXQncyBpbXBvcnRhbnQgdG8gcmV0dXJuIGltbWVkaWF0ZWx5IGFmdGVyIHRoaXMgc2luY2UgdGhl
IG5vZGUgbWF5IGJlIGRlbGV0ZWQuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcAppbmRl
eCA2YjZkZTBiYzIzNTQ4ODJhY2U0MjYxMmQ1NTNjNzIyNzAzM2M4NzVjLi5iN2VlMmRmZGZjMmEz
YzFiNmM0YmUxZTlkYjFmYjA2YTgyY2I1NTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZv
aWQgQXVkaW9Ob2RlT3V0cHV0Ojpwcm9wYWdhdGVDaGFubmVsQ291bnQoKQogICAgIAogICAgIGlm
IChpc0NoYW5uZWxDb3VudEtub3duKCkpIHsKICAgICAgICAgLy8gQW5ub3VuY2UgdG8gYW55IG5v
ZGVzIHdlJ3JlIGNvbm5lY3RlZCB0byB0aGF0IHdlIGNoYW5nZWQgb3VyIGNoYW5uZWwgY291bnQg
Zm9yIGl0cyBpbnB1dC4KLSAgICAgICAgZm9yIChhdXRvJiBpbnB1dCA6IG1faW5wdXRzKSB7Cisg
ICAgICAgIGZvciAoYXV0byYgaW5wdXQgOiBtX2lucHV0cy5rZXlzKCkpIHsKICAgICAgICAgICAg
IEF1ZGlvTm9kZSogY29ubmVjdGlvbk5vZGUgPSBpbnB1dC0+bm9kZSgpOwogICAgICAgICAgICAg
Y29ubmVjdGlvbk5vZGUtPmNoZWNrTnVtYmVyT2ZDaGFubmVsc0ZvcklucHV0KGlucHV0KTsKICAg
ICAgICAgfQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgQXVkaW9Ob2RlT3V0cHV0OjphZGRJbnB1
dChBdWRpb05vZGVJbnB1dCogaW5wdXQpCiAgICAgaWYgKCFpbnB1dCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9pbnB1dHMuYWRkKGlucHV0KTsKKyAgICBtX2lucHV0cy5hZGQoaW5wdXQsIGlu
cHV0LT5ub2RlKCkpOwogfQogCiB2b2lkIEF1ZGlvTm9kZU91dHB1dDo6cmVtb3ZlSW5wdXQoQXVk
aW9Ob2RlSW5wdXQqIGlucHV0KQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgQXVkaW9Ob2RlT3V0
cHV0OjpkaXNjb25uZWN0QWxsSW5wdXRzKCkKICAgICAKICAgICAvLyBBdWRpb05vZGVJbnB1dDo6
ZGlzY29ubmVjdCgpIGNoYW5nZXMgbV9pbnB1dHMgYnkgY2FsbGluZyByZW1vdmVJbnB1dCgpLgog
ICAgIHdoaWxlICghbV9pbnB1dHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEF1ZGlvTm9kZUlucHV0
KiBpbnB1dCA9ICptX2lucHV0cy5iZWdpbigpOworICAgICAgICBBdWRpb05vZGVJbnB1dCogaW5w
dXQgPSBtX2lucHV0cy5iZWdpbigpLT5rZXk7CiAgICAgICAgIGlucHV0LT5kaXNjb25uZWN0KHRo
aXMpOwogICAgIH0KIH0KQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIEF1ZGlvTm9kZU91dHB1dDo6
ZGlzYWJsZSgpCiAgICAgQVNTRVJUKGNvbnRleHQoKS5pc0dyYXBoT3duZXIoKSk7CiAKICAgICBp
ZiAobV9pc0VuYWJsZWQpIHsKLSAgICAgICAgZm9yIChhdXRvJiBpbnB1dCA6IG1faW5wdXRzKQor
ICAgICAgICBmb3IgKGF1dG8mIGlucHV0IDogbV9pbnB1dHMua2V5cygpKQogICAgICAgICAgICAg
aW5wdXQtPmRpc2FibGUodGhpcyk7CiAgICAgICAgIG1faXNFbmFibGVkID0gZmFsc2U7CiAgICAg
fQpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgQXVkaW9Ob2RlT3V0cHV0OjplbmFibGUoKQogICAg
IEFTU0VSVChjb250ZXh0KCkuaXNHcmFwaE93bmVyKCkpOwogCiAgICAgaWYgKCFtX2lzRW5hYmxl
ZCkgewotICAgICAgICBmb3IgKGF1dG8mIGlucHV0IDogbV9pbnB1dHMpCisgICAgICAgIGZvciAo
YXV0byYgaW5wdXQgOiBtX2lucHV0cy5rZXlzKCkpCiAgICAgICAgICAgICBpbnB1dC0+ZW5hYmxl
KHRoaXMpOwogICAgICAgICBtX2lzRW5hYmxlZCA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmgKaW5kZXggYjJiNzZl
OTE5OTYyNWFmZDAzZTY1Yzc3ZTJkNTY1ZGJhNzM2NzcxMC4uY2NmOTVlZGExODMxNzgyMGI5NWZl
MWJjOTlkNzEzNDdlOGYxOGRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oCkBAIC0xNDAsOCArMTQwLDkgQEAgcHJpdmF0ZToKICAg
ICAvLyBJZiBtX2lzSW5QbGFjZSBpcyB0cnVlLCB1c2UgbV9pblBsYWNlQnVzIGFzIHRoZSB2YWxp
ZCBBdWRpb0J1czsgSWYgZmFsc2UsIHVzZSB0aGUgZGVmYXVsdCBtX2ludGVybmFsQnVzLgogICAg
IGJvb2wgbV9pc0luUGxhY2UgeyBmYWxzZSB9OwogCi0gICAgSGFzaFNldDxBdWRpb05vZGVJbnB1
dCo+IG1faW5wdXRzOwotICAgIHR5cGVkZWYgSGFzaFNldDxBdWRpb05vZGVJbnB1dCo+OjppdGVy
YXRvciBJbnB1dHNJdGVyYXRvcjsKKyAgICB1c2luZyBJbnB1dHNNYXAgPSBIYXNoTWFwPEF1ZGlv
Tm9kZUlucHV0KiwgQXVkaW9Db25uZWN0aW9uUmVmUHRyPEF1ZGlvTm9kZT4+OworICAgIElucHV0
c01hcCBtX2lucHV0czsKKyAgICB0eXBlZGVmIElucHV0c01hcDo6aXRlcmF0b3IgSW5wdXRzSXRl
cmF0b3I7CiAgICAgYm9vbCBtX2lzRW5hYmxlZCB7IHRydWUgfTsKIAogICAgIC8vIEZvciB0aGUg
cHVycG9zZXMgb2YgcmVuZGVyaW5nLCBrZWVwcyB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGlucHV0
cyBhbmQgQXVkaW9QYXJhbXMgd2UncmUgY29ubmVjdGVkIHRvLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5jcHAKaW5kZXggN2M5NjE5
ZjVkY2Q1MTFiMGFhODFjNDk3NjgyMzRlNmVhN2E3MjE1My4uY2M3ZWFiZTU2ODAzMmRmMTBlMDY5
YWY4NDExNzhhM2U3ODE4NmRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgQmFzZUF1
ZGlvQ29udGV4dDo6fkJhc2VBdWRpb0NvbnRleHQoKQogICAgIGlmIChtX2F1dG9tYXRpY1B1bGxO
b2Rlc05lZWRVcGRhdGluZykKICAgICAgICAgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMu
cmVzaXplKG1fYXV0b21hdGljUHVsbE5vZGVzLnNpemUoKSk7CiAgICAgQVNTRVJUKG1fcmVuZGVy
aW5nQXV0b21hdGljUHVsbE5vZGVzLmlzRW1wdHkoKSk7Ci0gICAgLy8gRklYTUU6IENhbiB3ZSBh
c3NlcnQgdGhhdCBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0IGlzIGVtcHR5PworICAgIC8vIEZJ
WE1FOiBDYW4gd2UgYXNzZXJ0IHRoYXQgbV9kZWZlcnJlZEJyZWFrQ29ubmVjdGlvbkxpc3QgaXMg
ZW1wdHk/CiAKICAgICBpZiAoIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpIHsKICAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlQXVkaW9Qcm9kdWNlcigqdGhp
cyk7CkBAIC02ODEsNyArNjgxLDYgQEAgdm9pZCBCYXNlQXVkaW9Db250ZXh0OjpyZWZOb2RlKEF1
ZGlvTm9kZSYgbm9kZSkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEF1dG9Mb2Nr
ZXIgbG9ja2VyKCp0aGlzKTsKICAgICAKLSAgICBub2RlLnJlZihBdWRpb05vZGU6OlJlZlR5cGVD
b25uZWN0aW9uKTsKICAgICBtX3JlZmVyZW5jZWROb2Rlcy5hcHBlbmQoJm5vZGUpOwogfQogCkBA
IC02ODksOCArNjg4LDYgQEAgdm9pZCBCYXNlQXVkaW9Db250ZXh0OjpkZXJlZk5vZGUoQXVkaW9O
b2RlJiBub2RlKQogewogICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CiAgICAgCi0gICAgbm9k
ZS5kZXJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKLQogICAgIEFTU0VSVChtX3Jl
ZmVyZW5jZWROb2Rlcy5jb250YWlucygmbm9kZSkpOwogICAgIG1fcmVmZXJlbmNlZE5vZGVzLnJl
bW92ZUZpcnN0KCZub2RlKTsKIH0KQEAgLTY5OCw5ICs2OTUsNiBAQCB2b2lkIEJhc2VBdWRpb0Nv
bnRleHQ6OmRlcmVmTm9kZShBdWRpb05vZGUmIG5vZGUpCiB2b2lkIEJhc2VBdWRpb0NvbnRleHQ6
OmRlcmVmVW5maW5pc2hlZFNvdXJjZU5vZGVzKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkgJiYgaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpOwotICAgIGZvciAoYXV0byYgbm9kZSA6IG1f
cmVmZXJlbmNlZE5vZGVzKQotICAgICAgICBub2RlLT5kZXJlZihBdWRpb05vZGU6OlJlZlR5cGVD
b25uZWN0aW9uKTsKLQogICAgIG1fcmVmZXJlbmNlZE5vZGVzLmNsZWFyKCk7CiB9CiAKQEAgLTc3
OCwxMCArNzcyLDEwIEBAIGJvb2wgQmFzZUF1ZGlvQ29udGV4dDo6aXNHcmFwaE93bmVyKCkgY29u
c3QKICAgICByZXR1cm4gbV9ncmFwaE93bmVyVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKTsK
IH0KIAotdm9pZCBCYXNlQXVkaW9Db250ZXh0OjphZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlv
Tm9kZSogbm9kZSkKK3ZvaWQgQmFzZUF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWREZWNyZW1lbnRD
b25uZWN0aW9uQ291bnQoQXVkaW9Ob2RlKiBub2RlKQogewogICAgIEFTU0VSVChpc0F1ZGlvVGhy
ZWFkKCkpOwotICAgIG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QuYXBwZW5kKG5vZGUpOworICAg
IG1fZGVmZXJyZWRCcmVha0Nvbm5lY3Rpb25MaXN0LmFwcGVuZChub2RlKTsKIH0KIAogdm9pZCBC
YXNlQXVkaW9Db250ZXh0OjpoYW5kbGVQcmVSZW5kZXJUYXNrcyhjb25zdCBBdWRpb0lPUG9zaXRp
b24mIG91dHB1dFBvc2l0aW9uKQpAQCAtODIxLDcgKzgxNSw3IEBAIHZvaWQgQmFzZUF1ZGlvQ29u
dGV4dDo6aGFuZGxlUG9zdFJlbmRlclRhc2tzKCkKICAgICBib29sIG11c3RSZWxlYXNlTG9jazsK
ICAgICBpZiAodHJ5TG9jayhtdXN0UmVsZWFzZUxvY2spKSB7CiAgICAgICAgIC8vIFRha2UgY2Fy
ZSBvZiBmaW5pc2hpbmcgYW55IGRlcmVmcyB3aGVyZSB0aGUgdHJ5TG9jaygpIGZhaWxlZCBwcmV2
aW91c2x5LgotICAgICAgICBoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpOworICAgICAgICBo
YW5kbGVEZWZlcnJlZERlY3JlbWVudENvbm5lY3Rpb25Db3VudHMoKTsKIAogICAgICAgICAvLyBE
eW5hbWljYWxseSBjbGVhbiB1cCBub2RlcyB3aGljaCBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KICAg
ICAgICAgZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKCk7CkBAIC04NDEsMTMgKzgzNSwxMyBAQCB2
b2lkIEJhc2VBdWRpb0NvbnRleHQ6OmhhbmRsZVBvc3RSZW5kZXJUYXNrcygpCiAgICAgfQogfQog
Ci12b2lkIEJhc2VBdWRpb0NvbnRleHQ6OmhhbmRsZURlZmVycmVkRmluaXNoRGVyZWZzKCkKK3Zv
aWQgQmFzZUF1ZGlvQ29udGV4dDo6aGFuZGxlRGVmZXJyZWREZWNyZW1lbnRDb25uZWN0aW9uQ291
bnRzKCkKIHsKICAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpICYmIGlzR3JhcGhPd25lcigpKTsK
LSAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0KQotICAgICAg
ICBub2RlLT5maW5pc2hEZXJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKKyAgICBm
b3IgKGF1dG8mIG5vZGUgOiBtX2RlZmVycmVkQnJlYWtDb25uZWN0aW9uTGlzdCkKKyAgICAgICAg
bm9kZS0+ZGVjcmVtZW50Q29ubmVjdGlvbkNvdW50V2l0aExvY2soKTsKICAgICAKLSAgICBtX2Rl
ZmVycmVkRmluaXNoRGVyZWZMaXN0LmNsZWFyKCk7CisgICAgbV9kZWZlcnJlZEJyZWFrQ29ubmVj
dGlvbkxpc3QuY2xlYXIoKTsKIH0KIAogdm9pZCBCYXNlQXVkaW9Db250ZXh0OjptYXJrRm9yRGVs
ZXRpb24oQXVkaW9Ob2RlJiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaAppbmRleCBiYzg4NTk2N2E3YTQzNWM0YjkxYjM5M2Vl
ZWVmYzQ5MTkzNjUxNDJiLi44ODY1ZWJmOGQ2YTBhZTNkZWM3MTNjMDc5ZjE1N2RlMDJiYTM3ZWEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0Nv
bnRleHQuaApAQCAtMjI5LDExICsyMjksMTEgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdGhl
IG1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzIHdlIGNhbiBzdXBwb3J0LgogICAgIHN0YXRpYyB1
bnNpZ25lZCBtYXhOdW1iZXJPZkNoYW5uZWxzKCkgeyByZXR1cm4gTWF4TnVtYmVyT2ZDaGFubmVs
czsgfQogICAgIAotICAgIC8vIEluIEF1ZGlvTm9kZTo6ZGVyZWYoKSBhIHRyeUxvY2soKSBpcyB1
c2VkIGZvciBjYWxsaW5nIGZpbmlzaERlcmVmKCksIGJ1dCBpZiBpdCBmYWlscyBrZWVwIHRyYWNr
IGhlcmUuCi0gICAgdm9pZCBhZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSopOworICAg
IC8vIEluIEF1ZGlvTm9kZTo6ZGVjcmVtZW50Q29ubmVjdGlvbkNvdW50KCkgYSB0cnlMb2NrKCkg
aXMgdXNlZCBmb3IgY2FsbGluZyBkZWNyZW1lbnRDb25uZWN0aW9uQ291bnRXaXRoTG9jaygpLCBi
dXQgaWYgaXQgZmFpbHMga2VlcCB0cmFjayBoZXJlLgorICAgIHZvaWQgYWRkRGVmZXJyZWREZWNy
ZW1lbnRDb25uZWN0aW9uQ291bnQoQXVkaW9Ob2RlKik7CiAKLSAgICAvLyBJbiB0aGUgYXVkaW8g
dGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5k
bGVEZWZlcnJlZEZpbmlzaERlcmVmcygpLgotICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRGaW5pc2hE
ZXJlZnMoKTsKKyAgICAvLyBJbiB0aGUgYXVkaW8gdGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNo
IHJlbmRlciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5kbGVEZWZlcnJlZERlY3JlbWVudENvbm5lY3Rp
b25Db3VudHMoKS4KKyAgICB2b2lkIGhhbmRsZURlZmVycmVkRGVjcmVtZW50Q29ubmVjdGlvbkNv
dW50cygpOwogCiAgICAgLy8gT25seSBhY2Nlc3NlZCB3aGVuIHRoZSBncmFwaCBsb2NrIGlzIGhl
bGQuCiAgICAgdm9pZCBtYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5nSnVuY3Rp
b24qKTsKQEAgLTM5NywxMCArMzk3LDggQEAgcHJpdmF0ZToKICAgICAvLyBPbmx5IGFjY2Vzc2Vk
IGluIHRoZSBhdWRpbyB0aHJlYWQuCiAgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fZmluaXNoZWRO
b2RlczsKIAotICAgIC8vIFdlIGRvbid0IHVzZSBSZWZQdHI8QXVkaW9Ob2RlPiBoZXJlIGJlY2F1
c2UgQXVkaW9Ob2RlIGhhcyBhIG1vcmUgY29tcGxleCByZWYoKSAvIGRlcmVmKCkgaW1wbGVtZW50
YXRpb24KLSAgICAvLyB3aXRoIGFuIG9wdGlvbmFsIGFyZ3VtZW50IGZvciByZWZUeXBlLiAgV2Ug
bmVlZCB0byB1c2UgdGhlIHNwZWNpYWwgcmVmVHlwZTogUmVmVHlwZUNvbm5lY3Rpb24KICAgICAv
LyBFaXRoZXIgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLCBvciBvbiB0aGUg
bWFpbiB0aHJlYWQgd2hlbiB0aGUgYXVkaW8gdGhyZWFkIGhhcyBmaW5pc2hlZC4KLSAgICBWZWN0
b3I8QXVkaW9Ob2RlKj4gbV9yZWZlcmVuY2VkTm9kZXM7CisgICAgVmVjdG9yPEF1ZGlvQ29ubmVj
dGlvblJlZlB0cjxBdWRpb05vZGU+PiBtX3JlZmVyZW5jZWROb2RlczsKIAogICAgIC8vIEFjY3Vt
dWxhdGUgbm9kZXMgd2hpY2ggbmVlZCB0byBiZSBkZWxldGVkIGhlcmUuCiAgICAgLy8gVGhpcyBp
cyBjb3BpZWQgdG8gbV9ub2Rlc1RvRGVsZXRlIGF0IHRoZSBlbmQgb2YgYSByZW5kZXIgY3ljbGUg
aW4gaGFuZGxlUG9zdFJlbmRlclRhc2tzKCksIHdoZXJlIHdlJ3JlIGFzc3VyZWQgb2YgYSBzdGFi
bGUgZ3JhcGgKQEAgLTQyNyw3ICs0MjUsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8QXVkaW9O
b2RlKj4gbV9hdXRvbWF0aWNQdWxsTm9kZXM7CiAgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVu
ZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzOwogICAgIC8vIE9ubHkgYWNjZXNzZWQgaW4gdGhlIGF1
ZGlvIHRocmVhZC4KLSAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9kZWZlcnJlZEZpbmlzaERlcmVm
TGlzdDsKKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9kZWZlcnJlZEJyZWFrQ29ubmVjdGlvbkxp
c3Q7CiAgICAgVmVjdG9yPFZlY3RvcjxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+PiBtX3N0YXRl
UmVhY3Rpb25zOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uPiBt
X21lZGlhU2Vzc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4IDlhYzdhZDNmYjdmZTUxYTNmNzAxN2I0
ZGFlZGNlMzQxZGE1MDEwZjQuLjIzN2U5MDE3MDIyZTcxNjMyZTY0MDU3NjNlMDkzMGFlY2IwNTNi
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3Jp
cHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtMTgzLDEyICsxODMsMTAgQEAgdm9pZCBTY3JpcHRQcm9j
ZXNzb3JOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgLy8gV2hlbiB0
aGlzIGhhcHBlbnMsIGZpcmUgYW4gZXZlbnQgYW5kIHN3YXAgYnVmZmVycy4KICAgICBpZiAoIW1f
YnVmZmVyUmVhZFdyaXRlSW5kZXgpIHsKICAgICAgICAgLy8gUmVmZXJlbmNlIG91cnNlbGYgc28g
d2UgZG9uJ3QgYWNjaWRlbnRhbGx5IGdldCBkZWxldGVkIGJlZm9yZSBmaXJlUHJvY2Vzc0V2ZW50
KCkgZ2V0cyBjYWxsZWQuCi0gICAgICAgIGF1dG8gcHJvdGVjdG9yID0gbWFrZVJlZigqdGhpcyk7
Ci0KICAgICAgICAgLy8gV2Ugb25seSB3YWl0IGZvciBzY3JpcHQgY29kZSBleGVjdXRpb24gd2hl
biB0aGUgY29udGV4dCBpcyBhbiBvZmZsaW5lIG9uZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4K
ICAgICAgICAgaWYgKGNvbnRleHQoKS5pc09mZmxpbmVDb250ZXh0KCkpIHsKICAgICAgICAgICAg
IEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzLCAmc2VtYXBob3JlLCBkb3VibGVCdWZmZXJJbmRleCA9IG1fZG91YmxlQnVmZmVySW5k
ZXhdIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsICZzZW1hcGhvcmUsIGRv
dWJsZUJ1ZmZlckluZGV4ID0gbV9kb3VibGVCdWZmZXJJbmRleCwgcHJvdGVjdG9yID0gbWFrZVJl
ZigqdGhpcyldIHsKICAgICAgICAgICAgICAgICBmaXJlUHJvY2Vzc0V2ZW50KGRvdWJsZUJ1ZmZl
ckluZGV4KTsKICAgICAgICAgICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7CiAgICAgICAgICAg
ICB9KTsKQEAgLTIwMiw3ICsyMDAsNyBAQCB2b2lkIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnByb2Nl
c3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGRvdWJsZUJ1
ZmZlckluZGV4ID0gbV9kb3VibGVCdWZmZXJJbmRleCwgcHJvdGVjdG9yID0gV1RGTW92ZShwcm90
ZWN0b3IpXSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBkb3VibGVCdWZm
ZXJJbmRleCA9IG1fZG91YmxlQnVmZmVySW5kZXgsIHByb3RlY3RvciA9IG1ha2VSZWYoKnRoaXMp
XSB7CiAgICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2Nr
KTsKICAgICAgICAgICAgICAgICBmaXJlUHJvY2Vzc0V2ZW50KGRvdWJsZUJ1ZmZlckluZGV4KTsK
ICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uY3BwCmluZGV4IDVlN2FlZjE2OGNhNzc3ZDhmNzE1ZDll
NDU2NGY4YzM5NDE1YzRhNTIuLjQ1Mzc4NWJlODA1M2Q4ZTI5OGM4OGI2MWU3MTNmNjhiOTllNDA4
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1Jl
ZlB0ckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9SZWZQdHJDYWlyby5jcHAKQEAgLTI1LDczICsyNSw3MyBAQAogCiBuYW1lc3BhY2UgV1RGIHsK
IAotdGVtcGxhdGU8PiB2b2lkIHJlZklmTm90TnVsbChjYWlyb190KiBwdHIpCit0ZW1wbGF0ZTw+
IHZvaWQgRGVmYXVsdFJlZkRlcmVmVHJhaXRzPGNhaXJvX3Q+OjpyZWZJZk5vdE51bGwoY2Fpcm9f
dCogcHRyKQogewogICAgIGlmIChMSUtFTFkocHRyKSkKICAgICAgICAgY2Fpcm9fcmVmZXJlbmNl
KHB0cik7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBkZXJlZklmTm90TnVsbChjYWlyb190KiBwdHIp
Cit0ZW1wbGF0ZTw+IHZvaWQgRGVmYXVsdFJlZkRlcmVmVHJhaXRzPGNhaXJvX3Q+OjpkZXJlZklm
Tm90TnVsbChjYWlyb190KiBwdHIpCiB7CiAgICAgaWYgKExJS0VMWShwdHIpKQogICAgICAgICBj
YWlyb19kZXN0cm95KHB0cik7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCByZWZJZk5vdE51bGwoY2Fp
cm9fc3VyZmFjZV90KiBwdHIpCit0ZW1wbGF0ZTw+IHZvaWQgRGVmYXVsdFJlZkRlcmVmVHJhaXRz
PGNhaXJvX3N1cmZhY2VfdD46OnJlZklmTm90TnVsbChjYWlyb19zdXJmYWNlX3QqIHB0cikKIHsK
ICAgICBpZiAoTElLRUxZKHB0cikpCiAgICAgICAgIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKHB0
cik7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBkZXJlZklmTm90TnVsbChjYWlyb19zdXJmYWNlX3Qq
IHB0cikKK3RlbXBsYXRlPD4gdm9pZCBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8Y2Fpcm9fc3VyZmFj
ZV90Pjo6ZGVyZWZJZk5vdE51bGwoY2Fpcm9fc3VyZmFjZV90KiBwdHIpCiB7CiAgICAgaWYgKExJ
S0VMWShwdHIpKQogICAgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kocHRyKTsKIH0KIAotdGVt
cGxhdGU8PiB2b2lkIHJlZklmTm90TnVsbChjYWlyb19mb250X2ZhY2VfdCogcHRyKQordGVtcGxh
dGU8PiB2b2lkIERlZmF1bHRSZWZEZXJlZlRyYWl0czxjYWlyb19mb250X2ZhY2VfdD46OnJlZklm
Tm90TnVsbChjYWlyb19mb250X2ZhY2VfdCogcHRyKQogewogICAgIGlmIChMSUtFTFkocHRyKSkK
ICAgICAgICAgY2Fpcm9fZm9udF9mYWNlX3JlZmVyZW5jZShwdHIpOwogfQogCi10ZW1wbGF0ZTw+
IHZvaWQgZGVyZWZJZk5vdE51bGwoY2Fpcm9fZm9udF9mYWNlX3QqIHB0cikKK3RlbXBsYXRlPD4g
dm9pZCBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8Y2Fpcm9fZm9udF9mYWNlX3Q+OjpkZXJlZklmTm90
TnVsbChjYWlyb19mb250X2ZhY2VfdCogcHRyKQogewogICAgIGlmIChMSUtFTFkocHRyKSkKICAg
ICAgICAgY2Fpcm9fZm9udF9mYWNlX2Rlc3Ryb3kocHRyKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lk
IHJlZklmTm90TnVsbChjYWlyb19zY2FsZWRfZm9udF90KiBwdHIpCit0ZW1wbGF0ZTw+IHZvaWQg
RGVmYXVsdFJlZkRlcmVmVHJhaXRzPGNhaXJvX3NjYWxlZF9mb250X3Q+OjpyZWZJZk5vdE51bGwo
Y2Fpcm9fc2NhbGVkX2ZvbnRfdCogcHRyKQogewogICAgIGlmIChMSUtFTFkocHRyKSkKICAgICAg
ICAgY2Fpcm9fc2NhbGVkX2ZvbnRfcmVmZXJlbmNlKHB0cik7CiB9CiAKLXRlbXBsYXRlPD4gdm9p
ZCBkZXJlZklmTm90TnVsbChjYWlyb19zY2FsZWRfZm9udF90KiBwdHIpCit0ZW1wbGF0ZTw+IHZv
aWQgRGVmYXVsdFJlZkRlcmVmVHJhaXRzPGNhaXJvX3NjYWxlZF9mb250X3Q+OjpkZXJlZklmTm90
TnVsbChjYWlyb19zY2FsZWRfZm9udF90KiBwdHIpCiB7CiAgICAgaWYgKExJS0VMWShwdHIpKQog
ICAgICAgICBjYWlyb19zY2FsZWRfZm9udF9kZXN0cm95KHB0cik7CiB9CiAKLXRlbXBsYXRlPD4g
dm9pZCByZWZJZk5vdE51bGwoY2Fpcm9fcGF0dGVybl90KiBwdHIpCit0ZW1wbGF0ZTw+IHZvaWQg
RGVmYXVsdFJlZkRlcmVmVHJhaXRzPGNhaXJvX3BhdHRlcm5fdD46OnJlZklmTm90TnVsbChjYWly
b19wYXR0ZXJuX3QqIHB0cikKIHsKICAgICBpZiAoTElLRUxZKHB0cikpCiAgICAgICAgIGNhaXJv
X3BhdHRlcm5fcmVmZXJlbmNlKHB0cik7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBkZXJlZklmTm90
TnVsbChjYWlyb19wYXR0ZXJuX3QqIHB0cikKK3RlbXBsYXRlPD4gdm9pZCBEZWZhdWx0UmVmRGVy
ZWZUcmFpdHM8Y2Fpcm9fcGF0dGVybl90Pjo6ZGVyZWZJZk5vdE51bGwoY2Fpcm9fcGF0dGVybl90
KiBwdHIpCiB7CiAgICAgaWYgKExJS0VMWShwdHIpKQogICAgICAgICBjYWlyb19wYXR0ZXJuX2Rl
c3Ryb3kocHRyKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIHJlZklmTm90TnVsbChjYWlyb19yZWdp
b25fdCogcHRyKQordGVtcGxhdGU8PiB2b2lkIERlZmF1bHRSZWZEZXJlZlRyYWl0czxjYWlyb19y
ZWdpb25fdD46OnJlZklmTm90TnVsbChjYWlyb19yZWdpb25fdCogcHRyKQogewogICAgIGlmIChM
SUtFTFkocHRyKSkKICAgICAgICAgY2Fpcm9fcmVnaW9uX3JlZmVyZW5jZShwdHIpOwogfQogCi10
ZW1wbGF0ZTw+IHZvaWQgZGVyZWZJZk5vdE51bGwoY2Fpcm9fcmVnaW9uX3QqIHB0cikKK3RlbXBs
YXRlPD4gdm9pZCBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8Y2Fpcm9fcmVnaW9uX3Q+OjpkZXJlZklm
Tm90TnVsbChjYWlyb19yZWdpb25fdCogcHRyKQogewogICAgIGlmIChMSUtFTFkocHRyKSkKICAg
ICAgICAgY2Fpcm9fcmVnaW9uX2Rlc3Ryb3kocHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0ckNhaXJvLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9SZWZQdHJDYWlyby5oCmluZGV4IGVjMDc2NzhkYjI0
ZmQzN2NiMjMyODkyYjQyOGJhZWI0N2MxMzVhODkuLjYzZmE2YWFiOWQzZDM3NmI2ZGYwNGI1ZWZi
ZGNmMmVjYThlNDhkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1JlZlB0ckNhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uaApAQCAtMzMsMjMgKzMzLDQxIEBAIHR5cGVkZWYgc3Ry
dWN0IF9jYWlyb19yZWdpb24gY2Fpcm9fcmVnaW9uX3Q7CiAKIG5hbWVzcGFjZSBXVEYgewogCi10
ZW1wbGF0ZTw+IHZvaWQgcmVmSWZOb3ROdWxsKGNhaXJvX3QqIHB0cik7Ci10ZW1wbGF0ZTw+IFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGVyZWZJZk5vdE51bGwoY2Fpcm9fdCogcHRyKTsKK3RlbXBsYXRl
PD4KK3N0cnVjdCBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8Y2Fpcm9fdD4geworICAgIHN0YXRpYyB2
b2lkIHJlZklmTm90TnVsbChjYWlyb190KiBwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyB2b2lkIGRlcmVmSWZOb3ROdWxsKGNhaXJvX3QqIHB0cik7Cit9OwogCi10ZW1wbGF0ZTw+IFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVmSWZOb3ROdWxsKGNhaXJvX3N1cmZhY2VfdCogcHRyKTsKLXRl
bXBsYXRlPD4gV0VCQ09SRV9FWFBPUlQgdm9pZCBkZXJlZklmTm90TnVsbChjYWlyb19zdXJmYWNl
X3QqIHB0cik7Cit0ZW1wbGF0ZTw+CitzdHJ1Y3QgRGVmYXVsdFJlZkRlcmVmVHJhaXRzPGNhaXJv
X3N1cmZhY2VfdD4geworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZklmTm90TnVs
bChjYWlyb19zdXJmYWNlX3QqIHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
ZGVyZWZJZk5vdE51bGwoY2Fpcm9fc3VyZmFjZV90KiBwdHIpOworfTsKIAotdGVtcGxhdGU8PiB2
b2lkIHJlZklmTm90TnVsbChjYWlyb19mb250X2ZhY2VfdCogcHRyKTsKLXRlbXBsYXRlPD4gdm9p
ZCBkZXJlZklmTm90TnVsbChjYWlyb19mb250X2ZhY2VfdCogcHRyKTsKK3RlbXBsYXRlPD4KK3N0
cnVjdCBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8Y2Fpcm9fZm9udF9mYWNlX3Q+IHsKKyAgICBzdGF0
aWMgdm9pZCByZWZJZk5vdE51bGwoY2Fpcm9fZm9udF9mYWNlX3QqIHB0cik7CisgICAgc3RhdGlj
IHZvaWQgZGVyZWZJZk5vdE51bGwoY2Fpcm9fZm9udF9mYWNlX3QqIHB0cik7Cit9OwogCi10ZW1w
bGF0ZTw+IHZvaWQgcmVmSWZOb3ROdWxsKGNhaXJvX3NjYWxlZF9mb250X3QqIHB0cik7Ci10ZW1w
bGF0ZTw+IHZvaWQgZGVyZWZJZk5vdE51bGwoY2Fpcm9fc2NhbGVkX2ZvbnRfdCogcHRyKTsKK3Rl
bXBsYXRlPD4KK3N0cnVjdCBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8Y2Fpcm9fc2NhbGVkX2ZvbnRf
dD4geworICAgIHN0YXRpYyB2b2lkIHJlZklmTm90TnVsbChjYWlyb19zY2FsZWRfZm9udF90KiBw
dHIpOworICAgIHN0YXRpYyB2b2lkIGRlcmVmSWZOb3ROdWxsKGNhaXJvX3NjYWxlZF9mb250X3Qq
IHB0cik7Cit9OwogCi10ZW1wbGF0ZTw+IHZvaWQgcmVmSWZOb3ROdWxsKGNhaXJvX3BhdHRlcm5f
dCopOwotdGVtcGxhdGU8PiB2b2lkIGRlcmVmSWZOb3ROdWxsKGNhaXJvX3BhdHRlcm5fdCopOwor
dGVtcGxhdGU8Pgorc3RydWN0IERlZmF1bHRSZWZEZXJlZlRyYWl0czxjYWlyb19wYXR0ZXJuX3Q+
IHsKKyAgICBzdGF0aWMgdm9pZCByZWZJZk5vdE51bGwoY2Fpcm9fcGF0dGVybl90Kik7CisgICAg
c3RhdGljIHZvaWQgZGVyZWZJZk5vdE51bGwoY2Fpcm9fcGF0dGVybl90Kik7Cit9OwogCi10ZW1w
bGF0ZTw+IHZvaWQgcmVmSWZOb3ROdWxsKGNhaXJvX3JlZ2lvbl90Kik7Ci10ZW1wbGF0ZTw+IHZv
aWQgZGVyZWZJZk5vdE51bGwoY2Fpcm9fcmVnaW9uX3QqKTsKK3RlbXBsYXRlPD4KK3N0cnVjdCBE
ZWZhdWx0UmVmRGVyZWZUcmFpdHM8Y2Fpcm9fcmVnaW9uX3Q+IHsKKyAgICBzdGF0aWMgdm9pZCBy
ZWZJZk5vdE51bGwoY2Fpcm9fcmVnaW9uX3QqKTsKKyAgICBzdGF0aWMgdm9pZCBkZXJlZklmTm90
TnVsbChjYWlyb19yZWdpb25fdCopOworfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409647</attachid>
            <date>2020-09-24 18:37:12 -0700</date>
            <delta_ts>2020-09-24 18:49:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216945-20200924183711.patch</filename>
            <type>text/plain</type>
            <size>50237</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
Mzc3MzlkZGM1NGYxNjhjZDRmOTAwZTY1MTJjYzA3NmQyMTIxYmUxLi43ZWRkMzRkYWRiNDIyYWNh
YTFjY2I0MWM3M2Q4OTEzMzZhZWVlNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMC0wOS0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEdldCByaWQgb2YgQXVkaW9Ob2RlOjpSZWZUeXBlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY5NDUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
OgorICAgICAgICAoSlNDOjpDYWNoZWRSZWZQdHI6OmRlY29kZSBjb25zdCk6CisKIDIwMjAtMDkt
MjQgIEJhc3VrZSBTdXp1a2kgIDxiYXN1a2Uuc3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtQ
bGF5U3RhdGlvbl0gU3RvcCByYWlzaW5nIFNJR1BJUEUgd2hlbiBjbGllbnQgc2lkZSBvZiBSZW1v
dGVJbnNwZWN0b3IgZGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwppbmRleCBhYjgwMjA1NjZiMDQzZTY1MTcwZWI3NmRiNDI3OTUwZmI1
OTZlMjIwLi42ODJkMTc4MDZhZjExMDJjNGM1OTFkOTcxZjYyNmNkOTgwMzZjNTBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMzIEBACisyMDIwLTA5LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgR2V0IHJpZCBvZiBBdWRpb05vZGU6OlJlZlR5cGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk0NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aGlyZCB0ZW1wbGF0ZSBwYXJh
bWV0ZXIgdG8gUmVmUHRyIGFsbG93aW5nIHRvIGRlZmluZSB0aGUgdHJhaXRzCisgICAgICAgIGZy
b20gaW5jcmVtZW50aW5nIC8gZGVjcmVtZW50aW5nIHRoZSByZWZjb3VudC4gVGhlIGRlZmF1bHQg
dHJhaXRzCisgICAgICAgIGNhbGwgcmVmKCkgLyBkZXJlZigpIGJ1dCB0aGlzIGNhbiBub3cgYmUg
Y3VzdG9taXplZCB0byBjYWxsIG90aGVyCisgICAgICAgIGZ1bmN0aW9ucy4KKworICAgICAgICAq
IHd0Zi9Db21wYWN0UmVmUHRyVHVwbGUuaDoKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOgorICAg
ICAgICAqIHd0Zi9SZWZQdHIuaDoKKyAgICAgICAgKFdURjo6RGVmYXVsdFJlZkRlcmVmVHJhaXRz
OjpyZWZJZk5vdE51bGwpOgorICAgICAgICAoV1RGOjpEZWZhdWx0UmVmRGVyZWZUcmFpdHM6OmRl
cmVmSWZOb3ROdWxsKToKKyAgICAgICAgKFdURjo6UmVmUHRyOjpSZWZQdHIpOgorICAgICAgICAo
V1RGOjpSZWZQdHI6On5SZWZQdHIpOgorICAgICAgICAoV1RGOjpWPjo6UmVmUHRyKToKKyAgICAg
ICAgKFdURjo6Vj46OmxlYWtSZWYpOgorICAgICAgICAoV1RGOjo9KToKKyAgICAgICAgKFdURjo6
Vj46OnN3YXApOgorICAgICAgICAoV1RGOjpzd2FwKToKKyAgICAgICAgKFdURjo6b3BlcmF0b3I9
PSk6CisgICAgICAgIChXVEY6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV1RGOjpzdGF0aWNfcG9p
bnRlcl9jYXN0KToKKyAgICAgICAgKFdURjo6YWRvcHRSZWYpOgorICAgICAgICAoV1RGOjppcyk6
CisKIDIwMjAtMDktMjQgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtMRkNdW0ludGVncmF0aW9uXSBFbmFibGUgb24gQXBwbGUgV2luZG93cyBwb3J0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNzMwZjY1MjdmMTc1YjlhM2FmMzg1OGIwN2I4MzU4MWI4NmUxZmIzMy4uZTJkYWFm
NWRjZjE1NWVkNWFiZDNjMmU1YjA2OTMyMzY2YTBmMGE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDcyIEBACisyMDIwLTA5LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgR2V0IHJpZCBvZiBBdWRpb05vZGU6OlJlZlR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk0NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZpb3VzbHksIHRoZSBub2RlIGhhZCByZWYo
KS9kZXJlZigpIGZ1bmN0aW9uIHRha2luZyBhIFJlZlR5cGUgcGFyYW1ldGVyLgorICAgICAgICBU
aGUgUmVmVHlwZSB3b3VsZCBiZSB1c2VkIHRvIGRldGVybWluZSB3aGljaCBjb3VudGVyIHNob3Vs
ZCBiZSBpbmNyZW1lbnRlZAorICAgICAgICBvciBkZWNyZW1lbnRlZDogZWl0aGVyIG1fbm9ybWFs
UmVmQ291bnQgb3IgbV9jb25uZWN0aW9uUmVmQ291bnQuCisKKyAgICAgICAgSW4gYSBwcmV2aW91
cyBwYXRjaCwgSSBoYXZlIGFscmVhZHkgcG9ydGVkIGNvZGUgdGhhdCB3YXMgY2FsbGluZyByZWYo
KSAvIGRlcmVmKCkKKyAgICAgICAgZXhwbGljaXRseSB3aXRoIFJlZlR5cGVOb3JtYWwgdG8gdXNl
IFJlZlB0cjw+IGluc3RlYWQuIFRoaXMgcGF0Y2ggZ29lcyBmdXJ0aGVyIGJ5OgorICAgICAgICAx
LiBEcm9wcGluZyB0aGUgUmVmVHlwZSBwYXJhbWV0ZXIgdG8gcmVmKCkgLyBkZXJlZigpLiByZWYo
KSAvIGRlcmVmKCkgbm93IGluY3JlbWVudAorICAgICAgICAgICBvciBkZWNyZW1lbnQgbV9ub3Jt
YWxSZWZDb3VudCBvbmx5LiBDbGllbnRzIGFyZSBleHBlY3RlZCB0byB1c2UgUmVmUHRyIHRvIGhh
bmRsZQorICAgICAgICAgICByZWYgY291bnRpbmcuCisgICAgICAgIDIuIEludHJvZHVjZSBuZXcg
aW5jcmVtZW50Q29ubmVjdGlvbkNvdW50KCkgLyBkZWNyZW1lbnRDb25uZWN0aW9uQ291bnQoKSB0
byBpbmNyZW1lbnQKKyAgICAgICAgICAgb3IgZGVjcmVtZW50IG1fY29ubmVjdGlvblJlZkNvdW50
LiBUbyByZWR1Y2UgdGhlIGNoYW5jZSBvZiBsZWFrYWdlLCBjbGllbnRzIHNob3VsZAorICAgICAg
ICAgICBub3QgY2FsbCB0aGVzZSBmdW5jdGlvbnMgZGlyZWN0bHkgYW55bW9yZS4gSW5zdGVhZCwg
dGhleSB1c2UgdXNlIHRoZSBuZXcKKyAgICAgICAgICAgQXVkaW9Db25uZWN0aW9uUmVmUHRyPD4g
cG9pbnRlciB0eXBlIHRvIGhhbmRsZSB0aGUgY29ubmVjdGlvbiByZWYgY291bnRpbmcgZm9yIHRo
ZW0uCisgICAgICAgICAgIEF1ZGlvQ29ubmVjdGlvblJlZlB0cjw+IGlzIGEgUmVmUHRyPD4gd2hp
Y2ggc3BlY2lhbCB0cmFpdHMgY2F1c2luZyBpbmNyZW1lbnRDb25uZWN0aW9uQ291bnQoKQorICAg
ICAgICAgICBhbmQgZGVjcmVtZW50Q29ubmVjdGlvbkNvdW50KCkgdG8gZ2V0IGNhbGxlZCBvbiB0
aGUgQXVkaW9Ob2RlIGluc3RlYWQgb2YgcmVmKCkgYW5kCisgICAgICAgICAgIGRlcmVmKCkuCisK
KyAgICAgICAgSSBiZWxpZXZlIHRoaXMgbmV3IGRlc2lnbiBpcyBhIGJpdCBzaW1wbGVyIHRvIHJl
YXNvbiBhYm91dCBhbmQgbGVzcyBwcm9uZSB0byBsZWFrcy4KKyAgICAgICAgVGhlcmUgaXMgbm8g
bG9uZ2VyIGFueSBjb2RlIGV4cGxpY2l0bHkgcmVmJ2luZyBvciBkZXJlZidpbmcgdGhlIEF1ZGlv
Tm9kZXMuIEluc3RlYWQsCisgICAgICAgIFJlZlB0cjw+IG9yIEF1ZGlvQ29ubmVjdGlvblJlZlB0
cjw+IGlzIHVzZWQgdG8gaW5jcmVtZW50L2RlY3JlbWVudCB0aGUgcmlnaHQgaW50ZXJuYWwKKyAg
ICAgICAgY291bnQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBXZWItZmFjaW5nIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0
UGFubmVyTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmNs
ZWFyUGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNv
dXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmRpc2FibGVPdXRwdXRzSWZOZWNlc3NhcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjppbmNyZW1lbnRDb25uZWN0aW9uQ291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpkZWNyZW1lbnRDb25uZWN0aW9uQ291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpkZWNyZW1lbnRDb25uZWN0aW9uQ291bnRXaXRo
TG9jayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6Om1hcmtOb2RlRm9yRGVsZXRpb25J
Zk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OnJlZik6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb05vZGU6OmRlcmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9k
ZTo6ZGVyZWZXaXRoTG9jayk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUNvbm5lY3Rpb25SZWZEZXJlZlRyYWl0czo6
cmVmSWZOb3ROdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUNvbm5lY3Rpb25SZWZE
ZXJlZlRyYWl0czo6ZGVyZWZJZk5vdE51bGwpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Ob2RlSW5wdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6OmNv
bm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6OmRpc2Nvbm5lY3QpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvTm9kZU91dHB1dDo6cHJvcGFnYXRlQ2hhbm5lbENvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvTm9kZU91dHB1dDo6YWRkSW5wdXQpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Ob2RlT3V0cHV0OjpkaXNjb25uZWN0QWxsSW5wdXRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvTm9kZU91dHB1dDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05v
ZGVPdXRwdXQ6OmVuYWJsZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVP
dXRwdXQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6fkJhc2VBdWRpb0NvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6cmVmTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpCYXNlQXVkaW9Db250ZXh0OjpkZXJlZk5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QmFzZUF1ZGlvQ29udGV4dDo6ZGVyZWZVbmZpbmlzaGVkU291cmNlTm9kZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWREZWNyZW1lbnRDb25uZWN0
aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6aGFuZGxlUG9z
dFJlbmRlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb0NvbnRleHQ6OmhhbmRs
ZURlZmVycmVkRGVjcmVtZW50Q29ubmVjdGlvbkNvdW50cyk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nv
ck5vZGU6OnByb2Nlc3MpOgorCiAyMDIwLTA5LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgVXNlIG1vcmUgaW5saW5lIGluaXRpYWxpemF0aW9uIGFuZCBjb25z
dGV4cHIgaW4gV2ViQXVkaW8gY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHlwZXMuY3BwCmluZGV4IDU0NzU3NjQ2ZDcwMjBkNTBlYmU3ZTQ1ZjFjMzI4OTk5YzY0
MGY2NGMuLmU0NGMxYTM5Nzk0YjI0YmNkODdhZWYzOThhN2MyODI1N2VmMGM1MmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTU1NCwxMCAr
NTU0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBp
ZiAoaXNOZXdBbGxvY2F0aW9uKSB7CiAgICAgICAgICAgICBkZWNvZGVyLmFkZEZpbmFsaXplcihb
PV0gewotICAgICAgICAgICAgICAgIGRlcmVmSWZOb3ROdWxsKGRlY29kZWRQdHIpOworICAgICAg
ICAgICAgICAgIFdURjo6RGVmYXVsdFJlZkRlcmVmVHJhaXRzPFNvdXJjZT46OmRlcmVmSWZOb3RO
dWxsKGRlY29kZWRQdHIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLSAgICAgICAgcmVm
SWZOb3ROdWxsKGRlY29kZWRQdHIpOworICAgICAgICBXVEY6OkRlZmF1bHRSZWZEZXJlZlRyYWl0
czxTb3VyY2U+OjpyZWZJZk5vdE51bGwoZGVjb2RlZFB0cik7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihkZWNvZGVkUHRyKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Nv
bXBhY3RSZWZQdHJUdXBsZS5oIGIvU291cmNlL1dURi93dGYvQ29tcGFjdFJlZlB0clR1cGxlLmgK
aW5kZXggMWFmMmUwNjNjOTAwZWQ4Mjc1NTI3MzI0MzA4NjY4M2VmZjBhMTI3MC4uNjQ2Y2FkNjQy
MjNlMmM5ZTZjODExODVjYTllYWRhZTMxYmE5ZGUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvQ29tcGFjdFJlZlB0clR1cGxlLmgKKysrIGIvU291cmNlL1dURi93dGYvQ29tcGFjdFJlZlB0
clR1cGxlLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIENvbXBhY3RSZWZQdHJUdXBs
ZSgpID0gZGVmYXVsdDsKICAgICB+Q29tcGFjdFJlZlB0clR1cGxlKCkKICAgICB7Ci0gICAgICAg
IGRlcmVmSWZOb3ROdWxsKG1fZGF0YS5wb2ludGVyKCkpOworICAgICAgICBXVEY6OkRlZmF1bHRS
ZWZEZXJlZlRyYWl0czxUPjo6ZGVyZWZJZk5vdE51bGwobV9kYXRhLnBvaW50ZXIoKSk7CiAgICAg
fQogCiAgICAgVCogcG9pbnRlcigpIGNvbnN0CkBAIC00OSwxMCArNDksMTAgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRQb2ludGVyKFQqIHBvaW50ZXIpCiAgICAgewotICAgICAgICByZWZJZk5v
dE51bGwocG9pbnRlcik7CisgICAgICAgIFdURjo6RGVmYXVsdFJlZkRlcmVmVHJhaXRzPFQ+Ojpy
ZWZJZk5vdE51bGwocG9pbnRlcik7CiAgICAgICAgIGF1dG8qIG9sZCA9IG1fZGF0YS5wb2ludGVy
KCk7CiAgICAgICAgIG1fZGF0YS5zZXRQb2ludGVyKHBvaW50ZXIpOwotICAgICAgICBkZXJlZklm
Tm90TnVsbChvbGQpOworICAgICAgICBXVEY6OkRlZmF1bHRSZWZEZXJlZlRyYWl0czxUPjo6ZGVy
ZWZJZk5vdE51bGwob2xkKTsKICAgICB9CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2RhdGEudHlwZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKaW5kZXggMzE2MmQxY2E0ODg2MmQzYjE4ODM5ZjVi
OTc0ZjZmNjNjMTc2YmU3ZC4uNTRjMGY3MmEzZTI3OTlhZWUyYWQ0YTY5MTUzYjBiNzIwMGQ3N2Ix
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0ZvcndhcmQuaApAQCAtNTksNiArNTksNyBAQCB1c2luZyBWZWN0b3JNYWxsb2MgPSBGYXN0
TWFsbG9jOwogI2VuZGlmCiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRHVtYlB0clRyYWl0
czsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRGVmYXVsdFJlZkRlcmVmVHJhaXRzOwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgQ29tcGxldGlvbkhhbmRsZXI7CiB0ZW1wbGF0ZTx0eXBl
bmFtZT4gY2xhc3MgRnVuY3Rpb247CkBAIC02OSw3ICs3MCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
PiBjbGFzcyBPcHRpb25hbDsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBQYWNrZWQ7CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgPSBhbGlnbm9mKFQpPiBjbGFzcyBQYWNrZWRBbGlnbmVk
UHRyOwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBEdW1iUHRyVHJhaXRzPFQ+PiBj
bGFzcyBSZWY7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IER1bWJQdHJUcmFpdHM8
VD4+IGNsYXNzIFJlZlB0cjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gRHVtYlB0
clRyYWl0czxUPiwgdHlwZW5hbWUgPSBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8VD4+IGNsYXNzIFJl
ZlB0cjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTdHJpbmdCdWZmZXI7CiB0ZW1wbGF0ZTx0
eXBlbmFtZT4gY2xhc3MgU3RyaW5nUGFyc2luZ0J1ZmZlcjsKIHRlbXBsYXRlPHR5cGVuYW1lLCB0
eXBlbmFtZSA9IHZvaWQ+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAppbmRleCBkZGJh
MjY2ZTQxZmNkOWY1NGU1MGY5MjYxNGNjMjIzZjA2ZjA1YzMwLi4wOTIzMmNiY2UyNzdiMWRiYmU1
ZjIxNmE1YzhjMjJmNDVjYWFhZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtMjksNDUgKzI5LDQ4IEBACiAKIG5h
bWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQdHJUcmFpdHM+
IGNsYXNzIFJlZlB0cjsKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFB0clRyYWl0cyA9
IER1bWJQdHJUcmFpdHM8VD4+IFJlZlB0cjxULCBQdHJUcmFpdHM+IGFkb3B0UmVmKFQqKTsKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0UmVmRGVyZWZUcmFpdHMgeworICAgIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcmVmSWZOb3ROdWxsKFQqIHB0cikKKyAgICB7CisgICAg
ICAgIGlmIChMSUtFTFkocHRyICE9IG51bGxwdHIpKQorICAgICAgICAgICAgcHRyLT5yZWYoKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGRlcmVmSWZOb3ROdWxsKFQq
IHB0cikKKyAgICB7CisgICAgICAgIGlmIChMSUtFTFkocHRyICE9IG51bGxwdHIpKQorICAgICAg
ICAgICAgcHRyLT5kZXJlZigpOworICAgIH0KK307CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IEFM
V0FZU19JTkxJTkUgdm9pZCByZWZJZk5vdE51bGwoVCogcHRyKQotewotICAgIGlmIChMSUtFTFko
cHRyICE9IG51bGxwdHIpKQotICAgICAgICBwdHItPnJlZigpOwotfQordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgUHRyVHJhaXRzLCB0eXBlbmFtZSBSZWZEZXJlZlRyYWl0cz4gY2xhc3Mg
UmVmUHRyOwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUHRyVHJhaXRzID0gRHVtYlB0
clRyYWl0czxUPiwgdHlwZW5hbWUgUmVmRGVyZWZUcmFpdHMgPSBEZWZhdWx0UmVmRGVyZWZUcmFp
dHM8VD4+IFJlZlB0cjxULCBQdHJUcmFpdHMsIFJlZkRlcmVmVHJhaXRzPiBhZG9wdFJlZihUKik7
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IEFMV0FZU19JTkxJTkUgdm9pZCBkZXJlZklmTm90TnVs
bChUKiBwdHIpCi17Ci0gICAgaWYgKExJS0VMWShwdHIgIT0gbnVsbHB0cikpCi0gICAgICAgIHB0
ci0+ZGVyZWYoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHJhaXRzPgor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgX1B0clRyYWl0cywgdHlwZW5hbWUgX1JlZkRl
cmVmVHJhaXRzPgogY2xhc3MgUmVmUHRyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICB1c2luZyBQdHJUcmFpdHMgPSBUcmFpdHM7CisgICAgdXNpbmcgUHRyVHJh
aXRzID0gX1B0clRyYWl0czsKKyAgICB1c2luZyBSZWZEZXJlZlRyYWl0cyA9IF9SZWZEZXJlZlRy
YWl0czsKICAgICB0eXBlZGVmIFQgVmFsdWVUeXBlOwogICAgIHR5cGVkZWYgVmFsdWVUeXBlKiBQ
dHJUeXBlOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUmVmUHRyID0gdHJ1ZTsKIAog
ICAgIEFMV0FZU19JTkxJTkUgY29uc3RleHByIFJlZlB0cigpIDogbV9wdHIobnVsbHB0cikgeyB9
Ci0gICAgQUxXQVlTX0lOTElORSBSZWZQdHIoVCogcHRyKSA6IG1fcHRyKHB0cikgeyByZWZJZk5v
dE51bGwocHRyKTsgfQotICAgIEFMV0FZU19JTkxJTkUgUmVmUHRyKGNvbnN0IFJlZlB0ciYgbykg
OiBtX3B0cihvLm1fcHRyKSB7IHJlZklmTm90TnVsbChQdHJUcmFpdHM6OnVud3JhcChtX3B0cikp
OyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4gUmVmUHRyKGNvbnN0IFJl
ZlB0cjxYLCBZPiYgbykgOiBtX3B0cihvLmdldCgpKSB7IHJlZklmTm90TnVsbChQdHJUcmFpdHM6
OnVud3JhcChtX3B0cikpOyB9CisgICAgQUxXQVlTX0lOTElORSBSZWZQdHIoVCogcHRyKSA6IG1f
cHRyKHB0cikgeyBSZWZEZXJlZlRyYWl0czo6cmVmSWZOb3ROdWxsKHB0cik7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIFJlZlB0cihjb25zdCBSZWZQdHImIG8pIDogbV9wdHIoby5tX3B0cikgeyBSZWZE
ZXJlZlRyYWl0czo6cmVmSWZOb3ROdWxsKFB0clRyYWl0czo6dW53cmFwKG1fcHRyKSk7IH0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZLCB0eXBlbmFtZSBaPiBSZWZQdHIoY29u
c3QgUmVmUHRyPFgsIFksIFo+JiBvKSA6IG1fcHRyKG8uZ2V0KCkpIHsgUmVmRGVyZWZUcmFpdHM6
OnJlZklmTm90TnVsbChQdHJUcmFpdHM6OnVud3JhcChtX3B0cikpOyB9CiAKICAgICBBTFdBWVNf
SU5MSU5FIFJlZlB0cihSZWZQdHImJiBvKSA6IG1fcHRyKG8ubGVha1JlZigpKSB7IH0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPiBSZWZQdHIoUmVmUHRyPFgsIFk+JiYgbykg
OiBtX3B0cihvLmxlYWtSZWYoKSkgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5h
bWUgWSwgdHlwZW5hbWUgWj4gUmVmUHRyKFJlZlB0cjxYLCBZLCBaPiYmIG8pIDogbV9wdHIoby5s
ZWFrUmVmKCkpIHsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+IFJlZlB0
cihSZWY8WCwgWT4mJik7CiAKICAgICAvLyBIYXNoIHRhYmxlIGRlbGV0ZWQgdmFsdWVzLCB3aGlj
aCBhcmUgb25seSBjb25zdHJ1Y3RlZCBhbmQgbmV2ZXIgY29waWVkIG9yIGRlc3Ryb3llZC4KICAg
ICBSZWZQdHIoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3B0cihQdHJUcmFpdHM6Omhh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpKSB7IH0KICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gUHRyVHJhaXRzOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSht
X3B0cik7IH0KIAotICAgIEFMV0FZU19JTkxJTkUgflJlZlB0cigpIHsgZGVyZWZJZk5vdE51bGwo
UHRyVHJhaXRzOjpleGNoYW5nZShtX3B0ciwgbnVsbHB0cikpOyB9CisgICAgQUxXQVlTX0lOTElO
RSB+UmVmUHRyKCkgeyBSZWZEZXJlZlRyYWl0czo6ZGVyZWZJZk5vdE51bGwoUHRyVHJhaXRzOjpl
eGNoYW5nZShtX3B0ciwgbnVsbHB0cikpOyB9CiAKICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVy
biBQdHJUcmFpdHM6OnVud3JhcChtX3B0cik7IH0KIApAQCAtOTAsMTIgKzkzLDEyIEBAIHB1Ymxp
YzoKICAgICBSZWZQdHImIG9wZXJhdG9yPShjb25zdCBSZWZQdHImKTsKICAgICBSZWZQdHImIG9w
ZXJhdG9yPShUKik7CiAgICAgUmVmUHRyJiBvcGVyYXRvcj0oc3RkOjpudWxscHRyX3QpOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+IFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0
IFJlZlB0cjxYLCBZPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFksIHR5
cGVuYW1lIFo+IFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFJlZlB0cjxYLCBZLCBaPiYpOwogICAg
IFJlZlB0ciYgb3BlcmF0b3I9KFJlZlB0ciYmKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0
eXBlbmFtZSBZPiBSZWZQdHImIG9wZXJhdG9yPShSZWZQdHI8WCwgWT4mJik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWSwgdHlwZW5hbWUgWj4gUmVmUHRyJiBvcGVyYXRvcj0o
UmVmUHRyPFgsIFksIFo+JiYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFg+IFJlZlB0ciYgb3Bl
cmF0b3I9KFJlZjxYPiYmKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+
IHZvaWQgc3dhcChSZWZQdHI8WCwgWT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBl
bmFtZSBZLCB0eXBlbmFtZSBaPiB2b2lkIHN3YXAoUmVmUHRyPFgsIFksIFo+Jik7CiAKICAgICBS
ZWZQdHIgY29weVJlZigpICYmID0gZGVsZXRlOwogICAgIFJlZlB0ciBjb3B5UmVmKCkgY29uc3Qg
JiBXQVJOX1VOVVNFRF9SRVRVUk4geyByZXR1cm4gUmVmUHRyKG1fcHRyKTsgfQpAQCAtMTAzLDgg
KzEwNiw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCB1bnNwZWNpZmllZEJvb2xUeXBl
SW5zdGFuY2UoKSBjb25zdCB7IH0KIAotICAgIGZyaWVuZCBSZWZQdHIgYWRvcHRSZWY8VCwgUHRy
VHJhaXRzPihUKik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4gZnJpZW5k
IGNsYXNzIFJlZlB0cjsKKyAgICBmcmllbmQgUmVmUHRyIGFkb3B0UmVmPFQsIFB0clRyYWl0cywg
UmVmRGVyZWZUcmFpdHM+KFQqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZ
LCB0eXBlbmFtZSBaPiBmcmllbmQgY2xhc3MgUmVmUHRyOwogCiAgICAgZW51bSBBZG9wdFRhZyB7
IEFkb3B0IH07CiAgICAgUmVmUHRyKFQqIHB0ciwgQWRvcHRUYWcpIDogbV9wdHIocHRyKSB7IH0K
QEAgLTExMiwxNDIgKzExNSwxNDIgQEAgcHJpdmF0ZToKICAgICB0eXBlbmFtZSBQdHJUcmFpdHM6
OlN0b3JhZ2VUeXBlIG1fcHRyOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgotaW5saW5lIFJlZlB0cjxULCBVPjo6UmVmUHRyKFJl
ZjxYLCBZPiYmIHJlZmVyZW5jZSkKK2lubGluZSBSZWZQdHI8VCwgVSwgVj46OlJlZlB0cihSZWY8
WCwgWT4mJiByZWZlcmVuY2UpCiAgICAgOiBtX3B0cigmcmVmZXJlbmNlLmxlYWtSZWYoKSkKIHsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBUKiBSZWZQdHI8
VCwgVT46OmxlYWtSZWYoKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgVj4KK2lubGluZSBUKiBSZWZQdHI8VCwgVSwgVj46OmxlYWtSZWYoKQogewogICAgIHJldHVy
biBVOjpleGNoYW5nZShtX3B0ciwgbnVsbHB0cik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+Ci1pbmxpbmUgUmVmUHRyPFQsIFU+JiBSZWZQdHI8VCwgVT46Om9wZXJhdG9y
PShjb25zdCBSZWZQdHImIG8pCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWPgoraW5saW5lIFJlZlB0cjxULCBVLCBWPiYgUmVmUHRyPFQsIFUsIFY+OjpvcGVyYXRv
cj0oY29uc3QgUmVmUHRyJiBvKQogewogICAgIFJlZlB0ciBwdHIgPSBvOwogICAgIHN3YXAocHRy
KTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgotaW5saW5lIFJlZlB0cjxULCBV
PiYgUmVmUHRyPFQsIFU+OjpvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFgsIFk+JiBvKQordGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KK3RlbXBsYXRlPHR5cGVuYW1l
IFgsIHR5cGVuYW1lIFksIHR5cGVuYW1lIFo+CitpbmxpbmUgUmVmUHRyPFQsIFUsIFY+JiBSZWZQ
dHI8VCwgVSwgVj46Om9wZXJhdG9yPShjb25zdCBSZWZQdHI8WCwgWSwgWj4mIG8pCiB7CiAgICAg
UmVmUHRyIHB0ciA9IG87CiAgICAgc3dhcChwdHIpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBSZWZQdHI8VCwgVT4mIFJl
ZlB0cjxULCBVPjo6b3BlcmF0b3I9KFQqIG9wdHIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWPgoraW5saW5lIFJlZlB0cjxULCBVLCBWPiYgUmVmUHRyPFQsIFUs
IFY+OjpvcGVyYXRvcj0oVCogb3B0cikKIHsKICAgICBSZWZQdHIgcHRyID0gb3B0cjsKICAgICBz
d2FwKHB0cik7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPgotaW5saW5lIFJlZlB0cjxULCBVPiYgUmVmUHRyPFQsIFU+OjpvcGVyYXRvcj0o
c3RkOjpudWxscHRyX3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWPgoraW5saW5lIFJlZlB0cjxULCBVLCBWPiYgUmVmUHRyPFQsIFUsIFY+OjpvcGVyYXRvcj0o
c3RkOjpudWxscHRyX3QpCiB7Ci0gICAgZGVyZWZJZk5vdE51bGwoVTo6ZXhjaGFuZ2UobV9wdHIs
IG51bGxwdHIpKTsKKyAgICBWOjpkZXJlZklmTm90TnVsbChVOjpleGNoYW5nZShtX3B0ciwgbnVs
bHB0cikpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KLWlubGluZSBSZWZQdHI8VCwgVT4mIFJlZlB0cjxULCBVPjo6b3BlcmF0b3I9KFJl
ZlB0ciYmIG8pCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgor
aW5saW5lIFJlZlB0cjxULCBVLCBWPiYgUmVmUHRyPFQsIFUsIFY+OjpvcGVyYXRvcj0oUmVmUHRy
JiYgbykKIHsKICAgICBSZWZQdHIgcHRyID0gV1RGTW92ZShvKTsKICAgICBzd2FwKHB0cik7CiAg
ICAgcmV0dXJuICp0aGlzOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgot
dGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KLWlubGluZSBSZWZQdHI8VCwgVT4mIFJl
ZlB0cjxULCBVPjo6b3BlcmF0b3I9KFJlZlB0cjxYLCBZPiYmIG8pCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgordGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5h
bWUgWSwgdHlwZW5hbWUgWj4KK2lubGluZSBSZWZQdHI8VCwgVSwgVj4mIFJlZlB0cjxULCBVLCBW
Pjo6b3BlcmF0b3I9KFJlZlB0cjxYLCBZLCBaPiYmIG8pCiB7CiAgICAgUmVmUHRyIHB0ciA9IFdU
Rk1vdmUobyk7CiAgICAgc3dhcChwdHIpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVj4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFYsIHR5cGVuYW1lIFc+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotaW5saW5lIFJlZlB0cjxULCBW
PiYgUmVmUHRyPFQsIFY+OjpvcGVyYXRvcj0oUmVmPFU+JiYgcmVmZXJlbmNlKQoraW5saW5lIFJl
ZlB0cjxULCBWLCBXPiYgUmVmUHRyPFQsIFYsIFc+OjpvcGVyYXRvcj0oUmVmPFU+JiYgcmVmZXJl
bmNlKQogewogICAgIFJlZlB0ciBwdHIgPSBXVEZNb3ZlKHJlZmVyZW5jZSk7CiAgICAgc3dhcChw
dHIpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgVCwgdHlwZW5hbWUg
VT4KLXRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+Ci1pbmxpbmUgdm9pZCBSZWZQdHI8
VCwgVT46OnN3YXAoUmVmUHRyPFgsIFk+JiBvKQordGVtcGxhdGU8Y2xhc3MgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgVj4KK3RlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFksIHR5cGVuYW1l
IFo+CitpbmxpbmUgdm9pZCBSZWZQdHI8VCwgVSwgVj46OnN3YXAoUmVmUHRyPFgsIFksIFo+JiBv
KQogewogICAgIFU6OnN3YXAobV9wdHIsIG8ubV9wdHIpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZLCB0eXBlbmFtZSA9IHN0ZDo6
ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2FtZTxVLCBEdW1iUHRyVHJhaXRzPFQ+Pjo6dmFsdWUgfHwg
IXN0ZDo6aXNfc2FtZTxZLCBEdW1iUHRyVHJhaXRzPFg+Pjo6dmFsdWU+PgotaW5saW5lIHZvaWQg
c3dhcChSZWZQdHI8VCwgVT4mIGEsIFJlZlB0cjxYLCBZPiYgYikKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFgsIHR5cGVuYW1lIFksIHR5cGVu
YW1lIFosIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19zYW1lPFUsIER1bWJQ
dHJUcmFpdHM8VD4+Ojp2YWx1ZSB8fCAhc3RkOjppc19zYW1lPFksIER1bWJQdHJUcmFpdHM8WD4+
Ojp2YWx1ZT4+CitpbmxpbmUgdm9pZCBzd2FwKFJlZlB0cjxULCBVLCBWPiYgYSwgUmVmUHRyPFgs
IFksIFo+JiBiKQogewogICAgIGEuc3dhcChiKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KLWlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgUmVmUHRyPFQsIFU+JiBhLCBjb25zdCBSZWZQdHI8WCwgWT4mIGIpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBYLCB0eXBlbmFt
ZSBZLCB0eXBlbmFtZSBaPgoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWZQdHI8VCwg
VSwgVj4mIGEsIGNvbnN0IFJlZlB0cjxYLCBZLCBaPiYgYikKIHsgCiAgICAgcmV0dXJuIGEuZ2V0
KCkgPT0gYi5nZXQoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgWD4KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVmUHRyPFQsIFU+JiBhLCBY
KiBiKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5h
bWUgWD4KK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVmUHRyPFQsIFUsIFY+JiBhLCBY
KiBiKQogeyAKICAgICByZXR1cm4gYS5nZXQoKSA9PSBiOyAKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KLWlubGluZSBib29sIG9wZXJhdG9yPT0oVCog
YSwgY29uc3QgUmVmUHRyPFgsIFk+JiBiKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
WCwgdHlwZW5hbWUgWSwgdHlwZW5hbWUgWj4KK2lubGluZSBib29sIG9wZXJhdG9yPT0oVCogYSwg
Y29uc3QgUmVmUHRyPFgsIFksIFo+JiBiKQogewogICAgIHJldHVybiBhID09IGIuZ2V0KCk7IAog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBYLCB0eXBlbmFt
ZSBZPgotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWZQdHI8VCwgVT4mIGEsIGNvbnN0
IFJlZlB0cjxYLCBZPiYgYikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFYsIHR5cGVuYW1lIFgsIHR5cGVuYW1lIFksIHR5cGVuYW1lIFo+CitpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFJlZlB0cjxULCBVLCBWPiYgYSwgY29uc3QgUmVmUHRyPFgsIFksIFo+
JiBiKQogeyAKICAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOyAKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgWD4KLWlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgUmVmUHRyPFQsIFU+JiBhLCBYKiBiKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgWD4KK2lubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgUmVmUHRyPFQsIFUsIFY+JiBhLCBYKiBiKQogewogICAgIHJldHVybiBhLmdldCgpICE9
IGI7IAogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgot
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25zdCBSZWZQdHI8WCwgWT4mIGIpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZLCB0eXBlbmFtZSBaPgoraW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25zdCBSZWZQdHI8WCwgWSwgWj4mIGIpCiB7IAog
ICAgIHJldHVybiBhICE9IGIuZ2V0KCk7IAogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVID0gRHVtYlB0clRyYWl0czxUPiwgdHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KLWlubGlu
ZSBSZWZQdHI8VCwgVT4gc3RhdGljX3BvaW50ZXJfY2FzdChjb25zdCBSZWZQdHI8WCwgWT4mIHAp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVID0gRHVtYlB0clRyYWl0czxUPiwgdHlw
ZW5hbWUgViA9IERlZmF1bHRSZWZEZXJlZlRyYWl0czxUPiwgdHlwZW5hbWUgWCwgdHlwZW5hbWUg
WSwgdHlwZW5hbWUgWj4KK2lubGluZSBSZWZQdHI8VCwgVSwgVj4gc3RhdGljX3BvaW50ZXJfY2Fz
dChjb25zdCBSZWZQdHI8WCwgWSwgWj4mIHApCiB7IAotICAgIHJldHVybiBSZWZQdHI8VCwgVT4o
c3RhdGljX2Nhc3Q8VCo+KHAuZ2V0KCkpKTsKKyAgICByZXR1cm4gUmVmUHRyPFQsIFUsIFY+KHN0
YXRpY19jYXN0PFQqPihwLmdldCgpKSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPgotc3RydWN0IElzU21hcnRQdHI8UmVmUHRyPFQsIFU+PiB7Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KK3N0cnVjdCBJc1NtYXJ0UHRyPFJlZlB0
cjxULCBVLCBWPj4gewogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1ZSA9IHRydWU7CiB9
OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIFJlZlB0cjxULCBV
PiBhZG9wdFJlZihUKiBwKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgVj4KK2lubGluZSBSZWZQdHI8VCwgVSwgVj4gYWRvcHRSZWYoVCogcCkKIHsKICAgICBhZG9w
dGVkKHApOwotICAgIHJldHVybiBSZWZQdHI8VCwgVT4ocCwgUmVmUHRyPFQsIFU+OjpBZG9wdCk7
CisgICAgcmV0dXJuIFJlZlB0cjxULCBVLCBWPihwLCBSZWZQdHI8VCwgVSwgVj46OkFkb3B0KTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFJlZlB0cjxUPiBtYWtlUmVmUHRyKFQq
IHBvaW50ZXIpCkBAIC0yNjAsMTQgKzI2MywxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgUmVmUHRyPFQ+IG1ha2VSZWZQdHIoVCYgcmVmZXJlbmNlKQogICAgIHJldHVybiAmcmVmZXJl
bmNlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5
cGUsIHR5cGVuYW1lIFB0clRyYWl0cz4KLWlubGluZSBib29sIGlzKFJlZlB0cjxBcmdUeXBlLCBQ
dHJUcmFpdHM+JiBzb3VyY2UpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVu
YW1lIEFyZ1R5cGUsIHR5cGVuYW1lIFB0clRyYWl0cywgdHlwZW5hbWUgUmVmRGVyZWZUcmFpdHM+
CitpbmxpbmUgYm9vbCBpcyhSZWZQdHI8QXJnVHlwZSwgUHRyVHJhaXRzLCBSZWZEZXJlZlRyYWl0
cz4mIHNvdXJjZSkKIHsKICAgICByZXR1cm4gaXM8RXhwZWN0ZWRUeXBlPihzb3VyY2UuZ2V0KCkp
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5cGUs
IHR5cGVuYW1lIFB0clRyYWl0cz4KLWlubGluZSBib29sIGlzKGNvbnN0IFJlZlB0cjxBcmdUeXBl
LCBQdHJUcmFpdHM+JiBzb3VyY2UpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5
cGVuYW1lIEFyZ1R5cGUsIHR5cGVuYW1lIFB0clRyYWl0cywgdHlwZW5hbWUgUmVmRGVyZWZUcmFp
dHM+CitpbmxpbmUgYm9vbCBpcyhjb25zdCBSZWZQdHI8QXJnVHlwZSwgUHRyVHJhaXRzLCBSZWZE
ZXJlZlRyYWl0cz4mIHNvdXJjZSkKIHsKICAgICByZXR1cm4gaXM8RXhwZWN0ZWRUeXBlPihzb3Vy
Y2UuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IDQ0MjQyNjQxMjgwODZlMWYxOTY4
MTdhYzIxODVhOTQxOGRkY2VkMDEuLmJhMGEyNWQ2YWVjMjBkYTEyOTI5ZjBiMDQ4N2ViOWYxMWUx
ZjUxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTU4MCwyMiArNTgwLDEzIEBAIGJvb2wgQXVk
aW9CdWZmZXJTb3VyY2VOb2RlOjpwcm9wYWdhdGVzU2lsZW5jZSgpIGNvbnN0CiAKIHZvaWQgQXVk
aW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKFBhbm5lck5vZGVCYXNlKiBwYW5uZXJO
b2RlKQogewotICAgIGlmIChtX3Bhbm5lck5vZGUgIT0gcGFubmVyTm9kZSAmJiAhaGFzRmluaXNo
ZWQoKSkgewotICAgICAgICBpZiAocGFubmVyTm9kZSkKLSAgICAgICAgICAgIHBhbm5lck5vZGUt
PnJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKLSAgICAgICAgaWYgKG1fcGFubmVy
Tm9kZSkKLSAgICAgICAgICAgIG1fcGFubmVyTm9kZS0+ZGVyZWYoQXVkaW9Ob2RlOjpSZWZUeXBl
Q29ubmVjdGlvbik7Ci0KKyAgICBpZiAobV9wYW5uZXJOb2RlICE9IHBhbm5lck5vZGUgJiYgIWhh
c0ZpbmlzaGVkKCkpCiAgICAgICAgIG1fcGFubmVyTm9kZSA9IHBhbm5lck5vZGU7Ci0gICAgfQog
fQogCiB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y2xlYXJQYW5uZXJOb2RlKCkKIHsKLSAg
ICBpZiAobV9wYW5uZXJOb2RlKSB7Ci0gICAgICAgIG1fcGFubmVyTm9kZS0+ZGVyZWYoQXVkaW9O
b2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7Ci0gICAgICAgIG1fcGFubmVyTm9kZSA9IG51bGxwdHI7
Ci0gICAgfQorICAgIG1fcGFubmVyTm9kZSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlOjpmaW5pc2goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKaW5kZXggYmY1Y2VkNmYzYjI0ZmRm
MmM1M2E5YTFlZGEyNjMyMDFlODdjZjY0Yy4uMTdhNzAwNjMwNjUxNWRmMWY0ZTQ5ZWZkNTE3N2Nl
ZmVkNzMzMzQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCkBAIC0xNDEsOCArMTQxLDggQEAgcHJpdmF0ZToK
ICAgICBkb3VibGUgdG90YWxQaXRjaFJhdGUoKTsKIAogICAgIC8vIFdlIG9wdGlvbmFsbHkga2Vl
cCB0cmFjayBvZiBhIHBhbm5lciBub2RlIHdoaWNoIGhhcyBhIGRvcHBsZXIgc2hpZnQgdGhhdCBp
cyBpbmNvcnBvcmF0ZWQgaW50bwotICAgIC8vIHRoZSBwaXRjaCByYXRlLiBXZSBtYW51YWxseSBt
YW5hZ2UgcmVmLWNvdW50aW5nIGJlY2F1c2Ugd2Ugd2FudCB0byB1c2UgUmVmVHlwZUNvbm5lY3Rp
b24uCi0gICAgUGFubmVyTm9kZUJhc2UqIG1fcGFubmVyTm9kZSB7IG51bGxwdHIgfTsKKyAgICAv
LyB0aGUgcGl0Y2ggcmF0ZS4KKyAgICBBdWRpb0Nvbm5lY3Rpb25SZWZQdHI8UGFubmVyTm9kZUJh
c2U+IG1fcGFubmVyTm9kZTsKIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHByb2Nlc3MoKSB3
aXRoIHNldEJ1ZmZlcigpIHdoaWNoIGNhbiBjYXVzZSBkeW5hbWljIGNoYW5uZWwgY291bnQgY2hh
bmdlcy4KICAgICBtdXRhYmxlIExvY2sgbV9wcm9jZXNzTXV0ZXg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKaW5kZXggYjFjYWRhMDc3MjA2MDU2ZGFi
NzFkMjQ2YjZjZmFjYjQwOThjZTM0ZS4uMTBlNWYxMzYzOWFlNjg1YWUxYmNkODQ2MzIyNmI0OGQw
NDE0Y2RkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
LmNwcApAQCAtNTQ4LDcgKzU0OCw3IEBAIHZvaWQgQXVkaW9Ob2RlOjplbmFibGVPdXRwdXRzSWZO
ZWNlc3NhcnkoKQogdm9pZCBBdWRpb05vZGU6OmRpc2FibGVPdXRwdXRzSWZOZWNlc3NhcnkoKQog
ewogICAgIC8vIERpc2FibGUgb3V0cHV0cyBpZiBhcHByb3ByaWF0ZS4gV2UgZG8gdGhpcyBpZiB0
aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGlzIDAgb3IgMS4gVGhlIGNhc2UKLSAgICAvLyBvZiAw
IGlzIGZyb20gZmluaXNoRGVyZWYoKSB3aGVyZSB0aGVyZSBhcmUgbm8gY29ubmVjdGlvbnMgbGVm
dC4gVGhlIGNhc2Ugb2YgMSBpcyBmcm9tCisgICAgLy8gb2YgMCBpcyBmcm9tIGRlY3JlbWVudENv
bm5lY3Rpb25Db3VudFdpdGhMb2NrKCkgd2hlcmUgdGhlcmUgYXJlIG5vIGNvbm5lY3Rpb25zIGxl
ZnQuIFRoZSBjYXNlIG9mIDEgaXMgZnJvbQogICAgIC8vIEF1ZGlvTm9kZUlucHV0OjpkaXNhYmxl
KCkgd2hlcmUgd2Ugd2FudCB0byBkaXNhYmxlIG91dHB1dHMgd2hlbiB0aGVyZSdzIG9ubHkgb25l
IGNvbm5lY3Rpb24KICAgICAvLyBsZWZ0IGJlY2F1c2Ugd2UncmUgcmVhZHkgdG8gZ28gYXdheSwg
YnV0IGNhbid0IHF1aXRlIHlldC4KICAgICBpZiAobV9jb25uZWN0aW9uUmVmQ291bnQgPD0gMSAm
JiAhbV9pc0Rpc2FibGVkKSB7CkBAIC01NzQsMzEgKzU3NCwyMSBAQCB2b2lkIEF1ZGlvTm9kZTo6
ZGlzYWJsZU91dHB1dHMoKQogICAgICAgICBvdXRwdXQtPmRpc2FibGUoKTsKIH0KIAotdm9pZCBB
dWRpb05vZGU6OnJlZihSZWZUeXBlIHJlZlR5cGUpCit2b2lkIEF1ZGlvTm9kZTo6aW5jcmVtZW50
Q29ubmVjdGlvbkNvdW50KCkKIHsKLSAgICBzd2l0Y2ggKHJlZlR5cGUpIHsKLSAgICBjYXNlIFJl
ZlR5cGVOb3JtYWw6Ci0gICAgICAgICsrbV9ub3JtYWxSZWZDb3VudDsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBSZWZUeXBlQ29ubmVjdGlvbjoKLSAgICAgICAgKyttX2Nvbm5lY3Rpb25SZWZD
b3VudDsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgfQotCi0jaWYgREVCVUdfQVVESU9OT0RFX1JFRkVSRU5DRVMKLSAgICBm
cHJpbnRmKHN0ZGVyciwgIiVwOiAlZDogQXVkaW9Ob2RlOjpyZWYoJWQpICVkICVkXG4iLCB0aGlz
LCBub2RlVHlwZSgpLCByZWZUeXBlLCBtX25vcm1hbFJlZkNvdW50LCBtX2Nvbm5lY3Rpb25SZWZD
b3VudCk7Ci0jZW5kaWYKKyAgICArK21fY29ubmVjdGlvblJlZkNvdW50OwogCi0gICAgLy8gU2Vl
IHRoZSBkaXNhYmxpbmcgY29kZSBpbiBmaW5pc2hEZXJlZigpIGJlbG93LiBUaGlzIGhhbmRsZXMg
dGhlIGNhc2Ugd2hlcmUgYSBub2RlCisgICAgLy8gU2VlIHRoZSBkaXNhYmxpbmcgY29kZSBpbiBk
ZWNyZW1lbnRDb25uZWN0aW9uQ291bnRXaXRoTG9jaygpIGJlbG93LiBUaGlzIGhhbmRsZXMgdGhl
IGNhc2Ugd2hlcmUgYSBub2RlCiAgICAgLy8gaXMgYmVpbmcgcmUtY29ubmVjdGVkIGFmdGVyIGJl
aW5nIHVzZWQgYXQgbGVhc3Qgb25jZSBhbmQgZGlzY29ubmVjdGVkLgogICAgIC8vIEluIHRoaXMg
Y2FzZSwgd2UgbmVlZCB0byByZS1lbmFibGUuCi0gICAgaWYgKHJlZlR5cGUgPT0gUmVmVHlwZUNv
bm5lY3Rpb24pCi0gICAgICAgIGVuYWJsZU91dHB1dHNJZk5lY2Vzc2FyeSgpOworICAgIGVuYWJs
ZU91dHB1dHNJZk5lY2Vzc2FyeSgpOworCisjaWYgREVCVUdfQVVESU9OT0RFX1JFRkVSRU5DRVMK
KyAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiAlZDogQXVkaW9Ob2RlOjppbmNyZW1lbnRDb25uZWN0
aW9uQ291bnQoKSAlZCAlZFxuIiwgdGhpcywgbm9kZVR5cGUoKSwgbV9ub3JtYWxSZWZDb3VudCwg
bV9jb25uZWN0aW9uUmVmQ291bnQpOworI2VuZGlmCiB9CiAKLXZvaWQgQXVkaW9Ob2RlOjpkZXJl
ZihSZWZUeXBlIHJlZlR5cGUpCit2b2lkIEF1ZGlvTm9kZTo6ZGVjcmVtZW50Q29ubmVjdGlvbkNv
dW50KCkKIHsKICAgICAvLyBUaGUgYWN0dWFsbHkgd29yayBmb3IgZGVyZWYgaGFwcGVucyBjb21w
bGV0ZWx5IHdpdGhpbiB0aGUgYXVkaW8gY29udGV4dCdzIGdyYXBoIGxvY2suCiAgICAgLy8gSW4g
dGhlIGNhc2Ugb2YgdGhlIGF1ZGlvIHRocmVhZCwgd2UgbXVzdCB1c2UgYSB0cnlMb2NrIHRvIGF2
b2lkIGdsaXRjaGVzLgpAQCAtNjE1LDE1ICs2MDUsNzQgQEAgdm9pZCBBdWRpb05vZGU6OmRlcmVm
KFJlZlR5cGUgcmVmVHlwZSkKIAogICAgIGlmIChoYXNMb2NrKSB7CiAgICAgICAgIC8vIFRoaXMg
aXMgd2hlcmUgdGhlIHJlYWwgZGVyZWYgd29yayBoYXBwZW5zLgotICAgICAgICBmaW5pc2hEZXJl
ZihyZWZUeXBlKTsKKyAgICAgICAgZGVjcmVtZW50Q29ubmVjdGlvbkNvdW50V2l0aExvY2soKTsK
IAogICAgICAgICBpZiAobXVzdFJlbGVhc2VMb2NrKQogICAgICAgICAgICAgY29udGV4dCgpLnVu
bG9jaygpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIHdlcmUgdW5hYmxlIHRvIGdldCB0
aGUgbG9jaywgc28gcHV0IHRoaXMgaW4gYSBsaXN0IHRvIGZpbmlzaCB1cCBsYXRlci4KICAgICAg
ICAgQVNTRVJUKGNvbnRleHQoKS5pc0F1ZGlvVGhyZWFkKCkpOwotICAgICAgICBBU1NFUlQocmVm
VHlwZSA9PSBSZWZUeXBlQ29ubmVjdGlvbik7Ci0gICAgICAgIGNvbnRleHQoKS5hZGREZWZlcnJl
ZEZpbmlzaERlcmVmKHRoaXMpOworICAgICAgICBjb250ZXh0KCkuYWRkRGVmZXJyZWREZWNyZW1l
bnRDb25uZWN0aW9uQ291bnQodGhpcyk7CisgICAgfQorCisgICAgLy8gT25jZSBBdWRpb0NvbnRl
eHQ6OnVuaW5pdGlhbGl6ZSgpIGlzIGNhbGxlZCB0aGVyZSdzIG5vIG1vcmUgY2hhbmNlcyBmb3Ig
ZGVsZXRlTWFya2VkTm9kZXMoKSB0byBnZXQgY2FsbGVkLCBzbyB3ZSBjYWxsIGhlcmUuCisgICAg
Ly8gV2UgY2FuJ3QgY2FsbCBpbiBBdWRpb0NvbnRleHQ6On5BdWRpb0NvbnRleHQoKSBzaW5jZSBp
dCB3aWxsIG5ldmVyIGJlIGNhbGxlZCBhcyBsb25nIGFzIGFueSBBdWRpb05vZGUgaXMgYWxpdmUK
KyAgICAvLyBiZWNhdXNlIEF1ZGlvTm9kZXMga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgY29udGV4
dC4KKyAgICBpZiAoY29udGV4dCgpLmlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKQorICAgICAgICBj
b250ZXh0KCkuZGVsZXRlTWFya2VkTm9kZXMoKTsKK30KKwordm9pZCBBdWRpb05vZGU6OmRlY3Jl
bWVudENvbm5lY3Rpb25Db3VudFdpdGhMb2NrKCkKK3sKKyAgICBBU1NFUlQoY29udGV4dCgpLmlz
R3JhcGhPd25lcigpKTsKKworICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25SZWZDb3VudCA+IDApOwor
ICAgIC0tbV9jb25uZWN0aW9uUmVmQ291bnQ7CisKKyNpZiBERUJVR19BVURJT05PREVfUkVGRVJF
TkNFUworICAgIGZwcmludGYoc3RkZXJyLCAiJXA6ICVkOiBBdWRpb05vZGU6OmRlY3JlbWVudENv
bm5lY3Rpb25Db3VudFdpdGhMb2NrKCkgJWQgJWRcbiIsIHRoaXMsIG5vZGVUeXBlKCksIG1fbm9y
bWFsUmVmQ291bnQsIG1fY29ubmVjdGlvblJlZkNvdW50KTsKKyNlbmRpZgorCisgICAgaWYgKCFt
X2Nvbm5lY3Rpb25SZWZDb3VudCAmJiBtX25vcm1hbFJlZkNvdW50KQorICAgICAgICBkaXNhYmxl
T3V0cHV0c0lmTmVjZXNzYXJ5KCk7CisKKyAgICBtYXJrTm9kZUZvckRlbGV0aW9uSWZOZWNlc3Nh
cnkoKTsKK30KKwordm9pZCBBdWRpb05vZGU6Om1hcmtOb2RlRm9yRGVsZXRpb25JZk5lY2Vzc2Fy
eSgpCit7CisgICAgQVNTRVJUKGNvbnRleHQoKS5pc0dyYXBoT3duZXIoKSk7CisKKyAgICBpZiAo
bV9jb25uZWN0aW9uUmVmQ291bnQgfHwgbV9ub3JtYWxSZWZDb3VudCB8fCBtX2lzTWFya2VkRm9y
RGVsZXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEFsbCByZWZlcmVuY2VzIGFyZSBn
b25lIC0gd2UgbmVlZCB0byBnbyBhd2F5LgorICAgIGZvciAoYXV0byYgb3V0cHV0IDogbV9vdXRw
dXRzKQorICAgICAgICBvdXRwdXQtPmRpc2Nvbm5lY3RBbGwoKTsgLy8gVGhpcyB3aWxsIGRlcmVm
KCkgbm9kZXMgd2UncmUgY29ubmVjdGVkIHRvLgorCisgICAgLy8gTWFyayBmb3IgZGVsZXRpb24g
YXQgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gb3Igd2hlbiBjb250ZXh0IHNodXRzIGRvd24u
CisgICAgY29udGV4dCgpLm1hcmtGb3JEZWxldGlvbigqdGhpcyk7CisgICAgbV9pc01hcmtlZEZv
ckRlbGV0aW9uID0gdHJ1ZTsKKyAgICBkaWRCZWNvbWVNYXJrZWRGb3JEZWxldGlvbigpOworfQor
Cit2b2lkIEF1ZGlvTm9kZTo6cmVmKCkKK3sKKyAgICArK21fbm9ybWFsUmVmQ291bnQ7CisKKyNp
ZiBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUworICAgIGZwcmludGYoc3RkZXJyLCAiJXA6ICVk
OiBBdWRpb05vZGU6OnJlZigpICVkICVkXG4iLCB0aGlzLCBub2RlVHlwZSgpLCBtX25vcm1hbFJl
ZkNvdW50LCBtX2Nvbm5lY3Rpb25SZWZDb3VudCk7CisjZW5kaWYKK30KKwordm9pZCBBdWRpb05v
ZGU6OmRlcmVmKCkKK3sKKyAgICBBU1NFUlQoIWNvbnRleHQoKS5pc0F1ZGlvVGhyZWFkKCkpOwor
CisgICAgeworICAgICAgICBCYXNlQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250
ZXh0KCkpOworICAgICAgICAvLyBUaGlzIGlzIHdoZXJlIHRoZSByZWFsIGRlcmVmIHdvcmsgaGFw
cGVucy4KKyAgICAgICAgZGVyZWZXaXRoTG9jaygpOwogICAgIH0KIAogICAgIC8vIE9uY2UgQXVk
aW9Db250ZXh0Ojp1bmluaXRpYWxpemUoKSBpcyBjYWxsZWQgdGhlcmUncyBubyBtb3JlIGNoYW5j
ZXMgZm9yIGRlbGV0ZU1hcmtlZE5vZGVzKCkgdG8gZ2V0IGNhbGxlZCwgc28gd2UgY2FsbCBoZXJl
LgpAQCAtNjQwLDQyICs2ODksMTggQEAgVmFyaWFudDxSZWZQdHI8QmFzZUF1ZGlvQ29udGV4dD4s
IFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+PiBBdWRpb05vZGU6OmNvbnRleHQKICAgICByZXR1
cm4gbWFrZVJlZlB0cihtX2NvbnRleHQuZ2V0KCkpOwogfQogCi12b2lkIEF1ZGlvTm9kZTo6Zmlu
aXNoRGVyZWYoUmVmVHlwZSByZWZUeXBlKQordm9pZCBBdWRpb05vZGU6OmRlcmVmV2l0aExvY2so
KQogewogICAgIEFTU0VSVChjb250ZXh0KCkuaXNHcmFwaE93bmVyKCkpOwogICAgIAotICAgIHN3
aXRjaCAocmVmVHlwZSkgewotICAgIGNhc2UgUmVmVHlwZU5vcm1hbDoKLSAgICAgICAgQVNTRVJU
KG1fbm9ybWFsUmVmQ291bnQgPiAwKTsKLSAgICAgICAgLS1tX25vcm1hbFJlZkNvdW50OwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFJlZlR5cGVDb25uZWN0aW9uOgotICAgICAgICBBU1NFUlQo
bV9jb25uZWN0aW9uUmVmQ291bnQgPiAwKTsKLSAgICAgICAgLS1tX2Nvbm5lY3Rpb25SZWZDb3Vu
dDsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgfQorICAgIEFTU0VSVChtX25vcm1hbFJlZkNvdW50ID4gMCk7CisgICAgLS1t
X25vcm1hbFJlZkNvdW50OwogICAgIAogI2lmIERFQlVHX0FVRElPTk9ERV9SRUZFUkVOQ0VTCi0g
ICAgZnByaW50ZihzdGRlcnIsICIlcDogJWQ6IEF1ZGlvTm9kZTo6ZGVyZWYoJWQpICVkICVkXG4i
LCB0aGlzLCBub2RlVHlwZSgpLCByZWZUeXBlLCBtX25vcm1hbFJlZkNvdW50LCBtX2Nvbm5lY3Rp
b25SZWZDb3VudCk7CisgICAgZnByaW50ZihzdGRlcnIsICIlcDogJWQ6IEF1ZGlvTm9kZTo6ZGVy
ZWYoKSAlZCAlZFxuIiwgdGhpcywgbm9kZVR5cGUoKSwgbV9ub3JtYWxSZWZDb3VudCwgbV9jb25u
ZWN0aW9uUmVmQ291bnQpOwogI2VuZGlmCiAKLSAgICBpZiAoIW1fY29ubmVjdGlvblJlZkNvdW50
KSB7Ci0gICAgICAgIGlmICghbV9ub3JtYWxSZWZDb3VudCkgewotICAgICAgICAgICAgaWYgKCFt
X2lzTWFya2VkRm9yRGVsZXRpb24pIHsKLSAgICAgICAgICAgICAgICAvLyBBbGwgcmVmZXJlbmNl
cyBhcmUgZ29uZSAtIHdlIG5lZWQgdG8gZ28gYXdheS4KLSAgICAgICAgICAgICAgICBmb3IgKGF1
dG8mIG91dHB1dCA6IG1fb3V0cHV0cykKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0LT5kaXNj
b25uZWN0QWxsKCk7IC8vIFRoaXMgd2lsbCBkZXJlZigpIG5vZGVzIHdlJ3JlIGNvbm5lY3RlZCB0
by4KLQotICAgICAgICAgICAgICAgIC8vIE1hcmsgZm9yIGRlbGV0aW9uIGF0IGVuZCBvZiBlYWNo
IHJlbmRlciBxdWFudHVtIG9yIHdoZW4gY29udGV4dCBzaHV0cyBkb3duLgotICAgICAgICAgICAg
ICAgIGNvbnRleHQoKS5tYXJrRm9yRGVsZXRpb24oKnRoaXMpOwotICAgICAgICAgICAgICAgIG1f
aXNNYXJrZWRGb3JEZWxldGlvbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZGlkQmVjb21lTWFy
a2VkRm9yRGVsZXRpb24oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChyZWZU
eXBlID09IFJlZlR5cGVDb25uZWN0aW9uKQotICAgICAgICAgICAgZGlzYWJsZU91dHB1dHNJZk5l
Y2Vzc2FyeSgpOwotICAgIH0KKyAgICBtYXJrTm9kZUZvckRlbGV0aW9uSWZOZWNlc3NhcnkoKTsK
IH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpoYW5kbGVBdWRpb05vZGVPcHRpb25z
KGNvbnN0IEF1ZGlvTm9kZU9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IERlZmF1bHRBdWRpb05vZGVP
cHRpb25zJiBkZWZhdWx0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Tm9kZS5oCmluZGV4IDg0YzUwZDJjZTBkODNiNjMwMDE3N2MyNjE3YzRjMzkyY2ZjZjU3MjMuLjRm
YmY0YjA5NzQ3YzcwZDYyM2VhNDYzYmEzYmFhNTE1ZjRmOGRmNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtOTYsMTcgKzk2LDE0IEBAIHB1Ymxp
YzoKICAgICBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZVR5cGU7IH0K
ICAgICB2b2lkIHNldE5vZGVUeXBlKE5vZGVUeXBlKTsKIAotICAgIC8vIFdlIGhhbmRsZSBvdXIg
b3duIHJlZi1jb3VudGluZyBiZWNhdXNlIG9mIHRoZSB0aHJlYWRpbmcgaXNzdWVzIGFuZCBzdWJ0
bGUgbmF0dXJlIG9mCi0gICAgLy8gaG93IEF1ZGlvTm9kZXMgY2FuIGNvbnRpbnVlIHByb2Nlc3Np
bmcgKHBsYXlpbmcgb25lLXNob3Qgc291bmQpIGFmdGVyIHRoZXJlIGFyZSBubyBtb3JlCi0gICAg
Ly8gSmF2YVNjcmlwdCByZWZlcmVuY2VzIHRvIHRoZSBvYmplY3QuCi0gICAgZW51bSBSZWZUeXBl
IHsgUmVmVHlwZU5vcm1hbCwgUmVmVHlwZUNvbm5lY3Rpb24gfTsKLQogICAgIC8vIENhbiBiZSBj
YWxsZWQgZnJvbSBtYWluIHRocmVhZCBvciBjb250ZXh0J3MgYXVkaW8gdGhyZWFkLgotICAgIHZv
aWQgcmVmKFJlZlR5cGUgcmVmVHlwZSA9IFJlZlR5cGVOb3JtYWwpOwotICAgIHZvaWQgZGVyZWYo
UmVmVHlwZSByZWZUeXBlID0gUmVmVHlwZU5vcm1hbCk7CisgICAgdm9pZCByZWYoKTsKKyAgICB2
b2lkIGRlcmVmKCk7CisgICAgdm9pZCBpbmNyZW1lbnRDb25uZWN0aW9uQ291bnQoKTsKKyAgICB2
b2lkIGRlY3JlbWVudENvbm5lY3Rpb25Db3VudCgpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBm
cm9tIG1haW4gdGhyZWFkIG9yIGNvbnRleHQncyBhdWRpbyB0aHJlYWQuICBJdCBtdXN0IGJlIGNh
bGxlZCB3aGlsZSB0aGUgY29udGV4dCdzIGdyYXBoIGxvY2sgaXMgaGVsZC4KLSAgICB2b2lkIGZp
bmlzaERlcmVmKFJlZlR5cGUgcmVmVHlwZSk7CisgICAgdm9pZCBkZWNyZW1lbnRDb25uZWN0aW9u
Q291bnRXaXRoTG9jaygpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVNYXJrZWRGb3JEZWxl
dGlvbigpIHsgfQogCiAgICAgLy8gVGhlIEF1ZGlvTm9kZUlucHV0KHMpIChpZiBhbnkpIHdpbGwg
YWxyZWFkeSBoYXZlIHRoZWlyIGlucHV0IGRhdGEgYXZhaWxhYmxlIHdoZW4gcHJvY2VzcygpIGlz
IGNhbGxlZC4KQEAgLTIwMiw2ICsxOTksOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRJbnB1
dChzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Ob2RlSW5wdXQ+KTsKICAgICB2b2lkIGFkZE91dHB1dChz
dGQ6OnVuaXF1ZV9wdHI8QXVkaW9Ob2RlT3V0cHV0Pik7CiAKKyAgICB2b2lkIG1hcmtOb2RlRm9y
RGVsZXRpb25JZk5lY2Vzc2FyeSgpOworICAgIHZvaWQgZGVyZWZXaXRoTG9jaygpOworCiAgICAg
c3RydWN0IERlZmF1bHRBdWRpb05vZGVPcHRpb25zIHsKICAgICAgICAgdW5zaWduZWQgY2hhbm5l
bENvdW50OwogICAgICAgICBDaGFubmVsQ291bnRNb2RlIGNoYW5uZWxDb3VudE1vZGU7CkBAIC0y
NzAsNiArMjcwLDIzIEBAIHByaXZhdGU6CiAgICAgQ2hhbm5lbEludGVycHJldGF0aW9uIG1fY2hh
bm5lbEludGVycHJldGF0aW9uIHsgQ2hhbm5lbEludGVycHJldGF0aW9uOjpTcGVha2VycyB9Owog
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEF1ZGlvTm9kZUNvbm5lY3Rpb25SZWZE
ZXJlZlRyYWl0cyB7CisgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCByZWZJZk5vdE51bGwo
VCogcHRyKQorICAgIHsKKyAgICAgICAgaWYgKExJS0VMWShwdHIgIT0gbnVsbHB0cikpCisgICAg
ICAgICAgICBwdHItPmluY3JlbWVudENvbm5lY3Rpb25Db3VudCgpOworICAgIH0KKworICAgIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZGVyZWZJZk5vdE51bGwoVCogcHRyKQorICAgIHsKKyAg
ICAgICAgaWYgKExJS0VMWShwdHIgIT0gbnVsbHB0cikpCisgICAgICAgICAgICBwdHItPmRlY3Jl
bWVudENvbm5lY3Rpb25Db3VudCgpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
Cit1c2luZyBBdWRpb0Nvbm5lY3Rpb25SZWZQdHIgPSBSZWZQdHI8VCwgRHVtYlB0clRyYWl0czxU
PiwgQXVkaW9Ob2RlQ29ubmVjdGlvblJlZkRlcmVmVHJhaXRzPFQ+PjsKKwogU3RyaW5nIGNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKEF1ZGlvTm9kZTo6Tm9kZVR5cGUpOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZUlucHV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Ob2RlSW5wdXQuY3BwCmluZGV4IGVjMjcyZWY0YjkzZTYwZDhjMTA2YjM4MjJkZGYyYmQ2NDcy
NDEzZmEuLjgwMzQ5NmNjMWRjYjJhYTVkMGNiNDAzNzRkYTI1ZmU3MGVjYTNiZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQuY3BwCkBA
IC01OSw5ICs1OSw2IEBAIHZvaWQgQXVkaW9Ob2RlSW5wdXQ6OmNvbm5lY3QoQXVkaW9Ob2RlT3V0
cHV0KiBvdXRwdXQpCiAKICAgICBvdXRwdXQtPmFkZElucHV0KHRoaXMpOwogICAgIGNoYW5nZWRP
dXRwdXRzKCk7Ci0KLSAgICAvLyBTb21ib2R5IGhhcyBqdXN0IGNvbm5lY3RlZCB0byB1cywgc28g
Y291bnQgaXQgYXMgYSByZWZlcmVuY2UuCi0gICAgbm9kZSgpLT5yZWYoQXVkaW9Ob2RlOjpSZWZU
eXBlQ29ubmVjdGlvbik7CiB9CiAKIHZvaWQgQXVkaW9Ob2RlSW5wdXQ6OmRpc2Nvbm5lY3QoQXVk
aW9Ob2RlT3V0cHV0KiBvdXRwdXQpCkBAIC03NSwxNSArNzIsMTMgQEAgdm9pZCBBdWRpb05vZGVJ
bnB1dDo6ZGlzY29ubmVjdChBdWRpb05vZGVPdXRwdXQqIG91dHB1dCkKICAgICAvLyBGaXJzdCB0
cnkgdG8gZGlzY29ubmVjdCBmcm9tICJhY3RpdmUiIGNvbm5lY3Rpb25zLgogICAgIGlmIChtX291
dHB1dHMucmVtb3ZlKG91dHB1dCkpIHsKICAgICAgICAgY2hhbmdlZE91dHB1dHMoKTsKLSAgICAg
ICAgb3V0cHV0LT5yZW1vdmVJbnB1dCh0aGlzKTsKLSAgICAgICAgbm9kZSgpLT5kZXJlZihBdWRp
b05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsgLy8gTm90ZTogaXQncyBpbXBvcnRhbnQgdG8gcmV0
dXJuIGltbWVkaWF0ZWx5IGFmdGVyIGFsbCBkZXJlZigpIGNhbGxzIHNpbmNlIHRoZSBub2RlIG1h
eSBiZSBkZWxldGVkLgorICAgICAgICBvdXRwdXQtPnJlbW92ZUlucHV0KHRoaXMpOyAvLyBOb3Rl
OiBpdCdzIGltcG9ydGFudCB0byByZXR1cm4gaW1tZWRpYXRlbHkgYWZ0ZXIgdGhpcyBzaW5jZSB0
aGUgbm9kZSBtYXkgYmUgZGVsZXRlZC4KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAg
ICAvLyBPdGhlcndpc2UsIHRyeSB0byBkaXNjb25uZWN0IGZyb20gZGlzYWJsZWQgY29ubmVjdGlv
bnMuCiAgICAgaWYgKG1fZGlzYWJsZWRPdXRwdXRzLnJlbW92ZShvdXRwdXQpKSB7Ci0gICAgICAg
IG91dHB1dC0+cmVtb3ZlSW5wdXQodGhpcyk7Ci0gICAgICAgIG5vZGUoKS0+ZGVyZWYoQXVkaW9O
b2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7IC8vIE5vdGU6IGl0J3MgaW1wb3J0YW50IHRvIHJldHVy
biBpbW1lZGlhdGVseSBhZnRlciBhbGwgZGVyZWYoKSBjYWxscyBzaW5jZSB0aGUgbm9kZSBtYXkg
YmUgZGVsZXRlZC4KKyAgICAgICAgb3V0cHV0LT5yZW1vdmVJbnB1dCh0aGlzKTsgLy8gTm90ZTog
aXQncyBpbXBvcnRhbnQgdG8gcmV0dXJuIGltbWVkaWF0ZWx5IGFmdGVyIHRoaXMgc2luY2UgdGhl
IG5vZGUgbWF5IGJlIGRlbGV0ZWQuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcAppbmRl
eCA2YjZkZTBiYzIzNTQ4ODJhY2U0MjYxMmQ1NTNjNzIyNzAzM2M4NzVjLi5iN2VlMmRmZGZjMmEz
YzFiNmM0YmUxZTlkYjFmYjA2YTgyY2I1NTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZv
aWQgQXVkaW9Ob2RlT3V0cHV0Ojpwcm9wYWdhdGVDaGFubmVsQ291bnQoKQogICAgIAogICAgIGlm
IChpc0NoYW5uZWxDb3VudEtub3duKCkpIHsKICAgICAgICAgLy8gQW5ub3VuY2UgdG8gYW55IG5v
ZGVzIHdlJ3JlIGNvbm5lY3RlZCB0byB0aGF0IHdlIGNoYW5nZWQgb3VyIGNoYW5uZWwgY291bnQg
Zm9yIGl0cyBpbnB1dC4KLSAgICAgICAgZm9yIChhdXRvJiBpbnB1dCA6IG1faW5wdXRzKSB7Cisg
ICAgICAgIGZvciAoYXV0byYgaW5wdXQgOiBtX2lucHV0cy5rZXlzKCkpIHsKICAgICAgICAgICAg
IEF1ZGlvTm9kZSogY29ubmVjdGlvbk5vZGUgPSBpbnB1dC0+bm9kZSgpOwogICAgICAgICAgICAg
Y29ubmVjdGlvbk5vZGUtPmNoZWNrTnVtYmVyT2ZDaGFubmVsc0ZvcklucHV0KGlucHV0KTsKICAg
ICAgICAgfQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgQXVkaW9Ob2RlT3V0cHV0OjphZGRJbnB1
dChBdWRpb05vZGVJbnB1dCogaW5wdXQpCiAgICAgaWYgKCFpbnB1dCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9pbnB1dHMuYWRkKGlucHV0KTsKKyAgICBtX2lucHV0cy5hZGQoaW5wdXQsIGlu
cHV0LT5ub2RlKCkpOwogfQogCiB2b2lkIEF1ZGlvTm9kZU91dHB1dDo6cmVtb3ZlSW5wdXQoQXVk
aW9Ob2RlSW5wdXQqIGlucHV0KQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgQXVkaW9Ob2RlT3V0
cHV0OjpkaXNjb25uZWN0QWxsSW5wdXRzKCkKICAgICAKICAgICAvLyBBdWRpb05vZGVJbnB1dDo6
ZGlzY29ubmVjdCgpIGNoYW5nZXMgbV9pbnB1dHMgYnkgY2FsbGluZyByZW1vdmVJbnB1dCgpLgog
ICAgIHdoaWxlICghbV9pbnB1dHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEF1ZGlvTm9kZUlucHV0
KiBpbnB1dCA9ICptX2lucHV0cy5iZWdpbigpOworICAgICAgICBBdWRpb05vZGVJbnB1dCogaW5w
dXQgPSBtX2lucHV0cy5iZWdpbigpLT5rZXk7CiAgICAgICAgIGlucHV0LT5kaXNjb25uZWN0KHRo
aXMpOwogICAgIH0KIH0KQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIEF1ZGlvTm9kZU91dHB1dDo6
ZGlzYWJsZSgpCiAgICAgQVNTRVJUKGNvbnRleHQoKS5pc0dyYXBoT3duZXIoKSk7CiAKICAgICBp
ZiAobV9pc0VuYWJsZWQpIHsKLSAgICAgICAgZm9yIChhdXRvJiBpbnB1dCA6IG1faW5wdXRzKQor
ICAgICAgICBmb3IgKGF1dG8mIGlucHV0IDogbV9pbnB1dHMua2V5cygpKQogICAgICAgICAgICAg
aW5wdXQtPmRpc2FibGUodGhpcyk7CiAgICAgICAgIG1faXNFbmFibGVkID0gZmFsc2U7CiAgICAg
fQpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgQXVkaW9Ob2RlT3V0cHV0OjplbmFibGUoKQogICAg
IEFTU0VSVChjb250ZXh0KCkuaXNHcmFwaE93bmVyKCkpOwogCiAgICAgaWYgKCFtX2lzRW5hYmxl
ZCkgewotICAgICAgICBmb3IgKGF1dG8mIGlucHV0IDogbV9pbnB1dHMpCisgICAgICAgIGZvciAo
YXV0byYgaW5wdXQgOiBtX2lucHV0cy5rZXlzKCkpCiAgICAgICAgICAgICBpbnB1dC0+ZW5hYmxl
KHRoaXMpOwogICAgICAgICBtX2lzRW5hYmxlZCA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmgKaW5kZXggYjJiNzZl
OTE5OTYyNWFmZDAzZTY1Yzc3ZTJkNTY1ZGJhNzM2NzcxMC4uY2NmOTVlZGExODMxNzgyMGI5NWZl
MWJjOTlkNzEzNDdlOGYxOGRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oCkBAIC0xNDAsOCArMTQwLDkgQEAgcHJpdmF0ZToKICAg
ICAvLyBJZiBtX2lzSW5QbGFjZSBpcyB0cnVlLCB1c2UgbV9pblBsYWNlQnVzIGFzIHRoZSB2YWxp
ZCBBdWRpb0J1czsgSWYgZmFsc2UsIHVzZSB0aGUgZGVmYXVsdCBtX2ludGVybmFsQnVzLgogICAg
IGJvb2wgbV9pc0luUGxhY2UgeyBmYWxzZSB9OwogCi0gICAgSGFzaFNldDxBdWRpb05vZGVJbnB1
dCo+IG1faW5wdXRzOwotICAgIHR5cGVkZWYgSGFzaFNldDxBdWRpb05vZGVJbnB1dCo+OjppdGVy
YXRvciBJbnB1dHNJdGVyYXRvcjsKKyAgICB1c2luZyBJbnB1dHNNYXAgPSBIYXNoTWFwPEF1ZGlv
Tm9kZUlucHV0KiwgQXVkaW9Db25uZWN0aW9uUmVmUHRyPEF1ZGlvTm9kZT4+OworICAgIElucHV0
c01hcCBtX2lucHV0czsKKyAgICB0eXBlZGVmIElucHV0c01hcDo6aXRlcmF0b3IgSW5wdXRzSXRl
cmF0b3I7CiAgICAgYm9vbCBtX2lzRW5hYmxlZCB7IHRydWUgfTsKIAogICAgIC8vIEZvciB0aGUg
cHVycG9zZXMgb2YgcmVuZGVyaW5nLCBrZWVwcyB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGlucHV0
cyBhbmQgQXVkaW9QYXJhbXMgd2UncmUgY29ubmVjdGVkIHRvLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5jcHAKaW5kZXggN2M5NjE5
ZjVkY2Q1MTFiMGFhODFjNDk3NjgyMzRlNmVhN2E3MjE1My4uY2M3ZWFiZTU2ODAzMmRmMTBlMDY5
YWY4NDExNzhhM2U3ODE4NmRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgQmFzZUF1
ZGlvQ29udGV4dDo6fkJhc2VBdWRpb0NvbnRleHQoKQogICAgIGlmIChtX2F1dG9tYXRpY1B1bGxO
b2Rlc05lZWRVcGRhdGluZykKICAgICAgICAgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMu
cmVzaXplKG1fYXV0b21hdGljUHVsbE5vZGVzLnNpemUoKSk7CiAgICAgQVNTRVJUKG1fcmVuZGVy
aW5nQXV0b21hdGljUHVsbE5vZGVzLmlzRW1wdHkoKSk7Ci0gICAgLy8gRklYTUU6IENhbiB3ZSBh
c3NlcnQgdGhhdCBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0IGlzIGVtcHR5PworICAgIC8vIEZJ
WE1FOiBDYW4gd2UgYXNzZXJ0IHRoYXQgbV9kZWZlcnJlZEJyZWFrQ29ubmVjdGlvbkxpc3QgaXMg
ZW1wdHk/CiAKICAgICBpZiAoIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpIHsKICAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlQXVkaW9Qcm9kdWNlcigqdGhp
cyk7CkBAIC02ODEsNyArNjgxLDYgQEAgdm9pZCBCYXNlQXVkaW9Db250ZXh0OjpyZWZOb2RlKEF1
ZGlvTm9kZSYgbm9kZSkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEF1dG9Mb2Nr
ZXIgbG9ja2VyKCp0aGlzKTsKICAgICAKLSAgICBub2RlLnJlZihBdWRpb05vZGU6OlJlZlR5cGVD
b25uZWN0aW9uKTsKICAgICBtX3JlZmVyZW5jZWROb2Rlcy5hcHBlbmQoJm5vZGUpOwogfQogCkBA
IC02ODksOCArNjg4LDYgQEAgdm9pZCBCYXNlQXVkaW9Db250ZXh0OjpkZXJlZk5vZGUoQXVkaW9O
b2RlJiBub2RlKQogewogICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CiAgICAgCi0gICAgbm9k
ZS5kZXJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKLQogICAgIEFTU0VSVChtX3Jl
ZmVyZW5jZWROb2Rlcy5jb250YWlucygmbm9kZSkpOwogICAgIG1fcmVmZXJlbmNlZE5vZGVzLnJl
bW92ZUZpcnN0KCZub2RlKTsKIH0KQEAgLTY5OCw5ICs2OTUsNiBAQCB2b2lkIEJhc2VBdWRpb0Nv
bnRleHQ6OmRlcmVmTm9kZShBdWRpb05vZGUmIG5vZGUpCiB2b2lkIEJhc2VBdWRpb0NvbnRleHQ6
OmRlcmVmVW5maW5pc2hlZFNvdXJjZU5vZGVzKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkgJiYgaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpOwotICAgIGZvciAoYXV0byYgbm9kZSA6IG1f
cmVmZXJlbmNlZE5vZGVzKQotICAgICAgICBub2RlLT5kZXJlZihBdWRpb05vZGU6OlJlZlR5cGVD
b25uZWN0aW9uKTsKLQogICAgIG1fcmVmZXJlbmNlZE5vZGVzLmNsZWFyKCk7CiB9CiAKQEAgLTc3
OCwxMCArNzcyLDEwIEBAIGJvb2wgQmFzZUF1ZGlvQ29udGV4dDo6aXNHcmFwaE93bmVyKCkgY29u
c3QKICAgICByZXR1cm4gbV9ncmFwaE93bmVyVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKTsK
IH0KIAotdm9pZCBCYXNlQXVkaW9Db250ZXh0OjphZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlv
Tm9kZSogbm9kZSkKK3ZvaWQgQmFzZUF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWREZWNyZW1lbnRD
b25uZWN0aW9uQ291bnQoQXVkaW9Ob2RlKiBub2RlKQogewogICAgIEFTU0VSVChpc0F1ZGlvVGhy
ZWFkKCkpOwotICAgIG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QuYXBwZW5kKG5vZGUpOworICAg
IG1fZGVmZXJyZWRCcmVha0Nvbm5lY3Rpb25MaXN0LmFwcGVuZChub2RlKTsKIH0KIAogdm9pZCBC
YXNlQXVkaW9Db250ZXh0OjpoYW5kbGVQcmVSZW5kZXJUYXNrcyhjb25zdCBBdWRpb0lPUG9zaXRp
b24mIG91dHB1dFBvc2l0aW9uKQpAQCAtODIxLDcgKzgxNSw3IEBAIHZvaWQgQmFzZUF1ZGlvQ29u
dGV4dDo6aGFuZGxlUG9zdFJlbmRlclRhc2tzKCkKICAgICBib29sIG11c3RSZWxlYXNlTG9jazsK
ICAgICBpZiAodHJ5TG9jayhtdXN0UmVsZWFzZUxvY2spKSB7CiAgICAgICAgIC8vIFRha2UgY2Fy
ZSBvZiBmaW5pc2hpbmcgYW55IGRlcmVmcyB3aGVyZSB0aGUgdHJ5TG9jaygpIGZhaWxlZCBwcmV2
aW91c2x5LgotICAgICAgICBoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpOworICAgICAgICBo
YW5kbGVEZWZlcnJlZERlY3JlbWVudENvbm5lY3Rpb25Db3VudHMoKTsKIAogICAgICAgICAvLyBE
eW5hbWljYWxseSBjbGVhbiB1cCBub2RlcyB3aGljaCBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KICAg
ICAgICAgZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKCk7CkBAIC04NDEsMTMgKzgzNSwxMyBAQCB2
b2lkIEJhc2VBdWRpb0NvbnRleHQ6OmhhbmRsZVBvc3RSZW5kZXJUYXNrcygpCiAgICAgfQogfQog
Ci12b2lkIEJhc2VBdWRpb0NvbnRleHQ6OmhhbmRsZURlZmVycmVkRmluaXNoRGVyZWZzKCkKK3Zv
aWQgQmFzZUF1ZGlvQ29udGV4dDo6aGFuZGxlRGVmZXJyZWREZWNyZW1lbnRDb25uZWN0aW9uQ291
bnRzKCkKIHsKICAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpICYmIGlzR3JhcGhPd25lcigpKTsK
LSAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0KQotICAgICAg
ICBub2RlLT5maW5pc2hEZXJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKKyAgICBm
b3IgKGF1dG8mIG5vZGUgOiBtX2RlZmVycmVkQnJlYWtDb25uZWN0aW9uTGlzdCkKKyAgICAgICAg
bm9kZS0+ZGVjcmVtZW50Q29ubmVjdGlvbkNvdW50V2l0aExvY2soKTsKICAgICAKLSAgICBtX2Rl
ZmVycmVkRmluaXNoRGVyZWZMaXN0LmNsZWFyKCk7CisgICAgbV9kZWZlcnJlZEJyZWFrQ29ubmVj
dGlvbkxpc3QuY2xlYXIoKTsKIH0KIAogdm9pZCBCYXNlQXVkaW9Db250ZXh0OjptYXJrRm9yRGVs
ZXRpb24oQXVkaW9Ob2RlJiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaAppbmRleCBiYzg4NTk2N2E3YTQzNWM0YjkxYjM5M2Vl
ZWVmYzQ5MTkzNjUxNDJiLi44ODY1ZWJmOGQ2YTBhZTNkZWM3MTNjMDc5ZjE1N2RlMDJiYTM3ZWEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0Nv
bnRleHQuaApAQCAtMjI5LDExICsyMjksMTEgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdGhl
IG1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzIHdlIGNhbiBzdXBwb3J0LgogICAgIHN0YXRpYyB1
bnNpZ25lZCBtYXhOdW1iZXJPZkNoYW5uZWxzKCkgeyByZXR1cm4gTWF4TnVtYmVyT2ZDaGFubmVs
czsgfQogICAgIAotICAgIC8vIEluIEF1ZGlvTm9kZTo6ZGVyZWYoKSBhIHRyeUxvY2soKSBpcyB1
c2VkIGZvciBjYWxsaW5nIGZpbmlzaERlcmVmKCksIGJ1dCBpZiBpdCBmYWlscyBrZWVwIHRyYWNr
IGhlcmUuCi0gICAgdm9pZCBhZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSopOworICAg
IC8vIEluIEF1ZGlvTm9kZTo6ZGVjcmVtZW50Q29ubmVjdGlvbkNvdW50KCkgYSB0cnlMb2NrKCkg
aXMgdXNlZCBmb3IgY2FsbGluZyBkZWNyZW1lbnRDb25uZWN0aW9uQ291bnRXaXRoTG9jaygpLCBi
dXQgaWYgaXQgZmFpbHMga2VlcCB0cmFjayBoZXJlLgorICAgIHZvaWQgYWRkRGVmZXJyZWREZWNy
ZW1lbnRDb25uZWN0aW9uQ291bnQoQXVkaW9Ob2RlKik7CiAKLSAgICAvLyBJbiB0aGUgYXVkaW8g
dGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5k
bGVEZWZlcnJlZEZpbmlzaERlcmVmcygpLgotICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRGaW5pc2hE
ZXJlZnMoKTsKKyAgICAvLyBJbiB0aGUgYXVkaW8gdGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNo
IHJlbmRlciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5kbGVEZWZlcnJlZERlY3JlbWVudENvbm5lY3Rp
b25Db3VudHMoKS4KKyAgICB2b2lkIGhhbmRsZURlZmVycmVkRGVjcmVtZW50Q29ubmVjdGlvbkNv
dW50cygpOwogCiAgICAgLy8gT25seSBhY2Nlc3NlZCB3aGVuIHRoZSBncmFwaCBsb2NrIGlzIGhl
bGQuCiAgICAgdm9pZCBtYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5nSnVuY3Rp
b24qKTsKQEAgLTM5NywxMCArMzk3LDggQEAgcHJpdmF0ZToKICAgICAvLyBPbmx5IGFjY2Vzc2Vk
IGluIHRoZSBhdWRpbyB0aHJlYWQuCiAgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fZmluaXNoZWRO
b2RlczsKIAotICAgIC8vIFdlIGRvbid0IHVzZSBSZWZQdHI8QXVkaW9Ob2RlPiBoZXJlIGJlY2F1
c2UgQXVkaW9Ob2RlIGhhcyBhIG1vcmUgY29tcGxleCByZWYoKSAvIGRlcmVmKCkgaW1wbGVtZW50
YXRpb24KLSAgICAvLyB3aXRoIGFuIG9wdGlvbmFsIGFyZ3VtZW50IGZvciByZWZUeXBlLiAgV2Ug
bmVlZCB0byB1c2UgdGhlIHNwZWNpYWwgcmVmVHlwZTogUmVmVHlwZUNvbm5lY3Rpb24KICAgICAv
LyBFaXRoZXIgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLCBvciBvbiB0aGUg
bWFpbiB0aHJlYWQgd2hlbiB0aGUgYXVkaW8gdGhyZWFkIGhhcyBmaW5pc2hlZC4KLSAgICBWZWN0
b3I8QXVkaW9Ob2RlKj4gbV9yZWZlcmVuY2VkTm9kZXM7CisgICAgVmVjdG9yPEF1ZGlvQ29ubmVj
dGlvblJlZlB0cjxBdWRpb05vZGU+PiBtX3JlZmVyZW5jZWROb2RlczsKIAogICAgIC8vIEFjY3Vt
dWxhdGUgbm9kZXMgd2hpY2ggbmVlZCB0byBiZSBkZWxldGVkIGhlcmUuCiAgICAgLy8gVGhpcyBp
cyBjb3BpZWQgdG8gbV9ub2Rlc1RvRGVsZXRlIGF0IHRoZSBlbmQgb2YgYSByZW5kZXIgY3ljbGUg
aW4gaGFuZGxlUG9zdFJlbmRlclRhc2tzKCksIHdoZXJlIHdlJ3JlIGFzc3VyZWQgb2YgYSBzdGFi
bGUgZ3JhcGgKQEAgLTQyNyw3ICs0MjUsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8QXVkaW9O
b2RlKj4gbV9hdXRvbWF0aWNQdWxsTm9kZXM7CiAgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVu
ZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzOwogICAgIC8vIE9ubHkgYWNjZXNzZWQgaW4gdGhlIGF1
ZGlvIHRocmVhZC4KLSAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9kZWZlcnJlZEZpbmlzaERlcmVm
TGlzdDsKKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9kZWZlcnJlZEJyZWFrQ29ubmVjdGlvbkxp
c3Q7CiAgICAgVmVjdG9yPFZlY3RvcjxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+PiBtX3N0YXRl
UmVhY3Rpb25zOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uPiBt
X21lZGlhU2Vzc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4IDlhYzdhZDNmYjdmZTUxYTNmNzAxN2I0
ZGFlZGNlMzQxZGE1MDEwZjQuLjIzN2U5MDE3MDIyZTcxNjMyZTY0MDU3NjNlMDkzMGFlY2IwNTNi
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3Jp
cHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtMTgzLDEyICsxODMsMTAgQEAgdm9pZCBTY3JpcHRQcm9j
ZXNzb3JOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgLy8gV2hlbiB0
aGlzIGhhcHBlbnMsIGZpcmUgYW4gZXZlbnQgYW5kIHN3YXAgYnVmZmVycy4KICAgICBpZiAoIW1f
YnVmZmVyUmVhZFdyaXRlSW5kZXgpIHsKICAgICAgICAgLy8gUmVmZXJlbmNlIG91cnNlbGYgc28g
d2UgZG9uJ3QgYWNjaWRlbnRhbGx5IGdldCBkZWxldGVkIGJlZm9yZSBmaXJlUHJvY2Vzc0V2ZW50
KCkgZ2V0cyBjYWxsZWQuCi0gICAgICAgIGF1dG8gcHJvdGVjdG9yID0gbWFrZVJlZigqdGhpcyk7
Ci0KICAgICAgICAgLy8gV2Ugb25seSB3YWl0IGZvciBzY3JpcHQgY29kZSBleGVjdXRpb24gd2hl
biB0aGUgY29udGV4dCBpcyBhbiBvZmZsaW5lIG9uZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4K
ICAgICAgICAgaWYgKGNvbnRleHQoKS5pc09mZmxpbmVDb250ZXh0KCkpIHsKICAgICAgICAgICAg
IEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzLCAmc2VtYXBob3JlLCBkb3VibGVCdWZmZXJJbmRleCA9IG1fZG91YmxlQnVmZmVySW5k
ZXhdIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsICZzZW1hcGhvcmUsIGRv
dWJsZUJ1ZmZlckluZGV4ID0gbV9kb3VibGVCdWZmZXJJbmRleCwgcHJvdGVjdG9yID0gbWFrZVJl
ZigqdGhpcyldIHsKICAgICAgICAgICAgICAgICBmaXJlUHJvY2Vzc0V2ZW50KGRvdWJsZUJ1ZmZl
ckluZGV4KTsKICAgICAgICAgICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7CiAgICAgICAgICAg
ICB9KTsKQEAgLTIwMiw3ICsyMDAsNyBAQCB2b2lkIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnByb2Nl
c3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGRvdWJsZUJ1
ZmZlckluZGV4ID0gbV9kb3VibGVCdWZmZXJJbmRleCwgcHJvdGVjdG9yID0gV1RGTW92ZShwcm90
ZWN0b3IpXSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBkb3VibGVCdWZm
ZXJJbmRleCA9IG1fZG91YmxlQnVmZmVySW5kZXgsIHByb3RlY3RvciA9IG1ha2VSZWYoKnRoaXMp
XSB7CiAgICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2Nr
KTsKICAgICAgICAgICAgICAgICBmaXJlUHJvY2Vzc0V2ZW50KGRvdWJsZUJ1ZmZlckluZGV4KTsK
ICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uY3BwCmluZGV4IDVlN2FlZjE2OGNhNzc3ZDhmNzE1ZDll
NDU2NGY4YzM5NDE1YzRhNTIuLjQ1Mzc4NWJlODA1M2Q4ZTI5OGM4OGI2MWU3MTNmNjhiOTllNDA4
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1Jl
ZlB0ckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9SZWZQdHJDYWlyby5jcHAKQEAgLTI1LDczICsyNSw3MyBAQAogCiBuYW1lc3BhY2UgV1RGIHsK
IAotdGVtcGxhdGU8PiB2b2lkIHJlZklmTm90TnVsbChjYWlyb190KiBwdHIpCit0ZW1wbGF0ZTw+
IHZvaWQgRGVmYXVsdFJlZkRlcmVmVHJhaXRzPGNhaXJvX3Q+OjpyZWZJZk5vdE51bGwoY2Fpcm9f
dCogcHRyKQogewogICAgIGlmIChMSUtFTFkocHRyKSkKICAgICAgICAgY2Fpcm9fcmVmZXJlbmNl
KHB0cik7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBkZXJlZklmTm90TnVsbChjYWlyb190KiBwdHIp
Cit0ZW1wbGF0ZTw+IHZvaWQgRGVmYXVsdFJlZkRlcmVmVHJhaXRzPGNhaXJvX3Q+OjpkZXJlZklm
Tm90TnVsbChjYWlyb190KiBwdHIpCiB7CiAgICAgaWYgKExJS0VMWShwdHIpKQogICAgICAgICBj
YWlyb19kZXN0cm95KHB0cik7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCByZWZJZk5vdE51bGwoY2Fp
cm9fc3VyZmFjZV90KiBwdHIpCit0ZW1wbGF0ZTw+IHZvaWQgRGVmYXVsdFJlZkRlcmVmVHJhaXRz
PGNhaXJvX3N1cmZhY2VfdD46OnJlZklmTm90TnVsbChjYWlyb19zdXJmYWNlX3QqIHB0cikKIHsK
ICAgICBpZiAoTElLRUxZKHB0cikpCiAgICAgICAgIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKHB0
cik7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBkZXJlZklmTm90TnVsbChjYWlyb19zdXJmYWNlX3Qq
IHB0cikKK3RlbXBsYXRlPD4gdm9pZCBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8Y2Fpcm9fc3VyZmFj
ZV90Pjo6ZGVyZWZJZk5vdE51bGwoY2Fpcm9fc3VyZmFjZV90KiBwdHIpCiB7CiAgICAgaWYgKExJ
S0VMWShwdHIpKQogICAgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kocHRyKTsKIH0KIAotdGVt
cGxhdGU8PiB2b2lkIHJlZklmTm90TnVsbChjYWlyb19mb250X2ZhY2VfdCogcHRyKQordGVtcGxh
dGU8PiB2b2lkIERlZmF1bHRSZWZEZXJlZlRyYWl0czxjYWlyb19mb250X2ZhY2VfdD46OnJlZklm
Tm90TnVsbChjYWlyb19mb250X2ZhY2VfdCogcHRyKQogewogICAgIGlmIChMSUtFTFkocHRyKSkK
ICAgICAgICAgY2Fpcm9fZm9udF9mYWNlX3JlZmVyZW5jZShwdHIpOwogfQogCi10ZW1wbGF0ZTw+
IHZvaWQgZGVyZWZJZk5vdE51bGwoY2Fpcm9fZm9udF9mYWNlX3QqIHB0cikKK3RlbXBsYXRlPD4g
dm9pZCBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8Y2Fpcm9fZm9udF9mYWNlX3Q+OjpkZXJlZklmTm90
TnVsbChjYWlyb19mb250X2ZhY2VfdCogcHRyKQogewogICAgIGlmIChMSUtFTFkocHRyKSkKICAg
ICAgICAgY2Fpcm9fZm9udF9mYWNlX2Rlc3Ryb3kocHRyKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lk
IHJlZklmTm90TnVsbChjYWlyb19zY2FsZWRfZm9udF90KiBwdHIpCit0ZW1wbGF0ZTw+IHZvaWQg
RGVmYXVsdFJlZkRlcmVmVHJhaXRzPGNhaXJvX3NjYWxlZF9mb250X3Q+OjpyZWZJZk5vdE51bGwo
Y2Fpcm9fc2NhbGVkX2ZvbnRfdCogcHRyKQogewogICAgIGlmIChMSUtFTFkocHRyKSkKICAgICAg
ICAgY2Fpcm9fc2NhbGVkX2ZvbnRfcmVmZXJlbmNlKHB0cik7CiB9CiAKLXRlbXBsYXRlPD4gdm9p
ZCBkZXJlZklmTm90TnVsbChjYWlyb19zY2FsZWRfZm9udF90KiBwdHIpCit0ZW1wbGF0ZTw+IHZv
aWQgRGVmYXVsdFJlZkRlcmVmVHJhaXRzPGNhaXJvX3NjYWxlZF9mb250X3Q+OjpkZXJlZklmTm90
TnVsbChjYWlyb19zY2FsZWRfZm9udF90KiBwdHIpCiB7CiAgICAgaWYgKExJS0VMWShwdHIpKQog
ICAgICAgICBjYWlyb19zY2FsZWRfZm9udF9kZXN0cm95KHB0cik7CiB9CiAKLXRlbXBsYXRlPD4g
dm9pZCByZWZJZk5vdE51bGwoY2Fpcm9fcGF0dGVybl90KiBwdHIpCit0ZW1wbGF0ZTw+IHZvaWQg
RGVmYXVsdFJlZkRlcmVmVHJhaXRzPGNhaXJvX3BhdHRlcm5fdD46OnJlZklmTm90TnVsbChjYWly
b19wYXR0ZXJuX3QqIHB0cikKIHsKICAgICBpZiAoTElLRUxZKHB0cikpCiAgICAgICAgIGNhaXJv
X3BhdHRlcm5fcmVmZXJlbmNlKHB0cik7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBkZXJlZklmTm90
TnVsbChjYWlyb19wYXR0ZXJuX3QqIHB0cikKK3RlbXBsYXRlPD4gdm9pZCBEZWZhdWx0UmVmRGVy
ZWZUcmFpdHM8Y2Fpcm9fcGF0dGVybl90Pjo6ZGVyZWZJZk5vdE51bGwoY2Fpcm9fcGF0dGVybl90
KiBwdHIpCiB7CiAgICAgaWYgKExJS0VMWShwdHIpKQogICAgICAgICBjYWlyb19wYXR0ZXJuX2Rl
c3Ryb3kocHRyKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIHJlZklmTm90TnVsbChjYWlyb19yZWdp
b25fdCogcHRyKQordGVtcGxhdGU8PiB2b2lkIERlZmF1bHRSZWZEZXJlZlRyYWl0czxjYWlyb19y
ZWdpb25fdD46OnJlZklmTm90TnVsbChjYWlyb19yZWdpb25fdCogcHRyKQogewogICAgIGlmIChM
SUtFTFkocHRyKSkKICAgICAgICAgY2Fpcm9fcmVnaW9uX3JlZmVyZW5jZShwdHIpOwogfQogCi10
ZW1wbGF0ZTw+IHZvaWQgZGVyZWZJZk5vdE51bGwoY2Fpcm9fcmVnaW9uX3QqIHB0cikKK3RlbXBs
YXRlPD4gdm9pZCBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8Y2Fpcm9fcmVnaW9uX3Q+OjpkZXJlZklm
Tm90TnVsbChjYWlyb19yZWdpb25fdCogcHRyKQogewogICAgIGlmIChMSUtFTFkocHRyKSkKICAg
ICAgICAgY2Fpcm9fcmVnaW9uX2Rlc3Ryb3kocHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0ckNhaXJvLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9SZWZQdHJDYWlyby5oCmluZGV4IGVjMDc2NzhkYjI0
ZmQzN2NiMjMyODkyYjQyOGJhZWI0N2MxMzVhODkuLjYzZmE2YWFiOWQzZDM3NmI2ZGYwNGI1ZWZi
ZGNmMmVjYThlNDhkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1JlZlB0ckNhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uaApAQCAtMzMsMjMgKzMzLDQxIEBAIHR5cGVkZWYgc3Ry
dWN0IF9jYWlyb19yZWdpb24gY2Fpcm9fcmVnaW9uX3Q7CiAKIG5hbWVzcGFjZSBXVEYgewogCi10
ZW1wbGF0ZTw+IHZvaWQgcmVmSWZOb3ROdWxsKGNhaXJvX3QqIHB0cik7Ci10ZW1wbGF0ZTw+IFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGVyZWZJZk5vdE51bGwoY2Fpcm9fdCogcHRyKTsKK3RlbXBsYXRl
PD4KK3N0cnVjdCBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8Y2Fpcm9fdD4geworICAgIHN0YXRpYyB2
b2lkIHJlZklmTm90TnVsbChjYWlyb190KiBwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyB2b2lkIGRlcmVmSWZOb3ROdWxsKGNhaXJvX3QqIHB0cik7Cit9OwogCi10ZW1wbGF0ZTw+IFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVmSWZOb3ROdWxsKGNhaXJvX3N1cmZhY2VfdCogcHRyKTsKLXRl
bXBsYXRlPD4gV0VCQ09SRV9FWFBPUlQgdm9pZCBkZXJlZklmTm90TnVsbChjYWlyb19zdXJmYWNl
X3QqIHB0cik7Cit0ZW1wbGF0ZTw+CitzdHJ1Y3QgRGVmYXVsdFJlZkRlcmVmVHJhaXRzPGNhaXJv
X3N1cmZhY2VfdD4geworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZklmTm90TnVs
bChjYWlyb19zdXJmYWNlX3QqIHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQg
ZGVyZWZJZk5vdE51bGwoY2Fpcm9fc3VyZmFjZV90KiBwdHIpOworfTsKIAotdGVtcGxhdGU8PiB2
b2lkIHJlZklmTm90TnVsbChjYWlyb19mb250X2ZhY2VfdCogcHRyKTsKLXRlbXBsYXRlPD4gdm9p
ZCBkZXJlZklmTm90TnVsbChjYWlyb19mb250X2ZhY2VfdCogcHRyKTsKK3RlbXBsYXRlPD4KK3N0
cnVjdCBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8Y2Fpcm9fZm9udF9mYWNlX3Q+IHsKKyAgICBzdGF0
aWMgdm9pZCByZWZJZk5vdE51bGwoY2Fpcm9fZm9udF9mYWNlX3QqIHB0cik7CisgICAgc3RhdGlj
IHZvaWQgZGVyZWZJZk5vdE51bGwoY2Fpcm9fZm9udF9mYWNlX3QqIHB0cik7Cit9OwogCi10ZW1w
bGF0ZTw+IHZvaWQgcmVmSWZOb3ROdWxsKGNhaXJvX3NjYWxlZF9mb250X3QqIHB0cik7Ci10ZW1w
bGF0ZTw+IHZvaWQgZGVyZWZJZk5vdE51bGwoY2Fpcm9fc2NhbGVkX2ZvbnRfdCogcHRyKTsKK3Rl
bXBsYXRlPD4KK3N0cnVjdCBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8Y2Fpcm9fc2NhbGVkX2ZvbnRf
dD4geworICAgIHN0YXRpYyB2b2lkIHJlZklmTm90TnVsbChjYWlyb19zY2FsZWRfZm9udF90KiBw
dHIpOworICAgIHN0YXRpYyB2b2lkIGRlcmVmSWZOb3ROdWxsKGNhaXJvX3NjYWxlZF9mb250X3Qq
IHB0cik7Cit9OwogCi10ZW1wbGF0ZTw+IHZvaWQgcmVmSWZOb3ROdWxsKGNhaXJvX3BhdHRlcm5f
dCopOwotdGVtcGxhdGU8PiB2b2lkIGRlcmVmSWZOb3ROdWxsKGNhaXJvX3BhdHRlcm5fdCopOwor
dGVtcGxhdGU8Pgorc3RydWN0IERlZmF1bHRSZWZEZXJlZlRyYWl0czxjYWlyb19wYXR0ZXJuX3Q+
IHsKKyAgICBzdGF0aWMgdm9pZCByZWZJZk5vdE51bGwoY2Fpcm9fcGF0dGVybl90Kik7CisgICAg
c3RhdGljIHZvaWQgZGVyZWZJZk5vdE51bGwoY2Fpcm9fcGF0dGVybl90Kik7Cit9OwogCi10ZW1w
bGF0ZTw+IHZvaWQgcmVmSWZOb3ROdWxsKGNhaXJvX3JlZ2lvbl90Kik7Ci10ZW1wbGF0ZTw+IHZv
aWQgZGVyZWZJZk5vdE51bGwoY2Fpcm9fcmVnaW9uX3QqKTsKK3RlbXBsYXRlPD4KK3N0cnVjdCBE
ZWZhdWx0UmVmRGVyZWZUcmFpdHM8Y2Fpcm9fcmVnaW9uX3Q+IHsKKyAgICBzdGF0aWMgdm9pZCBy
ZWZJZk5vdE51bGwoY2Fpcm9fcmVnaW9uX3QqKTsKKyAgICBzdGF0aWMgdm9pZCBkZXJlZklmTm90
TnVsbChjYWlyb19yZWdpb25fdCopOworfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL1JlZlB0ckZv
bnRjb25maWcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
UmVmUHRyRm9udGNvbmZpZy5jcHAKaW5kZXggOGE0YmRjMTMxM2I0Yzg5NDNiYzlkYjYxYjY1ZjU3
YjNhMjc0ZjFmOS4uMmVkZDhmZGVmMDVmY2M2MDQ2ZDRiNzdlMmEwYzMyMzIyNjQ5ZDVmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvUmVmUHRy
Rm9udGNvbmZpZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvUmVmUHRyRm9udGNvbmZpZy5jcHAKQEAgLTI1LDI1ICsyNSwyNSBAQAogCiBuYW1lc3Bh
Y2UgV1RGIHsKIAotdGVtcGxhdGU8PiB2b2lkIHJlZklmTm90TnVsbChGY1BhdHRlcm4qIHB0cikK
K3RlbXBsYXRlPD4gdm9pZCBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8RmNQYXR0ZXJuPjo6cmVmSWZO
b3ROdWxsKEZjUGF0dGVybiogcHRyKQogewogICAgIGlmIChMSUtFTFkocHRyKSkKICAgICAgICAg
RmNQYXR0ZXJuUmVmZXJlbmNlKHB0cik7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBkZXJlZklmTm90
TnVsbChGY1BhdHRlcm4qIHB0cikKK3RlbXBsYXRlPD4gdm9pZCBEZWZhdWx0UmVmRGVyZWZUcmFp
dHM8RmNQYXR0ZXJuPjo6ZGVyZWZJZk5vdE51bGwoRmNQYXR0ZXJuKiBwdHIpCiB7CiAgICAgaWYg
KExJS0VMWShwdHIpKQogICAgICAgICBGY1BhdHRlcm5EZXN0cm95KHB0cik7CiB9CiAKLXRlbXBs
YXRlPD4gdm9pZCByZWZJZk5vdE51bGwoRmNDb25maWcqIHB0cikKK3RlbXBsYXRlPD4gdm9pZCBE
ZWZhdWx0UmVmRGVyZWZUcmFpdHM8RmNDb25maWc+OjpyZWZJZk5vdE51bGwoRmNDb25maWcqIHB0
cikKIHsKICAgICBpZiAoTElLRUxZKHB0cikpCiAgICAgICAgIEZjQ29uZmlnUmVmZXJlbmNlKHB0
cik7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBkZXJlZklmTm90TnVsbChGY0NvbmZpZyogcHRyKQor
dGVtcGxhdGU8PiB2b2lkIERlZmF1bHRSZWZEZXJlZlRyYWl0czxGY0NvbmZpZz46OmRlcmVmSWZO
b3ROdWxsKEZjQ29uZmlnKiBwdHIpCiB7CiAgICAgaWYgKExJS0VMWShwdHIpKQogICAgICAgICBG
Y0NvbmZpZ0Rlc3Ryb3kocHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL1JlZlB0ckZvbnRjb25maWcuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL1JlZlB0ckZvbnRjb25maWcuaAppbmRleCA1OWE4ZTQ1
ZDcwOTUzMDlhOGIwZjg5N2UwYWZiMGMwYmI5ODM0NDEzLi43ZGIzYzE4ZjljYmZjYmU0YWVkZGNj
YWRlMmVkOWY4ZmVmMTFiMWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9SZWZQdHJGb250Y29uZmlnLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvUmVmUHRyRm9udGNvbmZpZy5oCkBAIC0yOCwxMSAr
MjgsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0ZjQ29uZmlnIEZjQ29uZmlnOwogCiBuYW1lc3BhY2Ug
V1RGIHsKIAotdGVtcGxhdGU8PiB2b2lkIHJlZklmTm90TnVsbChGY1BhdHRlcm4qIHB0cik7Ci10
ZW1wbGF0ZTw+IHZvaWQgZGVyZWZJZk5vdE51bGwoRmNQYXR0ZXJuKiBwdHIpOwotCi10ZW1wbGF0
ZTw+IHZvaWQgcmVmSWZOb3ROdWxsKEZjQ29uZmlnKiBwdHIpOwotdGVtcGxhdGU8PiB2b2lkIGRl
cmVmSWZOb3ROdWxsKEZjQ29uZmlnKiBwdHIpOwordGVtcGxhdGU8Pgorc3RydWN0IERlZmF1bHRS
ZWZEZXJlZlRyYWl0czxGY1BhdHRlcm4+IHsKKyAgICBzdGF0aWMgdm9pZCByZWZJZk5vdE51bGwo
RmNQYXR0ZXJuKiBwdHIpOworICAgIHN0YXRpYyB2b2lkIGRlcmVmSWZOb3ROdWxsKEZjUGF0dGVy
biogcHRyKTsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8
RmNDb25maWc+IHsKKyAgICBzdGF0aWMgdm9pZCByZWZJZk5vdE51bGwoRmNDb25maWcqIHB0cik7
CisgICAgc3RhdGljIHZvaWQgZGVyZWZJZk5vdE51bGwoRmNDb25maWcqIHB0cik7Cit9OwogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409648</attachid>
            <date>2020-09-24 18:49:47 -0700</date>
            <delta_ts>2020-09-25 13:36:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216945-20200924184946.patch</filename>
            <type>text/plain</type>
            <size>50061</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
Mzc3MzlkZGM1NGYxNjhjZDRmOTAwZTY1MTJjYzA3NmQyMTIxYmUxLi43ZWRkMzRkYWRiNDIyYWNh
YTFjY2I0MWM3M2Q4OTEzMzZhZWVlNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMC0wOS0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEdldCByaWQgb2YgQXVkaW9Ob2RlOjpSZWZUeXBlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY5NDUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
OgorICAgICAgICAoSlNDOjpDYWNoZWRSZWZQdHI6OmRlY29kZSBjb25zdCk6CisKIDIwMjAtMDkt
MjQgIEJhc3VrZSBTdXp1a2kgIDxiYXN1a2Uuc3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtQ
bGF5U3RhdGlvbl0gU3RvcCByYWlzaW5nIFNJR1BJUEUgd2hlbiBjbGllbnQgc2lkZSBvZiBSZW1v
dGVJbnNwZWN0b3IgZGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwppbmRleCBhYjgwMjA1NjZiMDQzZTY1MTcwZWI3NmRiNDI3OTUwZmI1
OTZlMjIwLi42ODJkMTc4MDZhZjExMDJjNGM1OTFkOTcxZjYyNmNkOTgwMzZjNTBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMzIEBACisyMDIwLTA5LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgR2V0IHJpZCBvZiBBdWRpb05vZGU6OlJlZlR5cGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk0NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aGlyZCB0ZW1wbGF0ZSBwYXJh
bWV0ZXIgdG8gUmVmUHRyIGFsbG93aW5nIHRvIGRlZmluZSB0aGUgdHJhaXRzCisgICAgICAgIGZy
b20gaW5jcmVtZW50aW5nIC8gZGVjcmVtZW50aW5nIHRoZSByZWZjb3VudC4gVGhlIGRlZmF1bHQg
dHJhaXRzCisgICAgICAgIGNhbGwgcmVmKCkgLyBkZXJlZigpIGJ1dCB0aGlzIGNhbiBub3cgYmUg
Y3VzdG9taXplZCB0byBjYWxsIG90aGVyCisgICAgICAgIGZ1bmN0aW9ucy4KKworICAgICAgICAq
IHd0Zi9Db21wYWN0UmVmUHRyVHVwbGUuaDoKKyAgICAgICAgKiB3dGYvRm9yd2FyZC5oOgorICAg
ICAgICAqIHd0Zi9SZWZQdHIuaDoKKyAgICAgICAgKFdURjo6RGVmYXVsdFJlZkRlcmVmVHJhaXRz
OjpyZWZJZk5vdE51bGwpOgorICAgICAgICAoV1RGOjpEZWZhdWx0UmVmRGVyZWZUcmFpdHM6OmRl
cmVmSWZOb3ROdWxsKToKKyAgICAgICAgKFdURjo6UmVmUHRyOjpSZWZQdHIpOgorICAgICAgICAo
V1RGOjpSZWZQdHI6On5SZWZQdHIpOgorICAgICAgICAoV1RGOjpWPjo6UmVmUHRyKToKKyAgICAg
ICAgKFdURjo6Vj46OmxlYWtSZWYpOgorICAgICAgICAoV1RGOjo9KToKKyAgICAgICAgKFdURjo6
Vj46OnN3YXApOgorICAgICAgICAoV1RGOjpzd2FwKToKKyAgICAgICAgKFdURjo6b3BlcmF0b3I9
PSk6CisgICAgICAgIChXVEY6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV1RGOjpzdGF0aWNfcG9p
bnRlcl9jYXN0KToKKyAgICAgICAgKFdURjo6YWRvcHRSZWYpOgorICAgICAgICAoV1RGOjppcyk6
CisKIDIwMjAtMDktMjQgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtMRkNdW0ludGVncmF0aW9uXSBFbmFibGUgb24gQXBwbGUgV2luZG93cyBwb3J0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNzMwZjY1MjdmMTc1YjlhM2FmMzg1OGIwN2I4MzU4MWI4NmUxZmIzMy4uZTJkYWFm
NWRjZjE1NWVkNWFiZDNjMmU1YjA2OTMyMzY2YTBmMGE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDcyIEBACisyMDIwLTA5LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgR2V0IHJpZCBvZiBBdWRpb05vZGU6OlJlZlR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk0NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZpb3VzbHksIHRoZSBub2RlIGhhZCByZWYo
KS9kZXJlZigpIGZ1bmN0aW9uIHRha2luZyBhIFJlZlR5cGUgcGFyYW1ldGVyLgorICAgICAgICBU
aGUgUmVmVHlwZSB3b3VsZCBiZSB1c2VkIHRvIGRldGVybWluZSB3aGljaCBjb3VudGVyIHNob3Vs
ZCBiZSBpbmNyZW1lbnRlZAorICAgICAgICBvciBkZWNyZW1lbnRlZDogZWl0aGVyIG1fbm9ybWFs
UmVmQ291bnQgb3IgbV9jb25uZWN0aW9uUmVmQ291bnQuCisKKyAgICAgICAgSW4gYSBwcmV2aW91
cyBwYXRjaCwgSSBoYXZlIGFscmVhZHkgcG9ydGVkIGNvZGUgdGhhdCB3YXMgY2FsbGluZyByZWYo
KSAvIGRlcmVmKCkKKyAgICAgICAgZXhwbGljaXRseSB3aXRoIFJlZlR5cGVOb3JtYWwgdG8gdXNl
IFJlZlB0cjw+IGluc3RlYWQuIFRoaXMgcGF0Y2ggZ29lcyBmdXJ0aGVyIGJ5OgorICAgICAgICAx
LiBEcm9wcGluZyB0aGUgUmVmVHlwZSBwYXJhbWV0ZXIgdG8gcmVmKCkgLyBkZXJlZigpLiByZWYo
KSAvIGRlcmVmKCkgbm93IGluY3JlbWVudAorICAgICAgICAgICBvciBkZWNyZW1lbnQgbV9ub3Jt
YWxSZWZDb3VudCBvbmx5LiBDbGllbnRzIGFyZSBleHBlY3RlZCB0byB1c2UgUmVmUHRyIHRvIGhh
bmRsZQorICAgICAgICAgICByZWYgY291bnRpbmcuCisgICAgICAgIDIuIEludHJvZHVjZSBuZXcg
aW5jcmVtZW50Q29ubmVjdGlvbkNvdW50KCkgLyBkZWNyZW1lbnRDb25uZWN0aW9uQ291bnQoKSB0
byBpbmNyZW1lbnQKKyAgICAgICAgICAgb3IgZGVjcmVtZW50IG1fY29ubmVjdGlvblJlZkNvdW50
LiBUbyByZWR1Y2UgdGhlIGNoYW5jZSBvZiBsZWFrYWdlLCBjbGllbnRzIHNob3VsZAorICAgICAg
ICAgICBub3QgY2FsbCB0aGVzZSBmdW5jdGlvbnMgZGlyZWN0bHkgYW55bW9yZS4gSW5zdGVhZCwg
dGhleSB1c2UgdXNlIHRoZSBuZXcKKyAgICAgICAgICAgQXVkaW9Db25uZWN0aW9uUmVmUHRyPD4g
cG9pbnRlciB0eXBlIHRvIGhhbmRsZSB0aGUgY29ubmVjdGlvbiByZWYgY291bnRpbmcgZm9yIHRo
ZW0uCisgICAgICAgICAgIEF1ZGlvQ29ubmVjdGlvblJlZlB0cjw+IGlzIGEgUmVmUHRyPD4gd2hp
Y2ggc3BlY2lhbCB0cmFpdHMgY2F1c2luZyBpbmNyZW1lbnRDb25uZWN0aW9uQ291bnQoKQorICAg
ICAgICAgICBhbmQgZGVjcmVtZW50Q29ubmVjdGlvbkNvdW50KCkgdG8gZ2V0IGNhbGxlZCBvbiB0
aGUgQXVkaW9Ob2RlIGluc3RlYWQgb2YgcmVmKCkgYW5kCisgICAgICAgICAgIGRlcmVmKCkuCisK
KyAgICAgICAgSSBiZWxpZXZlIHRoaXMgbmV3IGRlc2lnbiBpcyBhIGJpdCBzaW1wbGVyIHRvIHJl
YXNvbiBhYm91dCBhbmQgbGVzcyBwcm9uZSB0byBsZWFrcy4KKyAgICAgICAgVGhlcmUgaXMgbm8g
bG9uZ2VyIGFueSBjb2RlIGV4cGxpY2l0bHkgcmVmJ2luZyBvciBkZXJlZidpbmcgdGhlIEF1ZGlv
Tm9kZXMuIEluc3RlYWQsCisgICAgICAgIFJlZlB0cjw+IG9yIEF1ZGlvQ29ubmVjdGlvblJlZlB0
cjw+IGlzIHVzZWQgdG8gaW5jcmVtZW50L2RlY3JlbWVudCB0aGUgcmlnaHQgaW50ZXJuYWwKKyAg
ICAgICAgY291bnQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBXZWItZmFjaW5nIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0
UGFubmVyTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmNs
ZWFyUGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNv
dXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmRpc2FibGVPdXRwdXRzSWZOZWNlc3NhcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjppbmNyZW1lbnRDb25uZWN0aW9uQ291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpkZWNyZW1lbnRDb25uZWN0aW9uQ291bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpkZWNyZW1lbnRDb25uZWN0aW9uQ291bnRXaXRo
TG9jayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6Om1hcmtOb2RlRm9yRGVsZXRpb25J
Zk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OnJlZik6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb05vZGU6OmRlcmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9k
ZTo6ZGVyZWZXaXRoTG9jayk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUNvbm5lY3Rpb25SZWZEZXJlZlRyYWl0czo6
cmVmSWZOb3ROdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZUNvbm5lY3Rpb25SZWZE
ZXJlZlRyYWl0czo6ZGVyZWZJZk5vdE51bGwpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Ob2RlSW5wdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6OmNv
bm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6OmRpc2Nvbm5lY3QpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvTm9kZU91dHB1dDo6cHJvcGFnYXRlQ2hhbm5lbENvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvTm9kZU91dHB1dDo6YWRkSW5wdXQpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Ob2RlT3V0cHV0OjpkaXNjb25uZWN0QWxsSW5wdXRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvTm9kZU91dHB1dDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05v
ZGVPdXRwdXQ6OmVuYWJsZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVP
dXRwdXQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6fkJhc2VBdWRpb0NvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6cmVmTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpCYXNlQXVkaW9Db250ZXh0OjpkZXJlZk5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QmFzZUF1ZGlvQ29udGV4dDo6ZGVyZWZVbmZpbmlzaGVkU291cmNlTm9kZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWREZWNyZW1lbnRDb25uZWN0
aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6aGFuZGxlUG9z
dFJlbmRlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb0NvbnRleHQ6OmhhbmRs
ZURlZmVycmVkRGVjcmVtZW50Q29ubmVjdGlvbkNvdW50cyk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nv
ck5vZGU6OnByb2Nlc3MpOgorCiAyMDIwLTA5LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgVXNlIG1vcmUgaW5saW5lIGluaXRpYWxpemF0aW9uIGFuZCBjb25z
dGV4cHIgaW4gV2ViQXVkaW8gY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHlwZXMuY3BwCmluZGV4IDU0NzU3NjQ2ZDcwMjBkNTBlYmU3ZTQ1ZjFjMzI4OTk5YzY0
MGY2NGMuLmU0NGMxYTM5Nzk0YjI0YmNkODdhZWYzOThhN2MyODI1N2VmMGM1MmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTU1NCwxMCAr
NTU0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBp
ZiAoaXNOZXdBbGxvY2F0aW9uKSB7CiAgICAgICAgICAgICBkZWNvZGVyLmFkZEZpbmFsaXplcihb
PV0gewotICAgICAgICAgICAgICAgIGRlcmVmSWZOb3ROdWxsKGRlY29kZWRQdHIpOworICAgICAg
ICAgICAgICAgIFdURjo6RGVmYXVsdFJlZkRlcmVmVHJhaXRzPFNvdXJjZT46OmRlcmVmSWZOb3RO
dWxsKGRlY29kZWRQdHIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLSAgICAgICAgcmVm
SWZOb3ROdWxsKGRlY29kZWRQdHIpOworICAgICAgICBXVEY6OkRlZmF1bHRSZWZEZXJlZlRyYWl0
czxTb3VyY2U+OjpyZWZJZk5vdE51bGwoZGVjb2RlZFB0cik7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihkZWNvZGVkUHRyKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Nv
bXBhY3RSZWZQdHJUdXBsZS5oIGIvU291cmNlL1dURi93dGYvQ29tcGFjdFJlZlB0clR1cGxlLmgK
aW5kZXggMWFmMmUwNjNjOTAwZWQ4Mjc1NTI3MzI0MzA4NjY4M2VmZjBhMTI3MC4uNjQ2Y2FkNjQy
MjNlMmM5ZTZjODExODVjYTllYWRhZTMxYmE5ZGUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvQ29tcGFjdFJlZlB0clR1cGxlLmgKKysrIGIvU291cmNlL1dURi93dGYvQ29tcGFjdFJlZlB0
clR1cGxlLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIENvbXBhY3RSZWZQdHJUdXBs
ZSgpID0gZGVmYXVsdDsKICAgICB+Q29tcGFjdFJlZlB0clR1cGxlKCkKICAgICB7Ci0gICAgICAg
IGRlcmVmSWZOb3ROdWxsKG1fZGF0YS5wb2ludGVyKCkpOworICAgICAgICBXVEY6OkRlZmF1bHRS
ZWZEZXJlZlRyYWl0czxUPjo6ZGVyZWZJZk5vdE51bGwobV9kYXRhLnBvaW50ZXIoKSk7CiAgICAg
fQogCiAgICAgVCogcG9pbnRlcigpIGNvbnN0CkBAIC00OSwxMCArNDksMTAgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRQb2ludGVyKFQqIHBvaW50ZXIpCiAgICAgewotICAgICAgICByZWZJZk5v
dE51bGwocG9pbnRlcik7CisgICAgICAgIFdURjo6RGVmYXVsdFJlZkRlcmVmVHJhaXRzPFQ+Ojpy
ZWZJZk5vdE51bGwocG9pbnRlcik7CiAgICAgICAgIGF1dG8qIG9sZCA9IG1fZGF0YS5wb2ludGVy
KCk7CiAgICAgICAgIG1fZGF0YS5zZXRQb2ludGVyKHBvaW50ZXIpOwotICAgICAgICBkZXJlZklm
Tm90TnVsbChvbGQpOworICAgICAgICBXVEY6OkRlZmF1bHRSZWZEZXJlZlRyYWl0czxUPjo6ZGVy
ZWZJZk5vdE51bGwob2xkKTsKICAgICB9CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2RhdGEudHlwZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKaW5kZXggMzE2MmQxY2E0ODg2MmQzYjE4ODM5ZjVi
OTc0ZjZmNjNjMTc2YmU3ZC4uNTRjMGY3MmEzZTI3OTlhZWUyYWQ0YTY5MTUzYjBiNzIwMGQ3N2Ix
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0ZvcndhcmQuaApAQCAtNTksNiArNTksNyBAQCB1c2luZyBWZWN0b3JNYWxsb2MgPSBGYXN0
TWFsbG9jOwogI2VuZGlmCiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRHVtYlB0clRyYWl0
czsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRGVmYXVsdFJlZkRlcmVmVHJhaXRzOwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgQ29tcGxldGlvbkhhbmRsZXI7CiB0ZW1wbGF0ZTx0eXBl
bmFtZT4gY2xhc3MgRnVuY3Rpb247CkBAIC02OSw3ICs3MCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
PiBjbGFzcyBPcHRpb25hbDsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBQYWNrZWQ7CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgPSBhbGlnbm9mKFQpPiBjbGFzcyBQYWNrZWRBbGlnbmVk
UHRyOwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBEdW1iUHRyVHJhaXRzPFQ+PiBj
bGFzcyBSZWY7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IER1bWJQdHJUcmFpdHM8
VD4+IGNsYXNzIFJlZlB0cjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gRHVtYlB0
clRyYWl0czxUPiwgdHlwZW5hbWUgPSBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8VD4+IGNsYXNzIFJl
ZlB0cjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTdHJpbmdCdWZmZXI7CiB0ZW1wbGF0ZTx0
eXBlbmFtZT4gY2xhc3MgU3RyaW5nUGFyc2luZ0J1ZmZlcjsKIHRlbXBsYXRlPHR5cGVuYW1lLCB0
eXBlbmFtZSA9IHZvaWQ+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAppbmRleCBkZGJh
MjY2ZTQxZmNkOWY1NGU1MGY5MjYxNGNjMjIzZjA2ZjA1YzMwLi4wOTIzMmNiY2UyNzdiMWRiYmU1
ZjIxNmE1YzhjMjJmNDVjYWFhZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtMjksNDUgKzI5LDQ4IEBACiAKIG5h
bWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQdHJUcmFpdHM+
IGNsYXNzIFJlZlB0cjsKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFB0clRyYWl0cyA9
IER1bWJQdHJUcmFpdHM8VD4+IFJlZlB0cjxULCBQdHJUcmFpdHM+IGFkb3B0UmVmKFQqKTsKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0UmVmRGVyZWZUcmFpdHMgeworICAgIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgcmVmSWZOb3ROdWxsKFQqIHB0cikKKyAgICB7CisgICAg
ICAgIGlmIChMSUtFTFkocHRyICE9IG51bGxwdHIpKQorICAgICAgICAgICAgcHRyLT5yZWYoKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGRlcmVmSWZOb3ROdWxsKFQq
IHB0cikKKyAgICB7CisgICAgICAgIGlmIChMSUtFTFkocHRyICE9IG51bGxwdHIpKQorICAgICAg
ICAgICAgcHRyLT5kZXJlZigpOworICAgIH0KK307CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IEFM
V0FZU19JTkxJTkUgdm9pZCByZWZJZk5vdE51bGwoVCogcHRyKQotewotICAgIGlmIChMSUtFTFko
cHRyICE9IG51bGxwdHIpKQotICAgICAgICBwdHItPnJlZigpOwotfQordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgUHRyVHJhaXRzLCB0eXBlbmFtZSBSZWZEZXJlZlRyYWl0cz4gY2xhc3Mg
UmVmUHRyOwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUHRyVHJhaXRzID0gRHVtYlB0
clRyYWl0czxUPiwgdHlwZW5hbWUgUmVmRGVyZWZUcmFpdHMgPSBEZWZhdWx0UmVmRGVyZWZUcmFp
dHM8VD4+IFJlZlB0cjxULCBQdHJUcmFpdHMsIFJlZkRlcmVmVHJhaXRzPiBhZG9wdFJlZihUKik7
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IEFMV0FZU19JTkxJTkUgdm9pZCBkZXJlZklmTm90TnVs
bChUKiBwdHIpCi17Ci0gICAgaWYgKExJS0VMWShwdHIgIT0gbnVsbHB0cikpCi0gICAgICAgIHB0
ci0+ZGVyZWYoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVHJhaXRzPgor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgX1B0clRyYWl0cywgdHlwZW5hbWUgX1JlZkRl
cmVmVHJhaXRzPgogY2xhc3MgUmVmUHRyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICB1c2luZyBQdHJUcmFpdHMgPSBUcmFpdHM7CisgICAgdXNpbmcgUHRyVHJh
aXRzID0gX1B0clRyYWl0czsKKyAgICB1c2luZyBSZWZEZXJlZlRyYWl0cyA9IF9SZWZEZXJlZlRy
YWl0czsKICAgICB0eXBlZGVmIFQgVmFsdWVUeXBlOwogICAgIHR5cGVkZWYgVmFsdWVUeXBlKiBQ
dHJUeXBlOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUmVmUHRyID0gdHJ1ZTsKIAog
ICAgIEFMV0FZU19JTkxJTkUgY29uc3RleHByIFJlZlB0cigpIDogbV9wdHIobnVsbHB0cikgeyB9
Ci0gICAgQUxXQVlTX0lOTElORSBSZWZQdHIoVCogcHRyKSA6IG1fcHRyKHB0cikgeyByZWZJZk5v
dE51bGwocHRyKTsgfQotICAgIEFMV0FZU19JTkxJTkUgUmVmUHRyKGNvbnN0IFJlZlB0ciYgbykg
OiBtX3B0cihvLm1fcHRyKSB7IHJlZklmTm90TnVsbChQdHJUcmFpdHM6OnVud3JhcChtX3B0cikp
OyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4gUmVmUHRyKGNvbnN0IFJl
ZlB0cjxYLCBZPiYgbykgOiBtX3B0cihvLmdldCgpKSB7IHJlZklmTm90TnVsbChQdHJUcmFpdHM6
OnVud3JhcChtX3B0cikpOyB9CisgICAgQUxXQVlTX0lOTElORSBSZWZQdHIoVCogcHRyKSA6IG1f
cHRyKHB0cikgeyBSZWZEZXJlZlRyYWl0czo6cmVmSWZOb3ROdWxsKHB0cik7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIFJlZlB0cihjb25zdCBSZWZQdHImIG8pIDogbV9wdHIoby5tX3B0cikgeyBSZWZE
ZXJlZlRyYWl0czo6cmVmSWZOb3ROdWxsKFB0clRyYWl0czo6dW53cmFwKG1fcHRyKSk7IH0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZLCB0eXBlbmFtZSBaPiBSZWZQdHIoY29u
c3QgUmVmUHRyPFgsIFksIFo+JiBvKSA6IG1fcHRyKG8uZ2V0KCkpIHsgUmVmRGVyZWZUcmFpdHM6
OnJlZklmTm90TnVsbChQdHJUcmFpdHM6OnVud3JhcChtX3B0cikpOyB9CiAKICAgICBBTFdBWVNf
SU5MSU5FIFJlZlB0cihSZWZQdHImJiBvKSA6IG1fcHRyKG8ubGVha1JlZigpKSB7IH0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPiBSZWZQdHIoUmVmUHRyPFgsIFk+JiYgbykg
OiBtX3B0cihvLmxlYWtSZWYoKSkgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5h
bWUgWSwgdHlwZW5hbWUgWj4gUmVmUHRyKFJlZlB0cjxYLCBZLCBaPiYmIG8pIDogbV9wdHIoby5s
ZWFrUmVmKCkpIHsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+IFJlZlB0
cihSZWY8WCwgWT4mJik7CiAKICAgICAvLyBIYXNoIHRhYmxlIGRlbGV0ZWQgdmFsdWVzLCB3aGlj
aCBhcmUgb25seSBjb25zdHJ1Y3RlZCBhbmQgbmV2ZXIgY29waWVkIG9yIGRlc3Ryb3llZC4KICAg
ICBSZWZQdHIoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3B0cihQdHJUcmFpdHM6Omhh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpKSB7IH0KICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gUHRyVHJhaXRzOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSht
X3B0cik7IH0KIAotICAgIEFMV0FZU19JTkxJTkUgflJlZlB0cigpIHsgZGVyZWZJZk5vdE51bGwo
UHRyVHJhaXRzOjpleGNoYW5nZShtX3B0ciwgbnVsbHB0cikpOyB9CisgICAgQUxXQVlTX0lOTElO
RSB+UmVmUHRyKCkgeyBSZWZEZXJlZlRyYWl0czo6ZGVyZWZJZk5vdE51bGwoUHRyVHJhaXRzOjpl
eGNoYW5nZShtX3B0ciwgbnVsbHB0cikpOyB9CiAKICAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVy
biBQdHJUcmFpdHM6OnVud3JhcChtX3B0cik7IH0KIApAQCAtOTAsMTIgKzkzLDEyIEBAIHB1Ymxp
YzoKICAgICBSZWZQdHImIG9wZXJhdG9yPShjb25zdCBSZWZQdHImKTsKICAgICBSZWZQdHImIG9w
ZXJhdG9yPShUKik7CiAgICAgUmVmUHRyJiBvcGVyYXRvcj0oc3RkOjpudWxscHRyX3QpOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+IFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0
IFJlZlB0cjxYLCBZPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFksIHR5
cGVuYW1lIFo+IFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFJlZlB0cjxYLCBZLCBaPiYpOwogICAg
IFJlZlB0ciYgb3BlcmF0b3I9KFJlZlB0ciYmKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0
eXBlbmFtZSBZPiBSZWZQdHImIG9wZXJhdG9yPShSZWZQdHI8WCwgWT4mJik7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWSwgdHlwZW5hbWUgWj4gUmVmUHRyJiBvcGVyYXRvcj0o
UmVmUHRyPFgsIFksIFo+JiYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFg+IFJlZlB0ciYgb3Bl
cmF0b3I9KFJlZjxYPiYmKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+
IHZvaWQgc3dhcChSZWZQdHI8WCwgWT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBl
bmFtZSBZLCB0eXBlbmFtZSBaPiB2b2lkIHN3YXAoUmVmUHRyPFgsIFksIFo+Jik7CiAKICAgICBS
ZWZQdHIgY29weVJlZigpICYmID0gZGVsZXRlOwogICAgIFJlZlB0ciBjb3B5UmVmKCkgY29uc3Qg
JiBXQVJOX1VOVVNFRF9SRVRVUk4geyByZXR1cm4gUmVmUHRyKG1fcHRyKTsgfQpAQCAtMTAzLDgg
KzEwNiw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCB1bnNwZWNpZmllZEJvb2xUeXBl
SW5zdGFuY2UoKSBjb25zdCB7IH0KIAotICAgIGZyaWVuZCBSZWZQdHIgYWRvcHRSZWY8VCwgUHRy
VHJhaXRzPihUKik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4gZnJpZW5k
IGNsYXNzIFJlZlB0cjsKKyAgICBmcmllbmQgUmVmUHRyIGFkb3B0UmVmPFQsIFB0clRyYWl0cywg
UmVmRGVyZWZUcmFpdHM+KFQqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZ
LCB0eXBlbmFtZSBaPiBmcmllbmQgY2xhc3MgUmVmUHRyOwogCiAgICAgZW51bSBBZG9wdFRhZyB7
IEFkb3B0IH07CiAgICAgUmVmUHRyKFQqIHB0ciwgQWRvcHRUYWcpIDogbV9wdHIocHRyKSB7IH0K
QEAgLTExMiwxNDIgKzExNSwxNDIgQEAgcHJpdmF0ZToKICAgICB0eXBlbmFtZSBQdHJUcmFpdHM6
OlN0b3JhZ2VUeXBlIG1fcHRyOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgotaW5saW5lIFJlZlB0cjxULCBVPjo6UmVmUHRyKFJl
ZjxYLCBZPiYmIHJlZmVyZW5jZSkKK2lubGluZSBSZWZQdHI8VCwgVSwgVj46OlJlZlB0cihSZWY8
WCwgWT4mJiByZWZlcmVuY2UpCiAgICAgOiBtX3B0cigmcmVmZXJlbmNlLmxlYWtSZWYoKSkKIHsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBUKiBSZWZQdHI8
VCwgVT46OmxlYWtSZWYoKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgVj4KK2lubGluZSBUKiBSZWZQdHI8VCwgVSwgVj46OmxlYWtSZWYoKQogewogICAgIHJldHVy
biBVOjpleGNoYW5nZShtX3B0ciwgbnVsbHB0cik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+Ci1pbmxpbmUgUmVmUHRyPFQsIFU+JiBSZWZQdHI8VCwgVT46Om9wZXJhdG9y
PShjb25zdCBSZWZQdHImIG8pCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSBWPgoraW5saW5lIFJlZlB0cjxULCBVLCBWPiYgUmVmUHRyPFQsIFUsIFY+OjpvcGVyYXRv
cj0oY29uc3QgUmVmUHRyJiBvKQogewogICAgIFJlZlB0ciBwdHIgPSBvOwogICAgIHN3YXAocHRy
KTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgotaW5saW5lIFJlZlB0cjxULCBV
PiYgUmVmUHRyPFQsIFU+OjpvcGVyYXRvcj0oY29uc3QgUmVmUHRyPFgsIFk+JiBvKQordGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KK3RlbXBsYXRlPHR5cGVuYW1l
IFgsIHR5cGVuYW1lIFksIHR5cGVuYW1lIFo+CitpbmxpbmUgUmVmUHRyPFQsIFUsIFY+JiBSZWZQ
dHI8VCwgVSwgVj46Om9wZXJhdG9yPShjb25zdCBSZWZQdHI8WCwgWSwgWj4mIG8pCiB7CiAgICAg
UmVmUHRyIHB0ciA9IG87CiAgICAgc3dhcChwdHIpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLWlubGluZSBSZWZQdHI8VCwgVT4mIFJl
ZlB0cjxULCBVPjo6b3BlcmF0b3I9KFQqIG9wdHIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWPgoraW5saW5lIFJlZlB0cjxULCBVLCBWPiYgUmVmUHRyPFQsIFUs
IFY+OjpvcGVyYXRvcj0oVCogb3B0cikKIHsKICAgICBSZWZQdHIgcHRyID0gb3B0cjsKICAgICBz
d2FwKHB0cik7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPgotaW5saW5lIFJlZlB0cjxULCBVPiYgUmVmUHRyPFQsIFU+OjpvcGVyYXRvcj0o
c3RkOjpudWxscHRyX3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFt
ZSBWPgoraW5saW5lIFJlZlB0cjxULCBVLCBWPiYgUmVmUHRyPFQsIFUsIFY+OjpvcGVyYXRvcj0o
c3RkOjpudWxscHRyX3QpCiB7Ci0gICAgZGVyZWZJZk5vdE51bGwoVTo6ZXhjaGFuZ2UobV9wdHIs
IG51bGxwdHIpKTsKKyAgICBWOjpkZXJlZklmTm90TnVsbChVOjpleGNoYW5nZShtX3B0ciwgbnVs
bHB0cikpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KLWlubGluZSBSZWZQdHI8VCwgVT4mIFJlZlB0cjxULCBVPjo6b3BlcmF0b3I9KFJl
ZlB0ciYmIG8pCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgor
aW5saW5lIFJlZlB0cjxULCBVLCBWPiYgUmVmUHRyPFQsIFUsIFY+OjpvcGVyYXRvcj0oUmVmUHRy
JiYgbykKIHsKICAgICBSZWZQdHIgcHRyID0gV1RGTW92ZShvKTsKICAgICBzd2FwKHB0cik7CiAg
ICAgcmV0dXJuICp0aGlzOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgot
dGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KLWlubGluZSBSZWZQdHI8VCwgVT4mIFJl
ZlB0cjxULCBVPjo6b3BlcmF0b3I9KFJlZlB0cjxYLCBZPiYmIG8pCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgordGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5h
bWUgWSwgdHlwZW5hbWUgWj4KK2lubGluZSBSZWZQdHI8VCwgVSwgVj4mIFJlZlB0cjxULCBVLCBW
Pjo6b3BlcmF0b3I9KFJlZlB0cjxYLCBZLCBaPiYmIG8pCiB7CiAgICAgUmVmUHRyIHB0ciA9IFdU
Rk1vdmUobyk7CiAgICAgc3dhcChwdHIpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVj4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFYsIHR5cGVuYW1lIFc+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotaW5saW5lIFJlZlB0cjxULCBW
PiYgUmVmUHRyPFQsIFY+OjpvcGVyYXRvcj0oUmVmPFU+JiYgcmVmZXJlbmNlKQoraW5saW5lIFJl
ZlB0cjxULCBWLCBXPiYgUmVmUHRyPFQsIFYsIFc+OjpvcGVyYXRvcj0oUmVmPFU+JiYgcmVmZXJl
bmNlKQogewogICAgIFJlZlB0ciBwdHIgPSBXVEZNb3ZlKHJlZmVyZW5jZSk7CiAgICAgc3dhcChw
dHIpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgVCwgdHlwZW5hbWUg
VT4KLXRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+Ci1pbmxpbmUgdm9pZCBSZWZQdHI8
VCwgVT46OnN3YXAoUmVmUHRyPFgsIFk+JiBvKQordGVtcGxhdGU8Y2xhc3MgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgVj4KK3RlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFksIHR5cGVuYW1l
IFo+CitpbmxpbmUgdm9pZCBSZWZQdHI8VCwgVSwgVj46OnN3YXAoUmVmUHRyPFgsIFksIFo+JiBv
KQogewogICAgIFU6OnN3YXAobV9wdHIsIG8ubV9wdHIpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZLCB0eXBlbmFtZSA9IHN0ZDo6
ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2FtZTxVLCBEdW1iUHRyVHJhaXRzPFQ+Pjo6dmFsdWUgfHwg
IXN0ZDo6aXNfc2FtZTxZLCBEdW1iUHRyVHJhaXRzPFg+Pjo6dmFsdWU+PgotaW5saW5lIHZvaWQg
c3dhcChSZWZQdHI8VCwgVT4mIGEsIFJlZlB0cjxYLCBZPiYgYikKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFgsIHR5cGVuYW1lIFksIHR5cGVu
YW1lIFosIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDwhc3RkOjppc19zYW1lPFUsIER1bWJQ
dHJUcmFpdHM8VD4+Ojp2YWx1ZSB8fCAhc3RkOjppc19zYW1lPFksIER1bWJQdHJUcmFpdHM8WD4+
Ojp2YWx1ZT4+CitpbmxpbmUgdm9pZCBzd2FwKFJlZlB0cjxULCBVLCBWPiYgYSwgUmVmUHRyPFgs
IFksIFo+JiBiKQogewogICAgIGEuc3dhcChiKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KLWlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgUmVmUHRyPFQsIFU+JiBhLCBjb25zdCBSZWZQdHI8WCwgWT4mIGIpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBYLCB0eXBlbmFt
ZSBZLCB0eXBlbmFtZSBaPgoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWZQdHI8VCwg
VSwgVj4mIGEsIGNvbnN0IFJlZlB0cjxYLCBZLCBaPiYgYikKIHsgCiAgICAgcmV0dXJuIGEuZ2V0
KCkgPT0gYi5nZXQoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgWD4KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVmUHRyPFQsIFU+JiBhLCBY
KiBiKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5h
bWUgWD4KK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVmUHRyPFQsIFUsIFY+JiBhLCBY
KiBiKQogeyAKICAgICByZXR1cm4gYS5nZXQoKSA9PSBiOyAKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KLWlubGluZSBib29sIG9wZXJhdG9yPT0oVCog
YSwgY29uc3QgUmVmUHRyPFgsIFk+JiBiKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
WCwgdHlwZW5hbWUgWSwgdHlwZW5hbWUgWj4KK2lubGluZSBib29sIG9wZXJhdG9yPT0oVCogYSwg
Y29uc3QgUmVmUHRyPFgsIFksIFo+JiBiKQogewogICAgIHJldHVybiBhID09IGIuZ2V0KCk7IAog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBYLCB0eXBlbmFt
ZSBZPgotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWZQdHI8VCwgVT4mIGEsIGNvbnN0
IFJlZlB0cjxYLCBZPiYgYikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFYsIHR5cGVuYW1lIFgsIHR5cGVuYW1lIFksIHR5cGVuYW1lIFo+CitpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFJlZlB0cjxULCBVLCBWPiYgYSwgY29uc3QgUmVmUHRyPFgsIFksIFo+
JiBiKQogeyAKICAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOyAKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgWD4KLWlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgUmVmUHRyPFQsIFU+JiBhLCBYKiBiKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgWD4KK2lubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgUmVmUHRyPFQsIFUsIFY+JiBhLCBYKiBiKQogewogICAgIHJldHVybiBhLmdldCgpICE9
IGI7IAogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgot
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25zdCBSZWZQdHI8WCwgWT4mIGIpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZLCB0eXBlbmFtZSBaPgoraW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25zdCBSZWZQdHI8WCwgWSwgWj4mIGIpCiB7IAog
ICAgIHJldHVybiBhICE9IGIuZ2V0KCk7IAogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVID0gRHVtYlB0clRyYWl0czxUPiwgdHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KLWlubGlu
ZSBSZWZQdHI8VCwgVT4gc3RhdGljX3BvaW50ZXJfY2FzdChjb25zdCBSZWZQdHI8WCwgWT4mIHAp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVID0gRHVtYlB0clRyYWl0czxUPiwgdHlw
ZW5hbWUgViA9IERlZmF1bHRSZWZEZXJlZlRyYWl0czxUPiwgdHlwZW5hbWUgWCwgdHlwZW5hbWUg
WSwgdHlwZW5hbWUgWj4KK2lubGluZSBSZWZQdHI8VCwgVSwgVj4gc3RhdGljX3BvaW50ZXJfY2Fz
dChjb25zdCBSZWZQdHI8WCwgWSwgWj4mIHApCiB7IAotICAgIHJldHVybiBSZWZQdHI8VCwgVT4o
c3RhdGljX2Nhc3Q8VCo+KHAuZ2V0KCkpKTsKKyAgICByZXR1cm4gUmVmUHRyPFQsIFUsIFY+KHN0
YXRpY19jYXN0PFQqPihwLmdldCgpKSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPgotc3RydWN0IElzU21hcnRQdHI8UmVmUHRyPFQsIFU+PiB7Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KK3N0cnVjdCBJc1NtYXJ0UHRyPFJlZlB0
cjxULCBVLCBWPj4gewogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1ZSA9IHRydWU7CiB9
OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIFJlZlB0cjxULCBV
PiBhZG9wdFJlZihUKiBwKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgVj4KK2lubGluZSBSZWZQdHI8VCwgVSwgVj4gYWRvcHRSZWYoVCogcCkKIHsKICAgICBhZG9w
dGVkKHApOwotICAgIHJldHVybiBSZWZQdHI8VCwgVT4ocCwgUmVmUHRyPFQsIFU+OjpBZG9wdCk7
CisgICAgcmV0dXJuIFJlZlB0cjxULCBVLCBWPihwLCBSZWZQdHI8VCwgVSwgVj46OkFkb3B0KTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFJlZlB0cjxUPiBtYWtlUmVmUHRyKFQq
IHBvaW50ZXIpCkBAIC0yNjAsMTQgKzI2MywxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgUmVmUHRyPFQ+IG1ha2VSZWZQdHIoVCYgcmVmZXJlbmNlKQogICAgIHJldHVybiAmcmVmZXJl
bmNlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5
cGUsIHR5cGVuYW1lIFB0clRyYWl0cz4KLWlubGluZSBib29sIGlzKFJlZlB0cjxBcmdUeXBlLCBQ
dHJUcmFpdHM+JiBzb3VyY2UpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVu
YW1lIEFyZ1R5cGUsIHR5cGVuYW1lIFB0clRyYWl0cywgdHlwZW5hbWUgUmVmRGVyZWZUcmFpdHM+
CitpbmxpbmUgYm9vbCBpcyhSZWZQdHI8QXJnVHlwZSwgUHRyVHJhaXRzLCBSZWZEZXJlZlRyYWl0
cz4mIHNvdXJjZSkKIHsKICAgICByZXR1cm4gaXM8RXhwZWN0ZWRUeXBlPihzb3VyY2UuZ2V0KCkp
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5cGUs
IHR5cGVuYW1lIFB0clRyYWl0cz4KLWlubGluZSBib29sIGlzKGNvbnN0IFJlZlB0cjxBcmdUeXBl
LCBQdHJUcmFpdHM+JiBzb3VyY2UpCit0ZW1wbGF0ZTx0eXBlbmFtZSBFeHBlY3RlZFR5cGUsIHR5
cGVuYW1lIEFyZ1R5cGUsIHR5cGVuYW1lIFB0clRyYWl0cywgdHlwZW5hbWUgUmVmRGVyZWZUcmFp
dHM+CitpbmxpbmUgYm9vbCBpcyhjb25zdCBSZWZQdHI8QXJnVHlwZSwgUHRyVHJhaXRzLCBSZWZE
ZXJlZlRyYWl0cz4mIHNvdXJjZSkKIHsKICAgICByZXR1cm4gaXM8RXhwZWN0ZWRUeXBlPihzb3Vy
Y2UuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IDQ0MjQyNjQxMjgwODZlMWYxOTY4
MTdhYzIxODVhOTQxOGRkY2VkMDEuLmJhMGEyNWQ2YWVjMjBkYTEyOTI5ZjBiMDQ4N2ViOWYxMWUx
ZjUxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTU4MCwyMiArNTgwLDEzIEBAIGJvb2wgQXVk
aW9CdWZmZXJTb3VyY2VOb2RlOjpwcm9wYWdhdGVzU2lsZW5jZSgpIGNvbnN0CiAKIHZvaWQgQXVk
aW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKFBhbm5lck5vZGVCYXNlKiBwYW5uZXJO
b2RlKQogewotICAgIGlmIChtX3Bhbm5lck5vZGUgIT0gcGFubmVyTm9kZSAmJiAhaGFzRmluaXNo
ZWQoKSkgewotICAgICAgICBpZiAocGFubmVyTm9kZSkKLSAgICAgICAgICAgIHBhbm5lck5vZGUt
PnJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKLSAgICAgICAgaWYgKG1fcGFubmVy
Tm9kZSkKLSAgICAgICAgICAgIG1fcGFubmVyTm9kZS0+ZGVyZWYoQXVkaW9Ob2RlOjpSZWZUeXBl
Q29ubmVjdGlvbik7Ci0KKyAgICBpZiAobV9wYW5uZXJOb2RlICE9IHBhbm5lck5vZGUgJiYgIWhh
c0ZpbmlzaGVkKCkpCiAgICAgICAgIG1fcGFubmVyTm9kZSA9IHBhbm5lck5vZGU7Ci0gICAgfQog
fQogCiB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y2xlYXJQYW5uZXJOb2RlKCkKIHsKLSAg
ICBpZiAobV9wYW5uZXJOb2RlKSB7Ci0gICAgICAgIG1fcGFubmVyTm9kZS0+ZGVyZWYoQXVkaW9O
b2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7Ci0gICAgICAgIG1fcGFubmVyTm9kZSA9IG51bGxwdHI7
Ci0gICAgfQorICAgIG1fcGFubmVyTm9kZSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlOjpmaW5pc2goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKaW5kZXggYmY1Y2VkNmYzYjI0ZmRm
MmM1M2E5YTFlZGEyNjMyMDFlODdjZjY0Yy4uMTdhNzAwNjMwNjUxNWRmMWY0ZTQ5ZWZkNTE3N2Nl
ZmVkNzMzMzQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCkBAIC0xNDEsOCArMTQxLDggQEAgcHJpdmF0ZToK
ICAgICBkb3VibGUgdG90YWxQaXRjaFJhdGUoKTsKIAogICAgIC8vIFdlIG9wdGlvbmFsbHkga2Vl
cCB0cmFjayBvZiBhIHBhbm5lciBub2RlIHdoaWNoIGhhcyBhIGRvcHBsZXIgc2hpZnQgdGhhdCBp
cyBpbmNvcnBvcmF0ZWQgaW50bwotICAgIC8vIHRoZSBwaXRjaCByYXRlLiBXZSBtYW51YWxseSBt
YW5hZ2UgcmVmLWNvdW50aW5nIGJlY2F1c2Ugd2Ugd2FudCB0byB1c2UgUmVmVHlwZUNvbm5lY3Rp
b24uCi0gICAgUGFubmVyTm9kZUJhc2UqIG1fcGFubmVyTm9kZSB7IG51bGxwdHIgfTsKKyAgICAv
LyB0aGUgcGl0Y2ggcmF0ZS4KKyAgICBBdWRpb0Nvbm5lY3Rpb25SZWZQdHI8UGFubmVyTm9kZUJh
c2U+IG1fcGFubmVyTm9kZTsKIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHByb2Nlc3MoKSB3
aXRoIHNldEJ1ZmZlcigpIHdoaWNoIGNhbiBjYXVzZSBkeW5hbWljIGNoYW5uZWwgY291bnQgY2hh
bmdlcy4KICAgICBtdXRhYmxlIExvY2sgbV9wcm9jZXNzTXV0ZXg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKaW5kZXggYjFjYWRhMDc3MjA2MDU2ZGFi
NzFkMjQ2YjZjZmFjYjQwOThjZTM0ZS4uMTBlNWYxMzYzOWFlNjg1YWUxYmNkODQ2MzIyNmI0OGQw
NDE0Y2RkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
LmNwcApAQCAtNTQ4LDcgKzU0OCw3IEBAIHZvaWQgQXVkaW9Ob2RlOjplbmFibGVPdXRwdXRzSWZO
ZWNlc3NhcnkoKQogdm9pZCBBdWRpb05vZGU6OmRpc2FibGVPdXRwdXRzSWZOZWNlc3NhcnkoKQog
ewogICAgIC8vIERpc2FibGUgb3V0cHV0cyBpZiBhcHByb3ByaWF0ZS4gV2UgZG8gdGhpcyBpZiB0
aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGlzIDAgb3IgMS4gVGhlIGNhc2UKLSAgICAvLyBvZiAw
IGlzIGZyb20gZmluaXNoRGVyZWYoKSB3aGVyZSB0aGVyZSBhcmUgbm8gY29ubmVjdGlvbnMgbGVm
dC4gVGhlIGNhc2Ugb2YgMSBpcyBmcm9tCisgICAgLy8gb2YgMCBpcyBmcm9tIGRlY3JlbWVudENv
bm5lY3Rpb25Db3VudFdpdGhMb2NrKCkgd2hlcmUgdGhlcmUgYXJlIG5vIGNvbm5lY3Rpb25zIGxl
ZnQuIFRoZSBjYXNlIG9mIDEgaXMgZnJvbQogICAgIC8vIEF1ZGlvTm9kZUlucHV0OjpkaXNhYmxl
KCkgd2hlcmUgd2Ugd2FudCB0byBkaXNhYmxlIG91dHB1dHMgd2hlbiB0aGVyZSdzIG9ubHkgb25l
IGNvbm5lY3Rpb24KICAgICAvLyBsZWZ0IGJlY2F1c2Ugd2UncmUgcmVhZHkgdG8gZ28gYXdheSwg
YnV0IGNhbid0IHF1aXRlIHlldC4KICAgICBpZiAobV9jb25uZWN0aW9uUmVmQ291bnQgPD0gMSAm
JiAhbV9pc0Rpc2FibGVkKSB7CkBAIC01NzQsMzEgKzU3NCwyMSBAQCB2b2lkIEF1ZGlvTm9kZTo6
ZGlzYWJsZU91dHB1dHMoKQogICAgICAgICBvdXRwdXQtPmRpc2FibGUoKTsKIH0KIAotdm9pZCBB
dWRpb05vZGU6OnJlZihSZWZUeXBlIHJlZlR5cGUpCit2b2lkIEF1ZGlvTm9kZTo6aW5jcmVtZW50
Q29ubmVjdGlvbkNvdW50KCkKIHsKLSAgICBzd2l0Y2ggKHJlZlR5cGUpIHsKLSAgICBjYXNlIFJl
ZlR5cGVOb3JtYWw6Ci0gICAgICAgICsrbV9ub3JtYWxSZWZDb3VudDsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBSZWZUeXBlQ29ubmVjdGlvbjoKLSAgICAgICAgKyttX2Nvbm5lY3Rpb25SZWZD
b3VudDsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgfQotCi0jaWYgREVCVUdfQVVESU9OT0RFX1JFRkVSRU5DRVMKLSAgICBm
cHJpbnRmKHN0ZGVyciwgIiVwOiAlZDogQXVkaW9Ob2RlOjpyZWYoJWQpICVkICVkXG4iLCB0aGlz
LCBub2RlVHlwZSgpLCByZWZUeXBlLCBtX25vcm1hbFJlZkNvdW50LCBtX2Nvbm5lY3Rpb25SZWZD
b3VudCk7Ci0jZW5kaWYKKyAgICArK21fY29ubmVjdGlvblJlZkNvdW50OwogCi0gICAgLy8gU2Vl
IHRoZSBkaXNhYmxpbmcgY29kZSBpbiBmaW5pc2hEZXJlZigpIGJlbG93LiBUaGlzIGhhbmRsZXMg
dGhlIGNhc2Ugd2hlcmUgYSBub2RlCisgICAgLy8gU2VlIHRoZSBkaXNhYmxpbmcgY29kZSBpbiBk
ZWNyZW1lbnRDb25uZWN0aW9uQ291bnRXaXRoTG9jaygpIGJlbG93LiBUaGlzIGhhbmRsZXMgdGhl
IGNhc2Ugd2hlcmUgYSBub2RlCiAgICAgLy8gaXMgYmVpbmcgcmUtY29ubmVjdGVkIGFmdGVyIGJl
aW5nIHVzZWQgYXQgbGVhc3Qgb25jZSBhbmQgZGlzY29ubmVjdGVkLgogICAgIC8vIEluIHRoaXMg
Y2FzZSwgd2UgbmVlZCB0byByZS1lbmFibGUuCi0gICAgaWYgKHJlZlR5cGUgPT0gUmVmVHlwZUNv
bm5lY3Rpb24pCi0gICAgICAgIGVuYWJsZU91dHB1dHNJZk5lY2Vzc2FyeSgpOworICAgIGVuYWJs
ZU91dHB1dHNJZk5lY2Vzc2FyeSgpOworCisjaWYgREVCVUdfQVVESU9OT0RFX1JFRkVSRU5DRVMK
KyAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiAlZDogQXVkaW9Ob2RlOjppbmNyZW1lbnRDb25uZWN0
aW9uQ291bnQoKSAlZCAlZFxuIiwgdGhpcywgbm9kZVR5cGUoKSwgbV9ub3JtYWxSZWZDb3VudCwg
bV9jb25uZWN0aW9uUmVmQ291bnQpOworI2VuZGlmCiB9CiAKLXZvaWQgQXVkaW9Ob2RlOjpkZXJl
ZihSZWZUeXBlIHJlZlR5cGUpCit2b2lkIEF1ZGlvTm9kZTo6ZGVjcmVtZW50Q29ubmVjdGlvbkNv
dW50KCkKIHsKICAgICAvLyBUaGUgYWN0dWFsbHkgd29yayBmb3IgZGVyZWYgaGFwcGVucyBjb21w
bGV0ZWx5IHdpdGhpbiB0aGUgYXVkaW8gY29udGV4dCdzIGdyYXBoIGxvY2suCiAgICAgLy8gSW4g
dGhlIGNhc2Ugb2YgdGhlIGF1ZGlvIHRocmVhZCwgd2UgbXVzdCB1c2UgYSB0cnlMb2NrIHRvIGF2
b2lkIGdsaXRjaGVzLgpAQCAtNjE1LDE1ICs2MDUsNzQgQEAgdm9pZCBBdWRpb05vZGU6OmRlcmVm
KFJlZlR5cGUgcmVmVHlwZSkKIAogICAgIGlmIChoYXNMb2NrKSB7CiAgICAgICAgIC8vIFRoaXMg
aXMgd2hlcmUgdGhlIHJlYWwgZGVyZWYgd29yayBoYXBwZW5zLgotICAgICAgICBmaW5pc2hEZXJl
ZihyZWZUeXBlKTsKKyAgICAgICAgZGVjcmVtZW50Q29ubmVjdGlvbkNvdW50V2l0aExvY2soKTsK
IAogICAgICAgICBpZiAobXVzdFJlbGVhc2VMb2NrKQogICAgICAgICAgICAgY29udGV4dCgpLnVu
bG9jaygpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIHdlcmUgdW5hYmxlIHRvIGdldCB0
aGUgbG9jaywgc28gcHV0IHRoaXMgaW4gYSBsaXN0IHRvIGZpbmlzaCB1cCBsYXRlci4KICAgICAg
ICAgQVNTRVJUKGNvbnRleHQoKS5pc0F1ZGlvVGhyZWFkKCkpOwotICAgICAgICBBU1NFUlQocmVm
VHlwZSA9PSBSZWZUeXBlQ29ubmVjdGlvbik7Ci0gICAgICAgIGNvbnRleHQoKS5hZGREZWZlcnJl
ZEZpbmlzaERlcmVmKHRoaXMpOworICAgICAgICBjb250ZXh0KCkuYWRkRGVmZXJyZWREZWNyZW1l
bnRDb25uZWN0aW9uQ291bnQodGhpcyk7CisgICAgfQorCisgICAgLy8gT25jZSBBdWRpb0NvbnRl
eHQ6OnVuaW5pdGlhbGl6ZSgpIGlzIGNhbGxlZCB0aGVyZSdzIG5vIG1vcmUgY2hhbmNlcyBmb3Ig
ZGVsZXRlTWFya2VkTm9kZXMoKSB0byBnZXQgY2FsbGVkLCBzbyB3ZSBjYWxsIGhlcmUuCisgICAg
Ly8gV2UgY2FuJ3QgY2FsbCBpbiBBdWRpb0NvbnRleHQ6On5BdWRpb0NvbnRleHQoKSBzaW5jZSBp
dCB3aWxsIG5ldmVyIGJlIGNhbGxlZCBhcyBsb25nIGFzIGFueSBBdWRpb05vZGUgaXMgYWxpdmUK
KyAgICAvLyBiZWNhdXNlIEF1ZGlvTm9kZXMga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgY29udGV4
dC4KKyAgICBpZiAoY29udGV4dCgpLmlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKQorICAgICAgICBj
b250ZXh0KCkuZGVsZXRlTWFya2VkTm9kZXMoKTsKK30KKwordm9pZCBBdWRpb05vZGU6OmRlY3Jl
bWVudENvbm5lY3Rpb25Db3VudFdpdGhMb2NrKCkKK3sKKyAgICBBU1NFUlQoY29udGV4dCgpLmlz
R3JhcGhPd25lcigpKTsKKworICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25SZWZDb3VudCA+IDApOwor
ICAgIC0tbV9jb25uZWN0aW9uUmVmQ291bnQ7CisKKyNpZiBERUJVR19BVURJT05PREVfUkVGRVJF
TkNFUworICAgIGZwcmludGYoc3RkZXJyLCAiJXA6ICVkOiBBdWRpb05vZGU6OmRlY3JlbWVudENv
bm5lY3Rpb25Db3VudFdpdGhMb2NrKCkgJWQgJWRcbiIsIHRoaXMsIG5vZGVUeXBlKCksIG1fbm9y
bWFsUmVmQ291bnQsIG1fY29ubmVjdGlvblJlZkNvdW50KTsKKyNlbmRpZgorCisgICAgaWYgKCFt
X2Nvbm5lY3Rpb25SZWZDb3VudCAmJiBtX25vcm1hbFJlZkNvdW50KQorICAgICAgICBkaXNhYmxl
T3V0cHV0c0lmTmVjZXNzYXJ5KCk7CisKKyAgICBtYXJrTm9kZUZvckRlbGV0aW9uSWZOZWNlc3Nh
cnkoKTsKK30KKwordm9pZCBBdWRpb05vZGU6Om1hcmtOb2RlRm9yRGVsZXRpb25JZk5lY2Vzc2Fy
eSgpCit7CisgICAgQVNTRVJUKGNvbnRleHQoKS5pc0dyYXBoT3duZXIoKSk7CisKKyAgICBpZiAo
bV9jb25uZWN0aW9uUmVmQ291bnQgfHwgbV9ub3JtYWxSZWZDb3VudCB8fCBtX2lzTWFya2VkRm9y
RGVsZXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEFsbCByZWZlcmVuY2VzIGFyZSBn
b25lIC0gd2UgbmVlZCB0byBnbyBhd2F5LgorICAgIGZvciAoYXV0byYgb3V0cHV0IDogbV9vdXRw
dXRzKQorICAgICAgICBvdXRwdXQtPmRpc2Nvbm5lY3RBbGwoKTsgLy8gVGhpcyB3aWxsIGRlcmVm
KCkgbm9kZXMgd2UncmUgY29ubmVjdGVkIHRvLgorCisgICAgLy8gTWFyayBmb3IgZGVsZXRpb24g
YXQgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gb3Igd2hlbiBjb250ZXh0IHNodXRzIGRvd24u
CisgICAgY29udGV4dCgpLm1hcmtGb3JEZWxldGlvbigqdGhpcyk7CisgICAgbV9pc01hcmtlZEZv
ckRlbGV0aW9uID0gdHJ1ZTsKKyAgICBkaWRCZWNvbWVNYXJrZWRGb3JEZWxldGlvbigpOworfQor
Cit2b2lkIEF1ZGlvTm9kZTo6cmVmKCkKK3sKKyAgICArK21fbm9ybWFsUmVmQ291bnQ7CisKKyNp
ZiBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUworICAgIGZwcmludGYoc3RkZXJyLCAiJXA6ICVk
OiBBdWRpb05vZGU6OnJlZigpICVkICVkXG4iLCB0aGlzLCBub2RlVHlwZSgpLCBtX25vcm1hbFJl
ZkNvdW50LCBtX2Nvbm5lY3Rpb25SZWZDb3VudCk7CisjZW5kaWYKK30KKwordm9pZCBBdWRpb05v
ZGU6OmRlcmVmKCkKK3sKKyAgICBBU1NFUlQoIWNvbnRleHQoKS5pc0F1ZGlvVGhyZWFkKCkpOwor
CisgICAgeworICAgICAgICBCYXNlQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250
ZXh0KCkpOworICAgICAgICAvLyBUaGlzIGlzIHdoZXJlIHRoZSByZWFsIGRlcmVmIHdvcmsgaGFw
cGVucy4KKyAgICAgICAgZGVyZWZXaXRoTG9jaygpOwogICAgIH0KIAogICAgIC8vIE9uY2UgQXVk
aW9Db250ZXh0Ojp1bmluaXRpYWxpemUoKSBpcyBjYWxsZWQgdGhlcmUncyBubyBtb3JlIGNoYW5j
ZXMgZm9yIGRlbGV0ZU1hcmtlZE5vZGVzKCkgdG8gZ2V0IGNhbGxlZCwgc28gd2UgY2FsbCBoZXJl
LgpAQCAtNjQwLDQyICs2ODksMTggQEAgVmFyaWFudDxSZWZQdHI8QmFzZUF1ZGlvQ29udGV4dD4s
IFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+PiBBdWRpb05vZGU6OmNvbnRleHQKICAgICByZXR1
cm4gbWFrZVJlZlB0cihtX2NvbnRleHQuZ2V0KCkpOwogfQogCi12b2lkIEF1ZGlvTm9kZTo6Zmlu
aXNoRGVyZWYoUmVmVHlwZSByZWZUeXBlKQordm9pZCBBdWRpb05vZGU6OmRlcmVmV2l0aExvY2so
KQogewogICAgIEFTU0VSVChjb250ZXh0KCkuaXNHcmFwaE93bmVyKCkpOwogICAgIAotICAgIHN3
aXRjaCAocmVmVHlwZSkgewotICAgIGNhc2UgUmVmVHlwZU5vcm1hbDoKLSAgICAgICAgQVNTRVJU
KG1fbm9ybWFsUmVmQ291bnQgPiAwKTsKLSAgICAgICAgLS1tX25vcm1hbFJlZkNvdW50OwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFJlZlR5cGVDb25uZWN0aW9uOgotICAgICAgICBBU1NFUlQo
bV9jb25uZWN0aW9uUmVmQ291bnQgPiAwKTsKLSAgICAgICAgLS1tX2Nvbm5lY3Rpb25SZWZDb3Vu
dDsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgfQorICAgIEFTU0VSVChtX25vcm1hbFJlZkNvdW50ID4gMCk7CisgICAgLS1t
X25vcm1hbFJlZkNvdW50OwogICAgIAogI2lmIERFQlVHX0FVRElPTk9ERV9SRUZFUkVOQ0VTCi0g
ICAgZnByaW50ZihzdGRlcnIsICIlcDogJWQ6IEF1ZGlvTm9kZTo6ZGVyZWYoJWQpICVkICVkXG4i
LCB0aGlzLCBub2RlVHlwZSgpLCByZWZUeXBlLCBtX25vcm1hbFJlZkNvdW50LCBtX2Nvbm5lY3Rp
b25SZWZDb3VudCk7CisgICAgZnByaW50ZihzdGRlcnIsICIlcDogJWQ6IEF1ZGlvTm9kZTo6ZGVy
ZWYoKSAlZCAlZFxuIiwgdGhpcywgbm9kZVR5cGUoKSwgbV9ub3JtYWxSZWZDb3VudCwgbV9jb25u
ZWN0aW9uUmVmQ291bnQpOwogI2VuZGlmCiAKLSAgICBpZiAoIW1fY29ubmVjdGlvblJlZkNvdW50
KSB7Ci0gICAgICAgIGlmICghbV9ub3JtYWxSZWZDb3VudCkgewotICAgICAgICAgICAgaWYgKCFt
X2lzTWFya2VkRm9yRGVsZXRpb24pIHsKLSAgICAgICAgICAgICAgICAvLyBBbGwgcmVmZXJlbmNl
cyBhcmUgZ29uZSAtIHdlIG5lZWQgdG8gZ28gYXdheS4KLSAgICAgICAgICAgICAgICBmb3IgKGF1
dG8mIG91dHB1dCA6IG1fb3V0cHV0cykKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0LT5kaXNj
b25uZWN0QWxsKCk7IC8vIFRoaXMgd2lsbCBkZXJlZigpIG5vZGVzIHdlJ3JlIGNvbm5lY3RlZCB0
by4KLQotICAgICAgICAgICAgICAgIC8vIE1hcmsgZm9yIGRlbGV0aW9uIGF0IGVuZCBvZiBlYWNo
IHJlbmRlciBxdWFudHVtIG9yIHdoZW4gY29udGV4dCBzaHV0cyBkb3duLgotICAgICAgICAgICAg
ICAgIGNvbnRleHQoKS5tYXJrRm9yRGVsZXRpb24oKnRoaXMpOwotICAgICAgICAgICAgICAgIG1f
aXNNYXJrZWRGb3JEZWxldGlvbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZGlkQmVjb21lTWFy
a2VkRm9yRGVsZXRpb24oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChyZWZU
eXBlID09IFJlZlR5cGVDb25uZWN0aW9uKQotICAgICAgICAgICAgZGlzYWJsZU91dHB1dHNJZk5l
Y2Vzc2FyeSgpOwotICAgIH0KKyAgICBtYXJrTm9kZUZvckRlbGV0aW9uSWZOZWNlc3NhcnkoKTsK
IH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpoYW5kbGVBdWRpb05vZGVPcHRpb25z
KGNvbnN0IEF1ZGlvTm9kZU9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IERlZmF1bHRBdWRpb05vZGVP
cHRpb25zJiBkZWZhdWx0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Tm9kZS5oCmluZGV4IDg0YzUwZDJjZTBkODNiNjMwMDE3N2MyNjE3YzRjMzkyY2ZjZjU3MjMuLjRm
YmY0YjA5NzQ3YzcwZDYyM2VhNDYzYmEzYmFhNTE1ZjRmOGRmNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtOTYsMTcgKzk2LDE0IEBAIHB1Ymxp
YzoKICAgICBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZVR5cGU7IH0K
ICAgICB2b2lkIHNldE5vZGVUeXBlKE5vZGVUeXBlKTsKIAotICAgIC8vIFdlIGhhbmRsZSBvdXIg
b3duIHJlZi1jb3VudGluZyBiZWNhdXNlIG9mIHRoZSB0aHJlYWRpbmcgaXNzdWVzIGFuZCBzdWJ0
bGUgbmF0dXJlIG9mCi0gICAgLy8gaG93IEF1ZGlvTm9kZXMgY2FuIGNvbnRpbnVlIHByb2Nlc3Np
bmcgKHBsYXlpbmcgb25lLXNob3Qgc291bmQpIGFmdGVyIHRoZXJlIGFyZSBubyBtb3JlCi0gICAg
Ly8gSmF2YVNjcmlwdCByZWZlcmVuY2VzIHRvIHRoZSBvYmplY3QuCi0gICAgZW51bSBSZWZUeXBl
IHsgUmVmVHlwZU5vcm1hbCwgUmVmVHlwZUNvbm5lY3Rpb24gfTsKLQogICAgIC8vIENhbiBiZSBj
YWxsZWQgZnJvbSBtYWluIHRocmVhZCBvciBjb250ZXh0J3MgYXVkaW8gdGhyZWFkLgotICAgIHZv
aWQgcmVmKFJlZlR5cGUgcmVmVHlwZSA9IFJlZlR5cGVOb3JtYWwpOwotICAgIHZvaWQgZGVyZWYo
UmVmVHlwZSByZWZUeXBlID0gUmVmVHlwZU5vcm1hbCk7CisgICAgdm9pZCByZWYoKTsKKyAgICB2
b2lkIGRlcmVmKCk7CisgICAgdm9pZCBpbmNyZW1lbnRDb25uZWN0aW9uQ291bnQoKTsKKyAgICB2
b2lkIGRlY3JlbWVudENvbm5lY3Rpb25Db3VudCgpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBm
cm9tIG1haW4gdGhyZWFkIG9yIGNvbnRleHQncyBhdWRpbyB0aHJlYWQuICBJdCBtdXN0IGJlIGNh
bGxlZCB3aGlsZSB0aGUgY29udGV4dCdzIGdyYXBoIGxvY2sgaXMgaGVsZC4KLSAgICB2b2lkIGZp
bmlzaERlcmVmKFJlZlR5cGUgcmVmVHlwZSk7CisgICAgdm9pZCBkZWNyZW1lbnRDb25uZWN0aW9u
Q291bnRXaXRoTG9jaygpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVNYXJrZWRGb3JEZWxl
dGlvbigpIHsgfQogCiAgICAgLy8gVGhlIEF1ZGlvTm9kZUlucHV0KHMpIChpZiBhbnkpIHdpbGwg
YWxyZWFkeSBoYXZlIHRoZWlyIGlucHV0IGRhdGEgYXZhaWxhYmxlIHdoZW4gcHJvY2VzcygpIGlz
IGNhbGxlZC4KQEAgLTIwMiw2ICsxOTksOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRJbnB1
dChzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Ob2RlSW5wdXQ+KTsKICAgICB2b2lkIGFkZE91dHB1dChz
dGQ6OnVuaXF1ZV9wdHI8QXVkaW9Ob2RlT3V0cHV0Pik7CiAKKyAgICB2b2lkIG1hcmtOb2RlRm9y
RGVsZXRpb25JZk5lY2Vzc2FyeSgpOworICAgIHZvaWQgZGVyZWZXaXRoTG9jaygpOworCiAgICAg
c3RydWN0IERlZmF1bHRBdWRpb05vZGVPcHRpb25zIHsKICAgICAgICAgdW5zaWduZWQgY2hhbm5l
bENvdW50OwogICAgICAgICBDaGFubmVsQ291bnRNb2RlIGNoYW5uZWxDb3VudE1vZGU7CkBAIC0y
NzAsNiArMjcwLDIzIEBAIHByaXZhdGU6CiAgICAgQ2hhbm5lbEludGVycHJldGF0aW9uIG1fY2hh
bm5lbEludGVycHJldGF0aW9uIHsgQ2hhbm5lbEludGVycHJldGF0aW9uOjpTcGVha2VycyB9Owog
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEF1ZGlvTm9kZUNvbm5lY3Rpb25SZWZE
ZXJlZlRyYWl0cyB7CisgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCByZWZJZk5vdE51bGwo
VCogcHRyKQorICAgIHsKKyAgICAgICAgaWYgKExJS0VMWShwdHIgIT0gbnVsbHB0cikpCisgICAg
ICAgICAgICBwdHItPmluY3JlbWVudENvbm5lY3Rpb25Db3VudCgpOworICAgIH0KKworICAgIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZGVyZWZJZk5vdE51bGwoVCogcHRyKQorICAgIHsKKyAg
ICAgICAgaWYgKExJS0VMWShwdHIgIT0gbnVsbHB0cikpCisgICAgICAgICAgICBwdHItPmRlY3Jl
bWVudENvbm5lY3Rpb25Db3VudCgpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
Cit1c2luZyBBdWRpb0Nvbm5lY3Rpb25SZWZQdHIgPSBSZWZQdHI8VCwgRHVtYlB0clRyYWl0czxU
PiwgQXVkaW9Ob2RlQ29ubmVjdGlvblJlZkRlcmVmVHJhaXRzPFQ+PjsKKwogU3RyaW5nIGNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKEF1ZGlvTm9kZTo6Tm9kZVR5cGUpOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZUlucHV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Ob2RlSW5wdXQuY3BwCmluZGV4IGVjMjcyZWY0YjkzZTYwZDhjMTA2YjM4MjJkZGYyYmQ2NDcy
NDEzZmEuLjgwMzQ5NmNjMWRjYjJhYTVkMGNiNDAzNzRkYTI1ZmU3MGVjYTNiZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQuY3BwCkBA
IC01OSw5ICs1OSw2IEBAIHZvaWQgQXVkaW9Ob2RlSW5wdXQ6OmNvbm5lY3QoQXVkaW9Ob2RlT3V0
cHV0KiBvdXRwdXQpCiAKICAgICBvdXRwdXQtPmFkZElucHV0KHRoaXMpOwogICAgIGNoYW5nZWRP
dXRwdXRzKCk7Ci0KLSAgICAvLyBTb21ib2R5IGhhcyBqdXN0IGNvbm5lY3RlZCB0byB1cywgc28g
Y291bnQgaXQgYXMgYSByZWZlcmVuY2UuCi0gICAgbm9kZSgpLT5yZWYoQXVkaW9Ob2RlOjpSZWZU
eXBlQ29ubmVjdGlvbik7CiB9CiAKIHZvaWQgQXVkaW9Ob2RlSW5wdXQ6OmRpc2Nvbm5lY3QoQXVk
aW9Ob2RlT3V0cHV0KiBvdXRwdXQpCkBAIC03NSwxNSArNzIsMTMgQEAgdm9pZCBBdWRpb05vZGVJ
bnB1dDo6ZGlzY29ubmVjdChBdWRpb05vZGVPdXRwdXQqIG91dHB1dCkKICAgICAvLyBGaXJzdCB0
cnkgdG8gZGlzY29ubmVjdCBmcm9tICJhY3RpdmUiIGNvbm5lY3Rpb25zLgogICAgIGlmIChtX291
dHB1dHMucmVtb3ZlKG91dHB1dCkpIHsKICAgICAgICAgY2hhbmdlZE91dHB1dHMoKTsKLSAgICAg
ICAgb3V0cHV0LT5yZW1vdmVJbnB1dCh0aGlzKTsKLSAgICAgICAgbm9kZSgpLT5kZXJlZihBdWRp
b05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsgLy8gTm90ZTogaXQncyBpbXBvcnRhbnQgdG8gcmV0
dXJuIGltbWVkaWF0ZWx5IGFmdGVyIGFsbCBkZXJlZigpIGNhbGxzIHNpbmNlIHRoZSBub2RlIG1h
eSBiZSBkZWxldGVkLgorICAgICAgICBvdXRwdXQtPnJlbW92ZUlucHV0KHRoaXMpOyAvLyBOb3Rl
OiBpdCdzIGltcG9ydGFudCB0byByZXR1cm4gaW1tZWRpYXRlbHkgYWZ0ZXIgdGhpcyBzaW5jZSB0
aGUgbm9kZSBtYXkgYmUgZGVsZXRlZC4KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAg
ICAvLyBPdGhlcndpc2UsIHRyeSB0byBkaXNjb25uZWN0IGZyb20gZGlzYWJsZWQgY29ubmVjdGlv
bnMuCiAgICAgaWYgKG1fZGlzYWJsZWRPdXRwdXRzLnJlbW92ZShvdXRwdXQpKSB7Ci0gICAgICAg
IG91dHB1dC0+cmVtb3ZlSW5wdXQodGhpcyk7Ci0gICAgICAgIG5vZGUoKS0+ZGVyZWYoQXVkaW9O
b2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7IC8vIE5vdGU6IGl0J3MgaW1wb3J0YW50IHRvIHJldHVy
biBpbW1lZGlhdGVseSBhZnRlciBhbGwgZGVyZWYoKSBjYWxscyBzaW5jZSB0aGUgbm9kZSBtYXkg
YmUgZGVsZXRlZC4KKyAgICAgICAgb3V0cHV0LT5yZW1vdmVJbnB1dCh0aGlzKTsgLy8gTm90ZTog
aXQncyBpbXBvcnRhbnQgdG8gcmV0dXJuIGltbWVkaWF0ZWx5IGFmdGVyIHRoaXMgc2luY2UgdGhl
IG5vZGUgbWF5IGJlIGRlbGV0ZWQuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcAppbmRl
eCA2YjZkZTBiYzIzNTQ4ODJhY2U0MjYxMmQ1NTNjNzIyNzAzM2M4NzVjLi5iN2VlMmRmZGZjMmEz
YzFiNmM0YmUxZTlkYjFmYjA2YTgyY2I1NTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZv
aWQgQXVkaW9Ob2RlT3V0cHV0Ojpwcm9wYWdhdGVDaGFubmVsQ291bnQoKQogICAgIAogICAgIGlm
IChpc0NoYW5uZWxDb3VudEtub3duKCkpIHsKICAgICAgICAgLy8gQW5ub3VuY2UgdG8gYW55IG5v
ZGVzIHdlJ3JlIGNvbm5lY3RlZCB0byB0aGF0IHdlIGNoYW5nZWQgb3VyIGNoYW5uZWwgY291bnQg
Zm9yIGl0cyBpbnB1dC4KLSAgICAgICAgZm9yIChhdXRvJiBpbnB1dCA6IG1faW5wdXRzKSB7Cisg
ICAgICAgIGZvciAoYXV0byYgaW5wdXQgOiBtX2lucHV0cy5rZXlzKCkpIHsKICAgICAgICAgICAg
IEF1ZGlvTm9kZSogY29ubmVjdGlvbk5vZGUgPSBpbnB1dC0+bm9kZSgpOwogICAgICAgICAgICAg
Y29ubmVjdGlvbk5vZGUtPmNoZWNrTnVtYmVyT2ZDaGFubmVsc0ZvcklucHV0KGlucHV0KTsKICAg
ICAgICAgfQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgQXVkaW9Ob2RlT3V0cHV0OjphZGRJbnB1
dChBdWRpb05vZGVJbnB1dCogaW5wdXQpCiAgICAgaWYgKCFpbnB1dCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9pbnB1dHMuYWRkKGlucHV0KTsKKyAgICBtX2lucHV0cy5hZGQoaW5wdXQsIGlu
cHV0LT5ub2RlKCkpOwogfQogCiB2b2lkIEF1ZGlvTm9kZU91dHB1dDo6cmVtb3ZlSW5wdXQoQXVk
aW9Ob2RlSW5wdXQqIGlucHV0KQpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgQXVkaW9Ob2RlT3V0
cHV0OjpkaXNjb25uZWN0QWxsSW5wdXRzKCkKICAgICAKICAgICAvLyBBdWRpb05vZGVJbnB1dDo6
ZGlzY29ubmVjdCgpIGNoYW5nZXMgbV9pbnB1dHMgYnkgY2FsbGluZyByZW1vdmVJbnB1dCgpLgog
ICAgIHdoaWxlICghbV9pbnB1dHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEF1ZGlvTm9kZUlucHV0
KiBpbnB1dCA9ICptX2lucHV0cy5iZWdpbigpOworICAgICAgICBBdWRpb05vZGVJbnB1dCogaW5w
dXQgPSBtX2lucHV0cy5iZWdpbigpLT5rZXk7CiAgICAgICAgIGlucHV0LT5kaXNjb25uZWN0KHRo
aXMpOwogICAgIH0KIH0KQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIEF1ZGlvTm9kZU91dHB1dDo6
ZGlzYWJsZSgpCiAgICAgQVNTRVJUKGNvbnRleHQoKS5pc0dyYXBoT3duZXIoKSk7CiAKICAgICBp
ZiAobV9pc0VuYWJsZWQpIHsKLSAgICAgICAgZm9yIChhdXRvJiBpbnB1dCA6IG1faW5wdXRzKQor
ICAgICAgICBmb3IgKGF1dG8mIGlucHV0IDogbV9pbnB1dHMua2V5cygpKQogICAgICAgICAgICAg
aW5wdXQtPmRpc2FibGUodGhpcyk7CiAgICAgICAgIG1faXNFbmFibGVkID0gZmFsc2U7CiAgICAg
fQpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgQXVkaW9Ob2RlT3V0cHV0OjplbmFibGUoKQogICAg
IEFTU0VSVChjb250ZXh0KCkuaXNHcmFwaE93bmVyKCkpOwogCiAgICAgaWYgKCFtX2lzRW5hYmxl
ZCkgewotICAgICAgICBmb3IgKGF1dG8mIGlucHV0IDogbV9pbnB1dHMpCisgICAgICAgIGZvciAo
YXV0byYgaW5wdXQgOiBtX2lucHV0cy5rZXlzKCkpCiAgICAgICAgICAgICBpbnB1dC0+ZW5hYmxl
KHRoaXMpOwogICAgICAgICBtX2lzRW5hYmxlZCA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmgKaW5kZXggYjJiNzZl
OTE5OTYyNWFmZDAzZTY1Yzc3ZTJkNTY1ZGJhNzM2NzcxMC4uY2NmOTVlZGExODMxNzgyMGI5NWZl
MWJjOTlkNzEzNDdlOGYxOGRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oCkBAIC0xNDAsOCArMTQwLDkgQEAgcHJpdmF0ZToKICAg
ICAvLyBJZiBtX2lzSW5QbGFjZSBpcyB0cnVlLCB1c2UgbV9pblBsYWNlQnVzIGFzIHRoZSB2YWxp
ZCBBdWRpb0J1czsgSWYgZmFsc2UsIHVzZSB0aGUgZGVmYXVsdCBtX2ludGVybmFsQnVzLgogICAg
IGJvb2wgbV9pc0luUGxhY2UgeyBmYWxzZSB9OwogCi0gICAgSGFzaFNldDxBdWRpb05vZGVJbnB1
dCo+IG1faW5wdXRzOwotICAgIHR5cGVkZWYgSGFzaFNldDxBdWRpb05vZGVJbnB1dCo+OjppdGVy
YXRvciBJbnB1dHNJdGVyYXRvcjsKKyAgICB1c2luZyBJbnB1dHNNYXAgPSBIYXNoTWFwPEF1ZGlv
Tm9kZUlucHV0KiwgQXVkaW9Db25uZWN0aW9uUmVmUHRyPEF1ZGlvTm9kZT4+OworICAgIElucHV0
c01hcCBtX2lucHV0czsKKyAgICB0eXBlZGVmIElucHV0c01hcDo6aXRlcmF0b3IgSW5wdXRzSXRl
cmF0b3I7CiAgICAgYm9vbCBtX2lzRW5hYmxlZCB7IHRydWUgfTsKIAogICAgIC8vIEZvciB0aGUg
cHVycG9zZXMgb2YgcmVuZGVyaW5nLCBrZWVwcyB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGlucHV0
cyBhbmQgQXVkaW9QYXJhbXMgd2UncmUgY29ubmVjdGVkIHRvLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5jcHAKaW5kZXggN2M5NjE5
ZjVkY2Q1MTFiMGFhODFjNDk3NjgyMzRlNmVhN2E3MjE1My4uY2M3ZWFiZTU2ODAzMmRmMTBlMDY5
YWY4NDExNzhhM2U3ODE4NmRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgQmFzZUF1
ZGlvQ29udGV4dDo6fkJhc2VBdWRpb0NvbnRleHQoKQogICAgIGlmIChtX2F1dG9tYXRpY1B1bGxO
b2Rlc05lZWRVcGRhdGluZykKICAgICAgICAgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMu
cmVzaXplKG1fYXV0b21hdGljUHVsbE5vZGVzLnNpemUoKSk7CiAgICAgQVNTRVJUKG1fcmVuZGVy
aW5nQXV0b21hdGljUHVsbE5vZGVzLmlzRW1wdHkoKSk7Ci0gICAgLy8gRklYTUU6IENhbiB3ZSBh
c3NlcnQgdGhhdCBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0IGlzIGVtcHR5PworICAgIC8vIEZJ
WE1FOiBDYW4gd2UgYXNzZXJ0IHRoYXQgbV9kZWZlcnJlZEJyZWFrQ29ubmVjdGlvbkxpc3QgaXMg
ZW1wdHk/CiAKICAgICBpZiAoIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpIHsKICAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlQXVkaW9Qcm9kdWNlcigqdGhp
cyk7CkBAIC02ODEsNyArNjgxLDYgQEAgdm9pZCBCYXNlQXVkaW9Db250ZXh0OjpyZWZOb2RlKEF1
ZGlvTm9kZSYgbm9kZSkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEF1dG9Mb2Nr
ZXIgbG9ja2VyKCp0aGlzKTsKICAgICAKLSAgICBub2RlLnJlZihBdWRpb05vZGU6OlJlZlR5cGVD
b25uZWN0aW9uKTsKICAgICBtX3JlZmVyZW5jZWROb2Rlcy5hcHBlbmQoJm5vZGUpOwogfQogCkBA
IC02ODksOCArNjg4LDYgQEAgdm9pZCBCYXNlQXVkaW9Db250ZXh0OjpkZXJlZk5vZGUoQXVkaW9O
b2RlJiBub2RlKQogewogICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CiAgICAgCi0gICAgbm9k
ZS5kZXJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKLQogICAgIEFTU0VSVChtX3Jl
ZmVyZW5jZWROb2Rlcy5jb250YWlucygmbm9kZSkpOwogICAgIG1fcmVmZXJlbmNlZE5vZGVzLnJl
bW92ZUZpcnN0KCZub2RlKTsKIH0KQEAgLTY5OCw5ICs2OTUsNiBAQCB2b2lkIEJhc2VBdWRpb0Nv
bnRleHQ6OmRlcmVmTm9kZShBdWRpb05vZGUmIG5vZGUpCiB2b2lkIEJhc2VBdWRpb0NvbnRleHQ6
OmRlcmVmVW5maW5pc2hlZFNvdXJjZU5vZGVzKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkgJiYgaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpOwotICAgIGZvciAoYXV0byYgbm9kZSA6IG1f
cmVmZXJlbmNlZE5vZGVzKQotICAgICAgICBub2RlLT5kZXJlZihBdWRpb05vZGU6OlJlZlR5cGVD
b25uZWN0aW9uKTsKLQogICAgIG1fcmVmZXJlbmNlZE5vZGVzLmNsZWFyKCk7CiB9CiAKQEAgLTc3
OCwxMCArNzcyLDEwIEBAIGJvb2wgQmFzZUF1ZGlvQ29udGV4dDo6aXNHcmFwaE93bmVyKCkgY29u
c3QKICAgICByZXR1cm4gbV9ncmFwaE93bmVyVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKTsK
IH0KIAotdm9pZCBCYXNlQXVkaW9Db250ZXh0OjphZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlv
Tm9kZSogbm9kZSkKK3ZvaWQgQmFzZUF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWREZWNyZW1lbnRD
b25uZWN0aW9uQ291bnQoQXVkaW9Ob2RlKiBub2RlKQogewogICAgIEFTU0VSVChpc0F1ZGlvVGhy
ZWFkKCkpOwotICAgIG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QuYXBwZW5kKG5vZGUpOworICAg
IG1fZGVmZXJyZWRCcmVha0Nvbm5lY3Rpb25MaXN0LmFwcGVuZChub2RlKTsKIH0KIAogdm9pZCBC
YXNlQXVkaW9Db250ZXh0OjpoYW5kbGVQcmVSZW5kZXJUYXNrcyhjb25zdCBBdWRpb0lPUG9zaXRp
b24mIG91dHB1dFBvc2l0aW9uKQpAQCAtODIxLDcgKzgxNSw3IEBAIHZvaWQgQmFzZUF1ZGlvQ29u
dGV4dDo6aGFuZGxlUG9zdFJlbmRlclRhc2tzKCkKICAgICBib29sIG11c3RSZWxlYXNlTG9jazsK
ICAgICBpZiAodHJ5TG9jayhtdXN0UmVsZWFzZUxvY2spKSB7CiAgICAgICAgIC8vIFRha2UgY2Fy
ZSBvZiBmaW5pc2hpbmcgYW55IGRlcmVmcyB3aGVyZSB0aGUgdHJ5TG9jaygpIGZhaWxlZCBwcmV2
aW91c2x5LgotICAgICAgICBoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpOworICAgICAgICBo
YW5kbGVEZWZlcnJlZERlY3JlbWVudENvbm5lY3Rpb25Db3VudHMoKTsKIAogICAgICAgICAvLyBE
eW5hbWljYWxseSBjbGVhbiB1cCBub2RlcyB3aGljaCBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KICAg
ICAgICAgZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKCk7CkBAIC04NDEsMTMgKzgzNSwxMyBAQCB2
b2lkIEJhc2VBdWRpb0NvbnRleHQ6OmhhbmRsZVBvc3RSZW5kZXJUYXNrcygpCiAgICAgfQogfQog
Ci12b2lkIEJhc2VBdWRpb0NvbnRleHQ6OmhhbmRsZURlZmVycmVkRmluaXNoRGVyZWZzKCkKK3Zv
aWQgQmFzZUF1ZGlvQ29udGV4dDo6aGFuZGxlRGVmZXJyZWREZWNyZW1lbnRDb25uZWN0aW9uQ291
bnRzKCkKIHsKICAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpICYmIGlzR3JhcGhPd25lcigpKTsK
LSAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0KQotICAgICAg
ICBub2RlLT5maW5pc2hEZXJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKKyAgICBm
b3IgKGF1dG8mIG5vZGUgOiBtX2RlZmVycmVkQnJlYWtDb25uZWN0aW9uTGlzdCkKKyAgICAgICAg
bm9kZS0+ZGVjcmVtZW50Q29ubmVjdGlvbkNvdW50V2l0aExvY2soKTsKICAgICAKLSAgICBtX2Rl
ZmVycmVkRmluaXNoRGVyZWZMaXN0LmNsZWFyKCk7CisgICAgbV9kZWZlcnJlZEJyZWFrQ29ubmVj
dGlvbkxpc3QuY2xlYXIoKTsKIH0KIAogdm9pZCBCYXNlQXVkaW9Db250ZXh0OjptYXJrRm9yRGVs
ZXRpb24oQXVkaW9Ob2RlJiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaAppbmRleCBiYzg4NTk2N2E3YTQzNWM0YjkxYjM5M2Vl
ZWVmYzQ5MTkzNjUxNDJiLi44ODY1ZWJmOGQ2YTBhZTNkZWM3MTNjMDc5ZjE1N2RlMDJiYTM3ZWEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0Nv
bnRleHQuaApAQCAtMjI5LDExICsyMjksMTEgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdGhl
IG1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzIHdlIGNhbiBzdXBwb3J0LgogICAgIHN0YXRpYyB1
bnNpZ25lZCBtYXhOdW1iZXJPZkNoYW5uZWxzKCkgeyByZXR1cm4gTWF4TnVtYmVyT2ZDaGFubmVs
czsgfQogICAgIAotICAgIC8vIEluIEF1ZGlvTm9kZTo6ZGVyZWYoKSBhIHRyeUxvY2soKSBpcyB1
c2VkIGZvciBjYWxsaW5nIGZpbmlzaERlcmVmKCksIGJ1dCBpZiBpdCBmYWlscyBrZWVwIHRyYWNr
IGhlcmUuCi0gICAgdm9pZCBhZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSopOworICAg
IC8vIEluIEF1ZGlvTm9kZTo6ZGVjcmVtZW50Q29ubmVjdGlvbkNvdW50KCkgYSB0cnlMb2NrKCkg
aXMgdXNlZCBmb3IgY2FsbGluZyBkZWNyZW1lbnRDb25uZWN0aW9uQ291bnRXaXRoTG9jaygpLCBi
dXQgaWYgaXQgZmFpbHMga2VlcCB0cmFjayBoZXJlLgorICAgIHZvaWQgYWRkRGVmZXJyZWREZWNy
ZW1lbnRDb25uZWN0aW9uQ291bnQoQXVkaW9Ob2RlKik7CiAKLSAgICAvLyBJbiB0aGUgYXVkaW8g
dGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5k
bGVEZWZlcnJlZEZpbmlzaERlcmVmcygpLgotICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRGaW5pc2hE
ZXJlZnMoKTsKKyAgICAvLyBJbiB0aGUgYXVkaW8gdGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNo
IHJlbmRlciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5kbGVEZWZlcnJlZERlY3JlbWVudENvbm5lY3Rp
b25Db3VudHMoKS4KKyAgICB2b2lkIGhhbmRsZURlZmVycmVkRGVjcmVtZW50Q29ubmVjdGlvbkNv
dW50cygpOwogCiAgICAgLy8gT25seSBhY2Nlc3NlZCB3aGVuIHRoZSBncmFwaCBsb2NrIGlzIGhl
bGQuCiAgICAgdm9pZCBtYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5nSnVuY3Rp
b24qKTsKQEAgLTM5NywxMCArMzk3LDggQEAgcHJpdmF0ZToKICAgICAvLyBPbmx5IGFjY2Vzc2Vk
IGluIHRoZSBhdWRpbyB0aHJlYWQuCiAgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fZmluaXNoZWRO
b2RlczsKIAotICAgIC8vIFdlIGRvbid0IHVzZSBSZWZQdHI8QXVkaW9Ob2RlPiBoZXJlIGJlY2F1
c2UgQXVkaW9Ob2RlIGhhcyBhIG1vcmUgY29tcGxleCByZWYoKSAvIGRlcmVmKCkgaW1wbGVtZW50
YXRpb24KLSAgICAvLyB3aXRoIGFuIG9wdGlvbmFsIGFyZ3VtZW50IGZvciByZWZUeXBlLiAgV2Ug
bmVlZCB0byB1c2UgdGhlIHNwZWNpYWwgcmVmVHlwZTogUmVmVHlwZUNvbm5lY3Rpb24KICAgICAv
LyBFaXRoZXIgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLCBvciBvbiB0aGUg
bWFpbiB0aHJlYWQgd2hlbiB0aGUgYXVkaW8gdGhyZWFkIGhhcyBmaW5pc2hlZC4KLSAgICBWZWN0
b3I8QXVkaW9Ob2RlKj4gbV9yZWZlcmVuY2VkTm9kZXM7CisgICAgVmVjdG9yPEF1ZGlvQ29ubmVj
dGlvblJlZlB0cjxBdWRpb05vZGU+PiBtX3JlZmVyZW5jZWROb2RlczsKIAogICAgIC8vIEFjY3Vt
dWxhdGUgbm9kZXMgd2hpY2ggbmVlZCB0byBiZSBkZWxldGVkIGhlcmUuCiAgICAgLy8gVGhpcyBp
cyBjb3BpZWQgdG8gbV9ub2Rlc1RvRGVsZXRlIGF0IHRoZSBlbmQgb2YgYSByZW5kZXIgY3ljbGUg
aW4gaGFuZGxlUG9zdFJlbmRlclRhc2tzKCksIHdoZXJlIHdlJ3JlIGFzc3VyZWQgb2YgYSBzdGFi
bGUgZ3JhcGgKQEAgLTQyNyw3ICs0MjUsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8QXVkaW9O
b2RlKj4gbV9hdXRvbWF0aWNQdWxsTm9kZXM7CiAgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVu
ZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzOwogICAgIC8vIE9ubHkgYWNjZXNzZWQgaW4gdGhlIGF1
ZGlvIHRocmVhZC4KLSAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9kZWZlcnJlZEZpbmlzaERlcmVm
TGlzdDsKKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9kZWZlcnJlZEJyZWFrQ29ubmVjdGlvbkxp
c3Q7CiAgICAgVmVjdG9yPFZlY3RvcjxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+PiBtX3N0YXRl
UmVhY3Rpb25zOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uPiBt
X21lZGlhU2Vzc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4IDlhYzdhZDNmYjdmZTUxYTNmNzAxN2I0
ZGFlZGNlMzQxZGE1MDEwZjQuLjIzN2U5MDE3MDIyZTcxNjMyZTY0MDU3NjNlMDkzMGFlY2IwNTNi
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3Jp
cHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtMTgzLDEyICsxODMsMTAgQEAgdm9pZCBTY3JpcHRQcm9j
ZXNzb3JOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgLy8gV2hlbiB0
aGlzIGhhcHBlbnMsIGZpcmUgYW4gZXZlbnQgYW5kIHN3YXAgYnVmZmVycy4KICAgICBpZiAoIW1f
YnVmZmVyUmVhZFdyaXRlSW5kZXgpIHsKICAgICAgICAgLy8gUmVmZXJlbmNlIG91cnNlbGYgc28g
d2UgZG9uJ3QgYWNjaWRlbnRhbGx5IGdldCBkZWxldGVkIGJlZm9yZSBmaXJlUHJvY2Vzc0V2ZW50
KCkgZ2V0cyBjYWxsZWQuCi0gICAgICAgIGF1dG8gcHJvdGVjdG9yID0gbWFrZVJlZigqdGhpcyk7
Ci0KICAgICAgICAgLy8gV2Ugb25seSB3YWl0IGZvciBzY3JpcHQgY29kZSBleGVjdXRpb24gd2hl
biB0aGUgY29udGV4dCBpcyBhbiBvZmZsaW5lIG9uZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4K
ICAgICAgICAgaWYgKGNvbnRleHQoKS5pc09mZmxpbmVDb250ZXh0KCkpIHsKICAgICAgICAgICAg
IEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzLCAmc2VtYXBob3JlLCBkb3VibGVCdWZmZXJJbmRleCA9IG1fZG91YmxlQnVmZmVySW5k
ZXhdIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsICZzZW1hcGhvcmUsIGRv
dWJsZUJ1ZmZlckluZGV4ID0gbV9kb3VibGVCdWZmZXJJbmRleCwgcHJvdGVjdG9yID0gbWFrZVJl
ZigqdGhpcyldIHsKICAgICAgICAgICAgICAgICBmaXJlUHJvY2Vzc0V2ZW50KGRvdWJsZUJ1ZmZl
ckluZGV4KTsKICAgICAgICAgICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7CiAgICAgICAgICAg
ICB9KTsKQEAgLTIwMiw3ICsyMDAsNyBAQCB2b2lkIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnByb2Nl
c3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGRvdWJsZUJ1
ZmZlckluZGV4ID0gbV9kb3VibGVCdWZmZXJJbmRleCwgcHJvdGVjdG9yID0gV1RGTW92ZShwcm90
ZWN0b3IpXSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBkb3VibGVCdWZm
ZXJJbmRleCA9IG1fZG91YmxlQnVmZmVySW5kZXgsIHByb3RlY3RvciA9IG1ha2VSZWYoKnRoaXMp
XSB7CiAgICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2Nr
KTsKICAgICAgICAgICAgICAgICBmaXJlUHJvY2Vzc0V2ZW50KGRvdWJsZUJ1ZmZlckluZGV4KTsK
ICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUmVmUHRyQ2Fpcm8uY3BwCmluZGV4IDVlN2FlZjE2OGNhNzc3ZDhmNzE1ZDll
NDU2NGY4YzM5NDE1YzRhNTIuLmFjNTBjMWExYjU1YjcxOGI3MzRiYTIwMjU1MjFlZTAzNjBlYTYw
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1Jl
ZlB0ckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9SZWZQdHJDYWlyby5jcHAKQEAgLTI1LDczICsyNSw3MyBAQAogCiBuYW1lc3BhY2UgV1RGIHsK
IAotdGVtcGxhdGU8PiB2b2lkIHJlZklmTm90TnVsbChjYWlyb190KiBwdHIpCit2b2lkIERlZmF1
bHRSZWZEZXJlZlRyYWl0czxjYWlyb190Pjo6cmVmSWZOb3ROdWxsKGNhaXJvX3QqIHB0cikKIHsK
ICAgICBpZiAoTElLRUxZKHB0cikpCiAgICAgICAgIGNhaXJvX3JlZmVyZW5jZShwdHIpOwogfQog
Ci10ZW1wbGF0ZTw+IHZvaWQgZGVyZWZJZk5vdE51bGwoY2Fpcm9fdCogcHRyKQordm9pZCBEZWZh
dWx0UmVmRGVyZWZUcmFpdHM8Y2Fpcm9fdD46OmRlcmVmSWZOb3ROdWxsKGNhaXJvX3QqIHB0cikK
IHsKICAgICBpZiAoTElLRUxZKHB0cikpCiAgICAgICAgIGNhaXJvX2Rlc3Ryb3kocHRyKTsKIH0K
IAotdGVtcGxhdGU8PiB2b2lkIHJlZklmTm90TnVsbChjYWlyb19zdXJmYWNlX3QqIHB0cikKK3Zv
aWQgRGVmYXVsdFJlZkRlcmVmVHJhaXRzPGNhaXJvX3N1cmZhY2VfdD46OnJlZklmTm90TnVsbChj
YWlyb19zdXJmYWNlX3QqIHB0cikKIHsKICAgICBpZiAoTElLRUxZKHB0cikpCiAgICAgICAgIGNh
aXJvX3N1cmZhY2VfcmVmZXJlbmNlKHB0cik7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBkZXJlZklm
Tm90TnVsbChjYWlyb19zdXJmYWNlX3QqIHB0cikKK3ZvaWQgRGVmYXVsdFJlZkRlcmVmVHJhaXRz
PGNhaXJvX3N1cmZhY2VfdD46OmRlcmVmSWZOb3ROdWxsKGNhaXJvX3N1cmZhY2VfdCogcHRyKQog
ewogICAgIGlmIChMSUtFTFkocHRyKSkKICAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHB0
cik7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCByZWZJZk5vdE51bGwoY2Fpcm9fZm9udF9mYWNlX3Qq
IHB0cikKK3ZvaWQgRGVmYXVsdFJlZkRlcmVmVHJhaXRzPGNhaXJvX2ZvbnRfZmFjZV90Pjo6cmVm
SWZOb3ROdWxsKGNhaXJvX2ZvbnRfZmFjZV90KiBwdHIpCiB7CiAgICAgaWYgKExJS0VMWShwdHIp
KQogICAgICAgICBjYWlyb19mb250X2ZhY2VfcmVmZXJlbmNlKHB0cik7CiB9CiAKLXRlbXBsYXRl
PD4gdm9pZCBkZXJlZklmTm90TnVsbChjYWlyb19mb250X2ZhY2VfdCogcHRyKQordm9pZCBEZWZh
dWx0UmVmRGVyZWZUcmFpdHM8Y2Fpcm9fZm9udF9mYWNlX3Q+OjpkZXJlZklmTm90TnVsbChjYWly
b19mb250X2ZhY2VfdCogcHRyKQogewogICAgIGlmIChMSUtFTFkocHRyKSkKICAgICAgICAgY2Fp
cm9fZm9udF9mYWNlX2Rlc3Ryb3kocHRyKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIHJlZklmTm90
TnVsbChjYWlyb19zY2FsZWRfZm9udF90KiBwdHIpCit2b2lkIERlZmF1bHRSZWZEZXJlZlRyYWl0
czxjYWlyb19zY2FsZWRfZm9udF90Pjo6cmVmSWZOb3ROdWxsKGNhaXJvX3NjYWxlZF9mb250X3Qq
IHB0cikKIHsKICAgICBpZiAoTElLRUxZKHB0cikpCiAgICAgICAgIGNhaXJvX3NjYWxlZF9mb250
X3JlZmVyZW5jZShwdHIpOwogfQogCi10ZW1wbGF0ZTw+IHZvaWQgZGVyZWZJZk5vdE51bGwoY2Fp
cm9fc2NhbGVkX2ZvbnRfdCogcHRyKQordm9pZCBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8Y2Fpcm9f
c2NhbGVkX2ZvbnRfdD46OmRlcmVmSWZOb3ROdWxsKGNhaXJvX3NjYWxlZF9mb250X3QqIHB0cikK
IHsKICAgICBpZiAoTElLRUxZKHB0cikpCiAgICAgICAgIGNhaXJvX3NjYWxlZF9mb250X2Rlc3Ry
b3kocHRyKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIHJlZklmTm90TnVsbChjYWlyb19wYXR0ZXJu
X3QqIHB0cikKK3ZvaWQgRGVmYXVsdFJlZkRlcmVmVHJhaXRzPGNhaXJvX3BhdHRlcm5fdD46OnJl
ZklmTm90TnVsbChjYWlyb19wYXR0ZXJuX3QqIHB0cikKIHsKICAgICBpZiAoTElLRUxZKHB0cikp
CiAgICAgICAgIGNhaXJvX3BhdHRlcm5fcmVmZXJlbmNlKHB0cik7CiB9CiAKLXRlbXBsYXRlPD4g
dm9pZCBkZXJlZklmTm90TnVsbChjYWlyb19wYXR0ZXJuX3QqIHB0cikKK3ZvaWQgRGVmYXVsdFJl
ZkRlcmVmVHJhaXRzPGNhaXJvX3BhdHRlcm5fdD46OmRlcmVmSWZOb3ROdWxsKGNhaXJvX3BhdHRl
cm5fdCogcHRyKQogewogICAgIGlmIChMSUtFTFkocHRyKSkKICAgICAgICAgY2Fpcm9fcGF0dGVy
bl9kZXN0cm95KHB0cik7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCByZWZJZk5vdE51bGwoY2Fpcm9f
cmVnaW9uX3QqIHB0cikKK3ZvaWQgRGVmYXVsdFJlZkRlcmVmVHJhaXRzPGNhaXJvX3JlZ2lvbl90
Pjo6cmVmSWZOb3ROdWxsKGNhaXJvX3JlZ2lvbl90KiBwdHIpCiB7CiAgICAgaWYgKExJS0VMWShw
dHIpKQogICAgICAgICBjYWlyb19yZWdpb25fcmVmZXJlbmNlKHB0cik7CiB9CiAKLXRlbXBsYXRl
PD4gdm9pZCBkZXJlZklmTm90TnVsbChjYWlyb19yZWdpb25fdCogcHRyKQordm9pZCBEZWZhdWx0
UmVmRGVyZWZUcmFpdHM8Y2Fpcm9fcmVnaW9uX3Q+OjpkZXJlZklmTm90TnVsbChjYWlyb19yZWdp
b25fdCogcHRyKQogewogICAgIGlmIChMSUtFTFkocHRyKSkKICAgICAgICAgY2Fpcm9fcmVnaW9u
X2Rlc3Ryb3kocHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1JlZlB0ckNhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9SZWZQdHJDYWlyby5oCmluZGV4IGVjMDc2NzhkYjI0ZmQzN2NiMjMyODkyYjQyOGJh
ZWI0N2MxMzVhODkuLjYzZmE2YWFiOWQzZDM3NmI2ZGYwNGI1ZWZiZGNmMmVjYThlNDhkOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0ckNh
aXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUmVmUHRy
Q2Fpcm8uaApAQCAtMzMsMjMgKzMzLDQxIEBAIHR5cGVkZWYgc3RydWN0IF9jYWlyb19yZWdpb24g
Y2Fpcm9fcmVnaW9uX3Q7CiAKIG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTw+IHZvaWQgcmVm
SWZOb3ROdWxsKGNhaXJvX3QqIHB0cik7Ci10ZW1wbGF0ZTw+IFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGVyZWZJZk5vdE51bGwoY2Fpcm9fdCogcHRyKTsKK3RlbXBsYXRlPD4KK3N0cnVjdCBEZWZhdWx0
UmVmRGVyZWZUcmFpdHM8Y2Fpcm9fdD4geworICAgIHN0YXRpYyB2b2lkIHJlZklmTm90TnVsbChj
YWlyb190KiBwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGRlcmVmSWZOb3RO
dWxsKGNhaXJvX3QqIHB0cik7Cit9OwogCi10ZW1wbGF0ZTw+IFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVmSWZOb3ROdWxsKGNhaXJvX3N1cmZhY2VfdCogcHRyKTsKLXRlbXBsYXRlPD4gV0VCQ09SRV9F
WFBPUlQgdm9pZCBkZXJlZklmTm90TnVsbChjYWlyb19zdXJmYWNlX3QqIHB0cik7Cit0ZW1wbGF0
ZTw+CitzdHJ1Y3QgRGVmYXVsdFJlZkRlcmVmVHJhaXRzPGNhaXJvX3N1cmZhY2VfdD4geworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZklmTm90TnVsbChjYWlyb19zdXJmYWNlX3Qq
IHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZGVyZWZJZk5vdE51bGwoY2Fp
cm9fc3VyZmFjZV90KiBwdHIpOworfTsKIAotdGVtcGxhdGU8PiB2b2lkIHJlZklmTm90TnVsbChj
YWlyb19mb250X2ZhY2VfdCogcHRyKTsKLXRlbXBsYXRlPD4gdm9pZCBkZXJlZklmTm90TnVsbChj
YWlyb19mb250X2ZhY2VfdCogcHRyKTsKK3RlbXBsYXRlPD4KK3N0cnVjdCBEZWZhdWx0UmVmRGVy
ZWZUcmFpdHM8Y2Fpcm9fZm9udF9mYWNlX3Q+IHsKKyAgICBzdGF0aWMgdm9pZCByZWZJZk5vdE51
bGwoY2Fpcm9fZm9udF9mYWNlX3QqIHB0cik7CisgICAgc3RhdGljIHZvaWQgZGVyZWZJZk5vdE51
bGwoY2Fpcm9fZm9udF9mYWNlX3QqIHB0cik7Cit9OwogCi10ZW1wbGF0ZTw+IHZvaWQgcmVmSWZO
b3ROdWxsKGNhaXJvX3NjYWxlZF9mb250X3QqIHB0cik7Ci10ZW1wbGF0ZTw+IHZvaWQgZGVyZWZJ
Zk5vdE51bGwoY2Fpcm9fc2NhbGVkX2ZvbnRfdCogcHRyKTsKK3RlbXBsYXRlPD4KK3N0cnVjdCBE
ZWZhdWx0UmVmRGVyZWZUcmFpdHM8Y2Fpcm9fc2NhbGVkX2ZvbnRfdD4geworICAgIHN0YXRpYyB2
b2lkIHJlZklmTm90TnVsbChjYWlyb19zY2FsZWRfZm9udF90KiBwdHIpOworICAgIHN0YXRpYyB2
b2lkIGRlcmVmSWZOb3ROdWxsKGNhaXJvX3NjYWxlZF9mb250X3QqIHB0cik7Cit9OwogCi10ZW1w
bGF0ZTw+IHZvaWQgcmVmSWZOb3ROdWxsKGNhaXJvX3BhdHRlcm5fdCopOwotdGVtcGxhdGU8PiB2
b2lkIGRlcmVmSWZOb3ROdWxsKGNhaXJvX3BhdHRlcm5fdCopOwordGVtcGxhdGU8Pgorc3RydWN0
IERlZmF1bHRSZWZEZXJlZlRyYWl0czxjYWlyb19wYXR0ZXJuX3Q+IHsKKyAgICBzdGF0aWMgdm9p
ZCByZWZJZk5vdE51bGwoY2Fpcm9fcGF0dGVybl90Kik7CisgICAgc3RhdGljIHZvaWQgZGVyZWZJ
Zk5vdE51bGwoY2Fpcm9fcGF0dGVybl90Kik7Cit9OwogCi10ZW1wbGF0ZTw+IHZvaWQgcmVmSWZO
b3ROdWxsKGNhaXJvX3JlZ2lvbl90Kik7Ci10ZW1wbGF0ZTw+IHZvaWQgZGVyZWZJZk5vdE51bGwo
Y2Fpcm9fcmVnaW9uX3QqKTsKK3RlbXBsYXRlPD4KK3N0cnVjdCBEZWZhdWx0UmVmRGVyZWZUcmFp
dHM8Y2Fpcm9fcmVnaW9uX3Q+IHsKKyAgICBzdGF0aWMgdm9pZCByZWZJZk5vdE51bGwoY2Fpcm9f
cmVnaW9uX3QqKTsKKyAgICBzdGF0aWMgdm9pZCBkZXJlZklmTm90TnVsbChjYWlyb19yZWdpb25f
dCopOworfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL1JlZlB0ckZvbnRjb25maWcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvUmVmUHRyRm9udGNvbmZpZy5j
cHAKaW5kZXggOGE0YmRjMTMxM2I0Yzg5NDNiYzlkYjYxYjY1ZjU3YjNhMjc0ZjFmOS4uOGRjNzM4
YjQ2ZTFiZjM0MGYxNGE1ZTU5MDY1M2ZlNDQ3ZWI1ZGVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvUmVmUHRyRm9udGNvbmZpZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvUmVmUHRyRm9udGNv
bmZpZy5jcHAKQEAgLTI1LDI1ICsyNSwyNSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxh
dGU8PiB2b2lkIHJlZklmTm90TnVsbChGY1BhdHRlcm4qIHB0cikKK3ZvaWQgRGVmYXVsdFJlZkRl
cmVmVHJhaXRzPEZjUGF0dGVybj46OnJlZklmTm90TnVsbChGY1BhdHRlcm4qIHB0cikKIHsKICAg
ICBpZiAoTElLRUxZKHB0cikpCiAgICAgICAgIEZjUGF0dGVyblJlZmVyZW5jZShwdHIpOwogfQog
Ci10ZW1wbGF0ZTw+IHZvaWQgZGVyZWZJZk5vdE51bGwoRmNQYXR0ZXJuKiBwdHIpCit2b2lkIERl
ZmF1bHRSZWZEZXJlZlRyYWl0czxGY1BhdHRlcm4+OjpkZXJlZklmTm90TnVsbChGY1BhdHRlcm4q
IHB0cikKIHsKICAgICBpZiAoTElLRUxZKHB0cikpCiAgICAgICAgIEZjUGF0dGVybkRlc3Ryb3ko
cHRyKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIHJlZklmTm90TnVsbChGY0NvbmZpZyogcHRyKQor
dm9pZCBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8RmNDb25maWc+OjpyZWZJZk5vdE51bGwoRmNDb25m
aWcqIHB0cikKIHsKICAgICBpZiAoTElLRUxZKHB0cikpCiAgICAgICAgIEZjQ29uZmlnUmVmZXJl
bmNlKHB0cik7CiB9CiAKLXRlbXBsYXRlPD4gdm9pZCBkZXJlZklmTm90TnVsbChGY0NvbmZpZyog
cHRyKQordm9pZCBEZWZhdWx0UmVmRGVyZWZUcmFpdHM8RmNDb25maWc+OjpkZXJlZklmTm90TnVs
bChGY0NvbmZpZyogcHRyKQogewogICAgIGlmIChMSUtFTFkocHRyKSkKICAgICAgICAgRmNDb25m
aWdEZXN0cm95KHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9mcmVldHlwZS9SZWZQdHJGb250Y29uZmlnLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9SZWZQdHJGb250Y29uZmlnLmgKaW5kZXggNTlhOGU0NWQ3MDk1
MzA5YThiMGY4OTdlMGFmYjBjMGJiOTgzNDQxMy4uN2RiM2MxOGY5Y2JmY2JlNGFlZGRjY2FkZTJl
ZDlmOGZlZjExYjFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvUmVmUHRyRm9udGNvbmZpZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL1JlZlB0ckZvbnRjb25maWcuaApAQCAtMjgsMTEgKzI4LDE3
IEBAIHR5cGVkZWYgc3RydWN0IF9GY0NvbmZpZyBGY0NvbmZpZzsKIAogbmFtZXNwYWNlIFdURiB7
CiAKLXRlbXBsYXRlPD4gdm9pZCByZWZJZk5vdE51bGwoRmNQYXR0ZXJuKiBwdHIpOwotdGVtcGxh
dGU8PiB2b2lkIGRlcmVmSWZOb3ROdWxsKEZjUGF0dGVybiogcHRyKTsKLQotdGVtcGxhdGU8PiB2
b2lkIHJlZklmTm90TnVsbChGY0NvbmZpZyogcHRyKTsKLXRlbXBsYXRlPD4gdm9pZCBkZXJlZklm
Tm90TnVsbChGY0NvbmZpZyogcHRyKTsKK3RlbXBsYXRlPD4KK3N0cnVjdCBEZWZhdWx0UmVmRGVy
ZWZUcmFpdHM8RmNQYXR0ZXJuPiB7CisgICAgc3RhdGljIHZvaWQgcmVmSWZOb3ROdWxsKEZjUGF0
dGVybiogcHRyKTsKKyAgICBzdGF0aWMgdm9pZCBkZXJlZklmTm90TnVsbChGY1BhdHRlcm4qIHB0
cik7Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgRGVmYXVsdFJlZkRlcmVmVHJhaXRzPEZjQ29u
ZmlnPiB7CisgICAgc3RhdGljIHZvaWQgcmVmSWZOb3ROdWxsKEZjQ29uZmlnKiBwdHIpOworICAg
IHN0YXRpYyB2b2lkIGRlcmVmSWZOb3ROdWxsKEZjQ29uZmlnKiBwdHIpOworfTsKIAogfSAvLyBu
YW1lc3BhY2UgV1RGCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>