<?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>217351</bug_id>
          
          <creation_ts>2020-10-05 16:18:48 -0700</creation_ts>
          <short_desc>Use sendWithAsyncReply to evaluate JavaScript in a WebPage</short_desc>
          <delta_ts>2020-10-06 14:39:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1694930</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-05 16:18:48 -0700</bug_when>
    <thetext>Use sendWithAsyncReply to evaluate JavaScript in a WebPage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694931</commentid>
    <comment_count>1</comment_count>
      <attachid>410581</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-05 16:19:32 -0700</bug_when>
    <thetext>Created attachment 410581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694945</commentid>
    <comment_count>2</comment_count>
      <attachid>410587</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-05 16:39:39 -0700</bug_when>
    <thetext>Created attachment 410587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694946</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-10-05 16:40:25 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694953</commentid>
    <comment_count>4</comment_count>
      <attachid>410590</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-05 16:57:02 -0700</bug_when>
    <thetext>Created attachment 410590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694992</commentid>
    <comment_count>5</comment_count>
      <attachid>410599</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-05 18:41:42 -0700</bug_when>
    <thetext>Created attachment 410599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695025</commentid>
    <comment_count>6</comment_count>
      <attachid>410610</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-05 21:43:54 -0700</bug_when>
    <thetext>Created attachment 410610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695050</commentid>
    <comment_count>7</comment_count>
      <attachid>410610</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-10-06 00:32:57 -0700</bug_when>
    <thetext>Comment on attachment 410610
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:3788
&gt; +    getPage(webView).runJavaScriptInMainFrame(WTFMove(params), [task = WTFMove(task)](API::SerializedScriptValue* serializedScriptValue, Optional&lt;ExceptionDetails&gt; details) {

&amp;&amp; and WTFMove.
Or can we use something like Expected&lt;RefPtr&lt;API::SerializedScriptValue&gt;, ExceptionDetails&gt;?

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:3925
&gt;              exceptionDetails = *details;

Optional&lt;&gt;&amp;&amp; and WTFMove

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:3965
&gt; +        [task](API::SerializedScriptValue* serializedScriptValue, Optional&lt;ExceptionDetails&gt; details) {

Optional&lt;&gt;&amp;&amp; and WTFMove

&gt; Source/WebKit/UIProcess/Inspector/socket/RemoteInspectorProtocolHandler.cpp:124
&gt; +        [](API::SerializedScriptValue*, Optional&lt;WebCore::ExceptionDetails&gt; exceptionDetails) {

&amp;&amp;, maybe use auto&amp;&amp; as well.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4105
&gt; +    sendWithAsyncReply(Messages::WebPage::RunJavaScriptInFrameInScriptWorld(parameters, frameID, world.worldData()), [activity = WTFMove(activity), callbackFunction = WTFMove(callbackFunction)] (const IPC::DataReference&amp; dataReference, Optional&lt;ExceptionDetails&gt; details) mutable {

&amp;&amp;

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4113
&gt; +        callbackFunction(API::SerializedScriptValue::adopt(WTFMove(data)).ptr(), details);

WTFMove(details)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695278</commentid>
    <comment_count>8</comment_count>
      <attachid>410680</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-06 12:47:34 -0700</bug_when>
    <thetext>Created attachment 410680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695281</commentid>
    <comment_count>9</comment_count>
      <attachid>410683</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-06 13:02:13 -0700</bug_when>
    <thetext>Created attachment 410683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695285</commentid>
    <comment_count>10</comment_count>
      <attachid>410686</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-06 13:07:17 -0700</bug_when>
    <thetext>Created attachment 410686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695289</commentid>
    <comment_count>11</comment_count>
      <attachid>410688</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-06 13:31:58 -0700</bug_when>
    <thetext>Created attachment 410688
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695310</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-06 14:22:00 -0700</bug_when>
    <thetext>http://trac.webkit.org/r268074</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695311</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-06 14:22:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/70017140&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410581</attachid>
            <date>2020-10-05 16:19:32 -0700</date>
            <delta_ts>2020-10-05 16:40:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217351-20201005161931.patch</filename>
            <type>text/plain</type>
            <size>21862</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFjYWFkNjA2ZGYxMDQ1ZGM2
NzI4NmNkMmU3ZjE5ZDZhMjZjM2Q2YzkuLmI1YTY4OGQ1OTEyYzY0NDNkY2Y2NGUzZWQyMmQ0Mzc4
ZmE1ZTRmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMTAtMDUgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2Ugc2VuZFdp
dGhBc3luY1JlcGx5IHRvIGV2YWx1YXRlIEphdmFTY3JpcHQgaW4gYSBXZWJQYWdlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTczNTEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9P
UFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAo
V0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFT
Y3JpcHQ6YXNBc3luY0Z1bmN0aW9uOndpdGhTb3VyY2VVUkw6d2l0aEFyZ3VtZW50czpmb3JjZVVz
ZXJHZXN0dXJlOmluRnJhbWU6aW5Xb3JsZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IHRha2VTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKTog
RGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFT
Y3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZUlu
U2NyaXB0V29ybGQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjAt
MTAtMDUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBVc2Ugc2VuZFdpdGhBc3luY1JlcGx5IGZvciBEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5k
ZXggZmNiYTg0NDI5ZGQ4NjkzYWNlNWJkOTUwMTA3M2Y4OGFjMTAxYzVlOS4uNGE0YWQ3MWEyZTJm
ZjhlMTE2YmI5NTEyZGNmNTE5NGU5NTY4NWVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwCkBAIC0yNDg5LDggKzI0ODksOCBAQCB2b2lkIFdLUGFnZVNldFBhZ2VT
dGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQp
CiAKIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdLUGFnZVJlZiBwYWdlUmVm
LCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZVJ1bkphdmFTY3Jp
cHRGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZSh7IHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgVVJMIHsgfSwgZmFs
c2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgY2FsbGJhY2so
dG9BUEkocmV0dXJuVmFsdWUpLCAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkg
PyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250ZXh0KTsKKyAgICB0
b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHRvSW1wbChzY3JpcHRS
ZWYpLT5zdHJpbmcoKSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBbY29u
dGV4dCwgY2FsbGJhY2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwg
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4pIHsKKyAgICAgICAgY2FsbGJhY2so
dG9BUEkocmV0dXJuVmFsdWUpLCBudWxscHRyLCBjb250ZXh0KTsKICAgICB9KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggZTJk
MmYzZWVmNTdhNmJhOGVjMGIzMzU1ZjAwN2JiZTg0NWFlNmRkZC4uNWY4YzQ1ZTJiN2UzNDIxNGZm
MjMyMjUwY2VmMjBiNTZkMTY2MDBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC05MzIsMjggKzkzMiwxMCBAQCBzdGF0aWMgUmV0YWlu
UHRyPE5TRXJyb3I+IG5zRXJyb3JGcm9tRXhjZXB0aW9uRGV0YWlscyhjb25zdCBXZWJDb3JlOjpF
eGNlcHRpb25EZQogICAgICAgICAgICAgZnJhbWVJRCA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllclR5cGU+KGlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIF9w
YWdlLT5ydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoeyBqYXZhU2NyaXB0U3RyaW5n
LCBzb3VyY2VVUkwsICEhYXNBc3luY0Z1bmN0aW9uLCBXVEZNb3ZlKGFyZ3VtZW50c01hcCksICEh
Zm9yY2VVc2VyR2VzdHVyZSB9LCBmcmFtZUlELCAqd29ybGQtPl9jb250ZW50V29ybGQuZ2V0KCks
IFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZh
bHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6
OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yIGVycm9yQ29kZSkgeworICAgIF9wYWdlLT5ydW5K
YXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoeyBqYXZhU2NyaXB0U3RyaW5nLCBzb3VyY2VV
UkwsICEhYXNBc3luY0Z1bmN0aW9uLCBXVEZNb3ZlKGFyZ3VtZW50c01hcCksICEhZm9yY2VVc2Vy
R2VzdHVyZSB9LCBmcmFtZUlELCAqd29ybGQtPl9jb250ZW50V29ybGQuZ2V0KCksIFtoYW5kbGVy
XShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRp
b25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzKSB7CiAgICAgICAgIGlmICgh
aGFuZGxlcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZXJyb3JDb2RlICE9
IFdlYktpdDo6U2NyaXB0VmFsdWVDYWxsYmFjazo6RXJyb3I6Ok5vbmUpIHsKLSAgICAgICAgICAg
IGF1dG8gZXJyb3IgPSBjcmVhdGVOU0Vycm9yKGNhbGxiYWNrRXJyb3JDb2RlKGVycm9yQ29kZSkp
OwotICAgICAgICAgICAgaWYgKGVycm9yQ29kZSA9PSBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJh
Y2s6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhl
IE93bmVyV2FzSW52YWxpZGF0ZWQgY2FsbGJhY2sgaXMgc3luY2hyb25vdXMuIFdlIGRvbid0IHdh
bnQgdG8gY2FsbCB0aGUgYmxvY2sgZnJvbSB3aXRoaW4gaXQKLSAgICAgICAgICAgICAgICAvLyBi
ZWNhdXNlIHRoYXQgY2FuIHRyaWdnZXIgcmUtZW50cmFuY3kgYnVncyBpbiBXZWJLaXQuCi0gICAg
ICAgICAgICAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIGV2ZW4gYmV0dGVyIGlmIEdlbmVyaWND
YWxsYmFjayBkaWQgdGhpcyBmb3IgdXMuCi0gICAgICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW2hhbmRsZXIsIGVycm9yXSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShpZCwgTlNFcnJvciAqKSloYW5k
bGVyLmdldCgpOwotICAgICAgICAgICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwgZXJyb3IuZ2V0
KCkpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKGlkLCBO
U0Vycm9yICopKWhhbmRsZXIuZ2V0KCk7Ci0gICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwgZXJy
b3IuZ2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KICAgICAgICAgYXV0
byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWhhbmRsZXIuZ2V0KCk7CiAg
ICAgICAgIGlmIChkZXRhaWxzKSB7CiAgICAgICAgICAgICBBU1NFUlQoIXNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSk7CkBAIC05OTYsNyArOTc4LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0Vycm9yPiBu
c0Vycm9yRnJvbUV4Y2VwdGlvbkRldGFpbHMoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGUKICAg
ICAvLyBjb250YWlucyByZWNlbnQgdXBkYXRlcy4gSWYgd2UgZXZlciBoYXZlIGEgVUktc2lkZSBz
bmFwc2hvdCBtZWNoYW5pc20gb24gbWFjT1MsIHdlIHdpbGwgbmVlZCB0byBmYWN0b3IKICAgICAv
LyBpbiBzbmFwc2hvdENvbmZpZ3VyYXRpb24uYWZ0ZXJTY3JlZW5VcGRhdGVzIGF0IHRoYXQgdGlt
ZS4KICAgICBfcGFnZS0+dGFrZVNuYXBzaG90KFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QocmVj
dEluVmlld0Nvb3JkaW5hdGVzKSwgYml0bWFwU2l6ZSwgV2ViS2l0OjpTbmFwc2hvdE9wdGlvbnNJ
blZpZXdDb29yZGluYXRlcywgW2hhbmRsZXIsIHNuYXBzaG90V2lkdGgsIGltYWdlSGVpZ2h0XShj
b25zdCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZUhhbmRsZSwgV2ViS2l0
OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yQ29kZSkgewotICAgICAgICBpZiAoZXJyb3JDb2Rl
ICE9IFdlYktpdDo6U2NyaXB0VmFsdWVDYWxsYmFjazo6RXJyb3I6Ok5vbmUpIHsKKyAgICAgICAg
aWYgKGVycm9yQ29kZSAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpIHsKICAg
ICAgICAgICAgIGF1dG8gZXJyb3IgPSBjcmVhdGVOU0Vycm9yKGNhbGxiYWNrRXJyb3JDb2RlKGVy
cm9yQ29kZSkpOwogICAgICAgICAgICAgaGFuZGxlcihuaWwsIGVycm9yLmdldCgpKTsKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IGI3YjgxNzVjZjAzNWVkZTA4ZWUxNDk1ZjRjMzY3NTgzMTZiZDhkOGYuLjQwNGRkZDIwMTRm
ZmQ3NmFmNzRjNjg5ZWI4MmRmMGFkM2MyZWQ4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtNDA4MSwxOCArNDA4MSwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpCiAgICAgICAgIGxhdW5jaFByb2Nl
c3MoeyB9LCBQcm9jZXNzTGF1bmNoUmVhc29uOjpJbml0aWFsUHJvY2Vzcyk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoUnVuSmF2YVNjcmlwdFBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGNv
bnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYgY2FsbGJhY2tGdW5j
dGlvbikKIHsKICAgICBydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoV1RGTW92ZShw
YXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRX
b3JsZCgpLCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5Ojpy
dW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGNvbnN0IE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+Jik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICAvLyBGb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0
eSBzdXBwb3J0IHJ1bm5pbmcgc2NyaXB0IGluIGEgV2ViVmlldyB3aGljaCBoYXMgbm90IGRvbmUg
YW55IGxvYWRzIHlldHMuCiAgICAgbGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwog
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rp
b24obnVsbHB0ciwgeyB9LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKKyAgICAgICAg
Y2FsbGJhY2tGdW5jdGlvbihudWxscHRyLCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC00MTAwLDEyICs0MTAwLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0
SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocGFnZUNsaWVudCgpLmNhblRha2VGb3JlZ3JvdW5k
QXNzZXJ0aW9ucygpKQogICAgICAgICBhY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
Zm9yZWdyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5T
Y3JpcHRXb3JsZCJfcyk7Ci0gICAgZWxzZQogI2VuZGlmCi0gICAgICAgIGFjdGl2aXR5ID0gbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cnVu
SmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkIl9zKTsKIAotICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBXVEZNb3ZlKGFj
dGl2aXR5KSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluRnJh
bWVJblNjcmlwdFdvcmxkKHBhcmFtZXRlcnMsIGZyYW1lSUQsIHdvcmxkLndvcmxkRGF0YSgpLCBj
YWxsYmFja0lEKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpS
dW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQocGFyYW1ldGVycywgZnJhbWVJRCwgd29y
bGQud29ybGREYXRhKCkpLCBbYWN0aXZpdHkgPSBXVEZNb3ZlKGFjdGl2aXR5KSwgY2FsbGJhY2tG
dW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbildIChjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGFSZWZlcmVuY2UsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMp
IG11dGFibGUgeworICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKKyAgICAgICAgZGF0YS5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKKyAgICAgICAgZGF0
YS5hcHBlbmQoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKKyAg
ICAgICAgY2FsbGJhY2tGdW5jdGlvbihBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQo
V1RGTW92ZShkYXRhKSkucHRyKCksIGRldGFpbHMpOworICAgIH0pOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpGdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1
bmN0aW9uKQpAQCAtNzE2MCwyNiArNzE2Miw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnZhbGlk
YXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIGNhbGxiYWNrLT5p
bnZhbGlkYXRlKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNr
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgT3B0aW9uYWw8RXhjZXB0
aW9uRGV0YWlscz4gZGV0YWlscywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQotewotICAgIGF1dG8g
Y2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFNjcmlwdFZhbHVlQ2FsbGJhY2s+KGNhbGxiYWNr
SUQpOwotICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAgICAgLy8gRklYTUU6IExvZyBlcnJvciBv
ciBhc3NlcnQuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YVJlZmVyZW5j
ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShudWxscHRyLCBkZXRhaWxzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShk
YXRhUmVmZXJlbmNlLnNpemUoKSk7Ci0gICAgZGF0YS5hcHBlbmQoZGF0YVJlZmVyZW5jZS5kYXRh
KCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKLQotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJh
Y2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KFdURk1v
dmUoZGF0YSkpLnB0cigpLCBkZXRhaWxzKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1
dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHBhZ2VSZWN0cywgZG91Ymxl
IHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29uc3QgRmxvYXRCb3hFeHRlbnQmIGNvbXB1
dGVkUGFnZU1hcmdpbiwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJh
Y2sgPSBtX2NhbGxiYWNrcy50YWtlPENvbXB1dGVkUGFnZXNDYWxsYmFjaz4oY2FsbGJhY2tJRCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDgyMTllYmI1M2IxY2Zl
MzYzOWYyZGMxNmM3N2M5MWZjZjVmZWIwMWIuLjhiYjA1OTBiMTE2OGI4YzM5ZWE2NTk2MDVhZmQ4
MjE4MWE4OGI3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0z
NjUsNyArMzY1LDYgQEAgZW51bSBjbGFzcyBXZWJDb250ZW50TW9kZSA6IHVpbnQ4X3Q7CiB0eXBl
ZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6OkRhdGEqPiBEYXRhQ2FsbGJhY2s7CiB0eXBlZGVmIEdl
bmVyaWNDYWxsYmFjazx1aW50NjRfdD4gVW5zaWduZWRDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJp
Y0NhbGxiYWNrPGNvbnN0IFN0cmluZyY+IFN0cmluZ0NhbGxiYWNrOwotdHlwZWRlZiBHZW5lcmlj
Q2FsbGJhY2s8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpF
eGNlcHRpb25EZXRhaWxzPj4gU2NyaXB0VmFsdWVDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0Nh
bGxiYWNrPGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJj4gRm9udEF0dHJpYnV0ZXNDYWxs
YmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyY+IFNlbGVjdGlvbkNvbnRleHRDYWxsYmFjazsKIHR5cGVkZWYgR2Vu
ZXJpY0NhbGxiYWNrPGJvb2w+IEJvb2xDYWxsYmFjazsKQEAgLTExNDAsOCArMTEzOSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9p
ZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0U291
cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3Ry
aW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9m
RnJhbWUoV2ViRnJhbWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXZWJD
b3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWls
cz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwotICAgIHZvaWQg
cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzJiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIEFQSTo6Q29u
dGVudFdvcmxkJiwgRnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV2ViQ29yZTo6UnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSosIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+
JiYpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFdlYkNvcmU6
OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4sIEFQSTo6Q29udGVudFdvcmxkJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRl
dGFpbHM+Jik+JiYpOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2FsbGJhY2s+
JiYpOwogCiAgICAgZmxvYXQgaGVhZGVySGVpZ2h0KFdlYkZyYW1lUHJveHkmKTsKQEAgLTIxMzAs
NyArMjEyOSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBib29sQ2FsbGJhY2soYm9vbCByZXN1bHQs
IENhbGxiYWNrSUQpOwogICAgIHZvaWQgc3RyaW5nQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgQ2Fs
bGJhY2tJRCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJRCk7
Ci0gICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0lEKTsKICAgICB2
b2lkIGNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4m
LCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBjb25zdCBXZWJDb3JlOjpGbG9h
dEJveEV4dGVudCYgY29tcHV0ZWRQYWdlTWFyZ2luLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHZh
bGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgQ2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCB1bnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90LCBDYWxsYmFja0lEKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCA0OWQyNjRkYjZiMTZlOWY2NzIxYmMyNWIyY2I1MDMwZTMyZGI0ODI4Li40MjE0NWYyYzVjMDRi
MzM4YWIwNDFmYjA2ZDY5Njg2YzJmNTc5MTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xNjcsNyArMTY3LDYgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBTdHJpbmdDYWxsYmFjayhTdHJpbmcgcmVzdWx0U3Ry
aW5nLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBCb29sQ2FsbGJhY2soYm9v
bCByZXN1bHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEludmFsaWRhdGVT
dHJpbmdDYWxsYmFjayhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBTY3JpcHRW
YWx1ZUNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBPcHRpb25hbDxXZWJD
b3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKICAgICBDb21wdXRlZFBhZ2VzQ2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+
IHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgV2ViQ29yZTo6
UmVjdEVkZ2VzPGZsb2F0PiBjb21wdXRlZFBhZ2VNYXJnaW4sIFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogICAgIFZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKFN0cmluZyBjb21tYW5kLCBi
b29sIGlzRW5hYmxlZCwgaW50MzJfdCBzdGF0ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiAgICAgVW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCA4YjJjN2ZhOGZmMzFlMWM0YzFjZDA3YmNkYjYyNmYxN2MyOGVhNDBhLi5h
NTJlM2Y1MmU5ZDI1ZDM0OTg2MDYxZGU3ZmU1MmEwYjMzMDNjZWE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzQ2MywyMyArMzQ2MywzMyBA
QCBLZXlib2FyZFVJTW9kZSBXZWJQYWdlOjprZXlib2FyZFVJTW9kZSgpCiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEtleWJvYXJkVUlNb2RlPigoZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA/IEtl
eWJvYXJkQWNjZXNzRnVsbCA6IEtleWJvYXJkQWNjZXNzRGVmYXVsdCkgfCAobV90YWJUb0xpbmtz
ID8gS2V5Ym9hcmRBY2Nlc3NUYWJzVG9MaW5rcyA6IDApKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpy
dW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzLCBDb250ZW50V29ybGRJZGVudGlmaWVyIHdvcmxkSWRlbnRpZmllciwgQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBm
cmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBDb250ZW50V29ybGRJ
ZGVudGlmaWVyIHdvcmxkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRh
aWxzPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIC8vIE5PVEU6IFdlIG5lZWQgdG8g
YmUgY2FyZWZ1bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0aGF0IHRoZSBvYmplY3RzIHdlIGRlcGVu
ZCBvbiBkb24ndAogICAgIC8vIGRpc2FwcGVhciBkdXJpbmcgc2NyaXB0IGV4ZWN1dGlvbi4KIAog
ICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5jb3JlRnJhbWUoKSkgewotICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soeyB9LCBFeGNlcHRpb25E
ZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQ6IFRhcmdldCBmcmFtZSBjb3Vs
ZCBub3QgYmUgZm91bmQgaW4gdGhlIHBhZ2UiX3MsIDAsIDAsIEV4Y2VwdGlvbkRldGFpbHM6OlR5
cGU6OkludmFsaWRUYXJnZXRGcmFtZSB9LCBjYWxsYmFja0lEKSk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZh
U2NyaXB0OiBUYXJnZXQgZnJhbWUgY291bGQgbm90IGJlIGZvdW5kIGluIHRoZSBwYWdlIl9zLCAw
LCAwLCBFeGNlcHRpb25EZXRhaWxzOjpUeXBlOjpJbnZhbGlkVGFyZ2V0RnJhbWUgfSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvKiB3b3JsZCA9IG1fdXNlckNvbnRlbnRDb250
cm9sbGVyLT53b3JsZEZvcklkZW50aWZpZXIod29ybGRJZGVudGlmaWVyKTsKICAgICBpZiAoIXdv
cmxkKSB7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVD
YWxsYmFjayh7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNj
cmlwdDogQ2Fubm90IGZpbmQgc3BlY2lmaWVkIGNvbnRlbnQgd29ybGQiX3MgfSwgY2FsbGJhY2tJ
RCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAi
VW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdDogQ2Fubm90IGZpbmQgc3BlY2lmaWVkIGNvbnRl
bnQgd29ybGQiX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlc29s
dmVGdW5jdGlvbiA9IFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHdvcmxk
ID0gbWFrZVJlZigqd29ybGQpLCBmcmFtZSA9IG1ha2VSZWYoKmZyYW1lKSwgY2FsbGJhY2tJRF0o
VmFsdWVPckV4Y2VwdGlvbiByZXN1bHQpIHsKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMp
CisgICAgaWYgKGZyYW1lLT5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlv
bnMoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIEV4Y2VwdGlvbkRldGFpbHMg
eyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBhIGZyYW1lIHRoYXQgaXMgbm90IGlu
IGFuIGFwcC1ib3VuZCBkb21haW4iX3MsIDAsIDAsIEV4Y2VwdGlvbkRldGFpbHM6OlR5cGU6OkFw
cEJvdW5kRG9tYWluIH0pOworICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX3BhZ2UtPm1h
aW5GcmFtZSgpLmRvY3VtZW50KCkpCisgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIkln
bm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoTG9hZGluZywgInJ1bkphdmFT
Y3JpcHQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBk
b21haW4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgYXV0byByZXNv
bHZlRnVuY3Rpb24gPSBbd29ybGQgPSBtYWtlUmVmKCp3b3JsZCksIGZyYW1lID0gbWFrZVJlZigq
ZnJhbWUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAo
VmFsdWVPckV4Y2VwdGlvbiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWU7CiAgICAgICAgIGlmIChyZXN1
bHQpIHsKICAgICAgICAgICAgIHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKGZyYW1lLT5qc0NvbnRleHRGb3JXb3JsZCh3b3JsZC5wdHIoKSksCkBA
IC0zNDk0LDIyICszNTA0LDEzIEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFt
ZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAgICAgICAgIGlm
ICghcmVzdWx0KQogICAgICAgICAgICAgZGV0YWlscyA9IHJlc3VsdC5lcnJvcigpOwogCi0gICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhkYXRh
UmVmZXJlbmNlLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGRhdGFSZWZlcmVuY2UsIGRldGFpbHMpOwogICAgIH07Ci0jaWYgRU5BQkxFKEFQUF9CT1VO
RF9ET01BSU5TKQotICAgIGlmIChmcmFtZS0+c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFj
eVByb3RlY3Rpb25zKCkpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpT
Y3JpcHRWYWx1ZUNhbGxiYWNrKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhl
Y3V0ZSBKYXZhU2NyaXB0IGluIGEgZnJhbWUgdGhhdCBpcyBub3QgaW4gYW4gYXBwLWJvdW5kIGRv
bWFpbiJfcywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6QXBwQm91bmREb21haW4gfSwg
Y2FsbGJhY2tJRCkpOwotICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5G
cmFtZSgpLmRvY3VtZW50KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9y
aW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoTG9hZGluZywgInJ1bkphdmFTY3Jp
cHQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21h
aW4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgogICAgIEpTTG9ja0hvbGRlciBs
b2NrKGNvbW1vblZNKCkpOwogICAgIGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0
ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKHJlc29sdmVGdW5jdGlvbikpOwogfQogCi12b2lk
IFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgY29uc3Qgc3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmlu
Zz4mIHdvcmxkRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpydW5K
YXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIGNv
bnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZERhdGEs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBhdXRvKiB3ZWJGcmFtZSA9IGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS53ZWJGcmFtZSgqZnJhbWVJRCkgOiAmbWFpbldlYkZyYW1lKCk7CiAKQEAgLTM1MTksNyAr
MzUyMCw3IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxk
KFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1lCiAgICAgICAgICAgICBmcmFtZS0+bG9h
ZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hHbG9iYWxPYmplY3RBdmFpbGFibGUoY29yZVdvcmxkKTsK
ICAgICB9CiAKLSAgICBydW5KYXZhU2NyaXB0KHdlYkZyYW1lLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCB3b3JsZERhdGEuZmlyc3QsIGNhbGxiYWNrSUQpOworICAgIHJ1bkphdmFTY3JpcHQod2ViRnJh
bWUsIFdURk1vdmUocGFyYW1ldGVycyksIHdvcmxkRGF0YS5maXJzdCwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNTdHJpbmcoQ29u
dGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcyBpbmNsdWRlQ2hpbGRGcmFtZXMsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAppbmRleCAyYTQ2Mzc0ZjY3NzY0MGUwZWU0NzI0ZDZlNzNhOTUwNzMzMDhiOWUwLi5iMTll
NTgzMDFkMmYyMTU2ZjZhNDVjYmVkNWIwOWQ3OGNlZjk4MDQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNTQ4LDggKzE1NDgsOCBAQCBwcml2YXRl
OgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDYWxsYmFja0lEKTsKICAg
ICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJh
Y2tJRCk7CiAgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdl
YkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbnRlbnRXb3JsZElkZW50aWZpZXIs
IENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxk
KFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4sIGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBT
dHJpbmc+JiB3b3JsZERhdGEsIENhbGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdChX
ZWJGcmFtZSosIFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbnRlbnRXb3Js
ZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJik7Cisg
ICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMmJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwg
Y29uc3Qgc3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxkRGF0
YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKICAgICB2b2lkIGZv
cmNlUmVwYWludChDYWxsYmFja0lEKTsKICAgICB2b2lkIHRha2VTbmFwc2hvdChXZWJDb3JlOjpJ
bnRSZWN0IHNuYXBzaG90UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJf
dCBvcHRpb25zLCBDYWxsYmFja0lEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMzdiM2MzMzJhZjU1MGNlNjI3
OThkMzI1YTEwN2U2NjE1M2VjZTFkNS4uMGM5ZDk2N2I2Y2Q2NDQ1NTFlYWU3M2EzODlkNjI2YWI2
NzFjY2FhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMjAsOCArMjIwLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZFR5cGUKICAgICBHZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgR2V0V2ViQXJjaGl2ZU9m
RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBzZW5kV2l0aEFz
eW5jUmVwbHkgaW5zdGVhZCBvZiBjYWxsYmFja0lEcwotICAgIFJ1bkphdmFTY3JpcHRJbkZyYW1l
SW5TY3JpcHRXb3JsZChzdHJ1Y3QgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMgcGFy
YW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6
OnBhaXI8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+IHdvcmxkLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBSdW5KYXZhU2NyaXB0SW5GcmFtZUluU2Ny
aXB0V29ybGQoc3RydWN0IFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtZXRl
cnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpwYWly
PFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiB3b3JsZCkgLT4gKElQQzo6
RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRh
aWxzPiBkZXRhaWxzKSBBc3luYwogCiAgICAgRm9yY2VSZXBhaW50KFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogICAgIFNlbGVjdEFsbCgpCg==
</data>
<flag name="commit-queue"
          id="426564"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410587</attachid>
            <date>2020-10-05 16:39:39 -0700</date>
            <delta_ts>2020-10-05 16:59:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217351-20201005163938.patch</filename>
            <type>text/plain</type>
            <size>23178</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFjYWFkNjA2ZGYxMDQ1ZGM2
NzI4NmNkMmU3ZjE5ZDZhMjZjM2Q2YzkuLjBkNTA0Mzg3ZTk0YjgzN2RhNDkxMGQ2MDY2YTczNTg4
ZjRmMjYxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMTAtMDUgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2Ugc2VuZFdp
dGhBc3luY1JlcGx5IHRvIGV2YWx1YXRlIEphdmFTY3JpcHQgaW4gYSBXZWJQYWdlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTczNTEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gbWVh
bmluZ2Z1bCBiZWhhdmlvciwgYnV0IGNvbXBsZXhpdHkgaXMgcmVtb3ZlZC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlUnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6YXNBc3luY0Z1bmN0
aW9uOndpdGhTb3VyY2VVUkw6d2l0aEFyZ3VtZW50czpmb3JjZVVzZXJHZXN0dXJlOmluRnJhbWU6
aW5Xb3JsZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHRha2VT
bmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjAtMTAtMDUgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2Ugc2VuZFdpdGhB
c3luY1JlcGx5IGZvciBEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggZmNiYTg0NDI5ZGQ4Njkz
YWNlNWJkOTUwMTA3M2Y4OGFjMTAxYzVlOS4uNGE0YWQ3MWEyZTJmZjhlMTE2YmI5NTEyZGNmNTE5
NGU5NTY4NWVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBA
IC0yNDg5LDggKzI0ODksOCBAQCB2b2lkIFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VS
ZWYgcGFnZSwgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCiAKIHZvaWQgV0tQYWdlUnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3Jp
cHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZVJ1bkphdmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFj
aykKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHRv
SW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwg
dHJ1ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBy
ZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNr
QmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgY2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUp
LCAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgPyB0b0FQSShBUEk6OkVycm9y
OjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250ZXh0KTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgVVJM
IHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6
RXhjZXB0aW9uRGV0YWlscz4pIHsKKyAgICAgICAgY2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUp
LCBudWxscHRyLCBjb250ZXh0KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggZTJkMmYzZWVmNTdhNmJhOGVjMGIz
MzU1ZjAwN2JiZTg0NWFlNmRkZC4uNWY4YzQ1ZTJiN2UzNDIxNGZmMjMyMjUwY2VmMjBiNTZkMTY2
MDBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCkBAIC05MzIsMjggKzkzMiwxMCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IG5zRXJy
b3JGcm9tRXhjZXB0aW9uRGV0YWlscyhjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZQogICAgICAg
ICAgICAgZnJhbWVJRCA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllclR5cGU+KGlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIF9wYWdlLT5ydW5KYXZhU2NyaXB0
SW5GcmFtZUluU2NyaXB0V29ybGQoeyBqYXZhU2NyaXB0U3RyaW5nLCBzb3VyY2VVUkwsICEhYXNB
c3luY0Z1bmN0aW9uLCBXVEZNb3ZlKGFyZ3VtZW50c01hcCksICEhZm9yY2VVc2VyR2VzdHVyZSB9
LCBmcmFtZUlELCAqd29ybGQtPl9jb250ZW50V29ybGQuZ2V0KCksIFtoYW5kbGVyXShBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJD
b3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJh
Y2s6OkVycm9yIGVycm9yQ29kZSkgeworICAgIF9wYWdlLT5ydW5KYXZhU2NyaXB0SW5GcmFtZUlu
U2NyaXB0V29ybGQoeyBqYXZhU2NyaXB0U3RyaW5nLCBzb3VyY2VVUkwsICEhYXNBc3luY0Z1bmN0
aW9uLCBXVEZNb3ZlKGFyZ3VtZW50c01hcCksICEhZm9yY2VVc2VyR2VzdHVyZSB9LCBmcmFtZUlE
LCAqd29ybGQtPl9jb250ZW50V29ybGQuZ2V0KCksIFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNl
cHRpb25EZXRhaWxzPiBkZXRhaWxzKSB7CiAgICAgICAgIGlmICghaGFuZGxlcikKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZXJyb3JDb2RlICE9IFdlYktpdDo6U2NyaXB0VmFs
dWVDYWxsYmFjazo6RXJyb3I6Ok5vbmUpIHsKLSAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBjcmVh
dGVOU0Vycm9yKGNhbGxiYWNrRXJyb3JDb2RlKGVycm9yQ29kZSkpOwotICAgICAgICAgICAgaWYg
KGVycm9yQ29kZSA9PSBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yOjpPd25lcldh
c0ludmFsaWRhdGVkKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIE93bmVyV2FzSW52YWxpZGF0
ZWQgY2FsbGJhY2sgaXMgc3luY2hyb25vdXMuIFdlIGRvbid0IHdhbnQgdG8gY2FsbCB0aGUgYmxv
Y2sgZnJvbSB3aXRoaW4gaXQKLSAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHRoYXQgY2FuIHRy
aWdnZXIgcmUtZW50cmFuY3kgYnVncyBpbiBXZWJLaXQuCi0gICAgICAgICAgICAgICAgLy8gRklY
TUU6IEl0IHdvdWxkIGJlIGV2ZW4gYmV0dGVyIGlmIEdlbmVyaWNDYWxsYmFjayBkaWQgdGhpcyBm
b3IgdXMuCi0gICAgICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgW2hhbmRsZXIsIGVycm9yXSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gcmF3
SGFuZGxlciA9ICh2b2lkICheKShpZCwgTlNFcnJvciAqKSloYW5kbGVyLmdldCgpOwotICAgICAg
ICAgICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwgZXJyb3IuZ2V0KCkpOwotICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWhhbmRsZXIu
Z2V0KCk7Ci0gICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwgZXJyb3IuZ2V0KCkpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KICAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZv
aWQgKF4pKGlkLCBOU0Vycm9yICopKWhhbmRsZXIuZ2V0KCk7CiAgICAgICAgIGlmIChkZXRhaWxz
KSB7CiAgICAgICAgICAgICBBU1NFUlQoIXNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CkBAIC05OTYs
NyArOTc4LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0Vycm9yPiBuc0Vycm9yRnJvbUV4Y2VwdGlv
bkRldGFpbHMoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGUKICAgICAvLyBjb250YWlucyByZWNl
bnQgdXBkYXRlcy4gSWYgd2UgZXZlciBoYXZlIGEgVUktc2lkZSBzbmFwc2hvdCBtZWNoYW5pc20g
b24gbWFjT1MsIHdlIHdpbGwgbmVlZCB0byBmYWN0b3IKICAgICAvLyBpbiBzbmFwc2hvdENvbmZp
Z3VyYXRpb24uYWZ0ZXJTY3JlZW5VcGRhdGVzIGF0IHRoYXQgdGltZS4KICAgICBfcGFnZS0+dGFr
ZVNuYXBzaG90KFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QocmVjdEluVmlld0Nvb3JkaW5hdGVz
KSwgYml0bWFwU2l6ZSwgV2ViS2l0OjpTbmFwc2hvdE9wdGlvbnNJblZpZXdDb29yZGluYXRlcywg
W2hhbmRsZXIsIHNuYXBzaG90V2lkdGgsIGltYWdlSGVpZ2h0XShjb25zdCBXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZUhhbmRsZSwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yQ29kZSkgewotICAgICAgICBpZiAoZXJyb3JDb2RlICE9IFdlYktpdDo6U2NyaXB0
VmFsdWVDYWxsYmFjazo6RXJyb3I6Ok5vbmUpIHsKKyAgICAgICAgaWYgKGVycm9yQ29kZSAhPSBX
ZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpIHsKICAgICAgICAgICAgIGF1dG8gZXJy
b3IgPSBjcmVhdGVOU0Vycm9yKGNhbGxiYWNrRXJyb3JDb2RlKGVycm9yQ29kZSkpOwogICAgICAg
ICAgICAgaGFuZGxlcihuaWwsIGVycm9yLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
aW5kZXggZDhiM2YzYzE5OTkyODhmMmExOGRhMzdiNmYyNGE5YzhhM2MzY2YxYS4uYTVmYTNmMjhj
NjllYmU0M2FiM2EwMjJiM2UyMmM0Njk1MjFjN2Q5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTM5MTksNyArMzkxOSw3
IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0X2luX3dvcmxkKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyCiAKICAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0g
YWRvcHRHUmVmKGdfdGFza19uZXcod2ViVmlldywgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2Vy
RGF0YSkpOwogICAgIGF1dG8gd29ybGQgPSBBUEk6OkNvbnRlbnRXb3JsZDo6c2hhcmVkV29ybGRX
aXRoTmFtZShTdHJpbmc6OmZyb21VVEY4KHdvcmxkTmFtZSkpOwotICAgIGdldFBhZ2Uod2ViVmll
dykucnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHsgU3RyaW5nOjpmcm9tVVRGOChz
Y3JpcHQpLCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlIH0sIFdURjo6bnVsbG9w
dCwgd29ybGQuZ2V0KCksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oQVBJOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWls
cz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgZ2V0UGFnZSh3
ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoeyBTdHJpbmc6OmZyb21V
VEY4KHNjcmlwdCksIFVSTCB7IH0sIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRydWUgfSwgV1RGOjpu
dWxsb3B0LCB3b3JsZC5nZXQoKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBjb25zdCBPcHRpb25hbDxFeGNl
cHRpb25EZXRhaWxzPiYgZGV0YWlscykgewogICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2Vw
dGlvbkRldGFpbHM7CiAgICAgICAgIGlmIChkZXRhaWxzKQogICAgICAgICAgICAgZXhjZXB0aW9u
RGV0YWlscyA9ICpkZXRhaWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggYjdiODE3NWNmMDM1ZWRlMDhlZTE0OTVmNGMzNjc1ODMxNmJkOGQ4Zi4uNDA0ZGRk
MjAxNGZmZDc2YWY3NGM2ODllYjgyZGYwYWQzYzJlZDhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00MDgxLDE4ICs0MDgxLDE4IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgbGF1bmNo
UHJvY2Vzcyh7IH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNzKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKQogewogICAgIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29u
dGVudFdvcmxkKCksIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQsIFdURjo6RnVuY3Rpb248dm9pZChB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJv
eHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgY29uc3QgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWls
cz4mKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIC8vIEZvciBiYWNrd2FyZC1jb21wYXRp
YmlsaXR5IHN1cHBvcnQgcnVubmluZyBzY3JpcHQgaW4gYSBXZWJWaWV3IHdoaWNoIGhhcyBub3Qg
ZG9uZSBhbnkgbG9hZHMgeWV0cy4KICAgICBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5
KCk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tG
dW5jdGlvbihudWxscHRyLCB7IH0sIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOworICAg
ICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxwdHIsIHsgfSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTQxMDAsMTIgKzQxMDAsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChwYWdlQ2xpZW50KCkuY2FuVGFrZUZvcmVn
cm91bmRBc3NlcnRpb25zKCkpCiAgICAgICAgIGFjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJh
bWVJblNjcmlwdFdvcmxkIl9zKTsKLSAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgYWN0aXZpdHkg
PSBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQiX3MpOwogCi0gICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIFdURk1v
dmUoYWN0aXZpdHkpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0
SW5GcmFtZUluU2NyaXB0V29ybGQocGFyYW1ldGVycywgZnJhbWVJRCwgd29ybGQud29ybGREYXRh
KCksIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2U6OlJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChwYXJhbWV0ZXJzLCBmcmFtZUlE
LCB3b3JsZC53b3JsZERhdGEoKSksIFthY3Rpdml0eSA9IFdURk1vdmUoYWN0aXZpdHkpLCBjYWxs
YmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKV0gKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0
YWlscykgbXV0YWJsZSB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgICAgICBk
YXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGF0YVJlZmVyZW5jZS5zaXplKCkpOworICAgICAg
ICBkYXRhLmFwcGVuZChkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkp
OworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjph
ZG9wdChXVEZNb3ZlKGRhdGEpKS5wdHIoKSwgZGV0YWlscyk7CisgICAgfSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OkZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCkBAIC03MTYwLDI2ICs3MTYyLDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omlu
dmFsaWRhdGVTdHJpbmdDYWxsYmFjayhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgY2FsbGJh
Y2stPmludmFsaWRhdGUoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2Fs
bGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBPcHRpb25hbDxF
eGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi17Ci0gICAg
YXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U2NyaXB0VmFsdWVDYWxsYmFjaz4oY2Fs
bGJhY2tJRCk7Ci0gICAgaWYgKCFjYWxsYmFjaykgewotICAgICAgICAvLyBGSVhNRTogTG9nIGVy
cm9yIG9yIGFzc2VydC4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChkYXRhUmVm
ZXJlbmNlLmlzRW1wdHkoKSkgewotICAgICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0
aFJldHVyblZhbHVlKG51bGxwdHIsIGRldGFpbHMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKLSAgICBkYXRhLmFwcGVuZChkYXRhUmVmZXJlbmNl
LmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOwotCi0gICAgY2FsbGJhY2stPnBlcmZvcm1D
YWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQo
V1RGTW92ZShkYXRhKSkucHRyKCksIGRldGFpbHMpOwotfQotCiB2b2lkIFdlYlBhZ2VQcm94eTo6
Y29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFnZVJlY3RzLCBk
b3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBjb25zdCBGbG9hdEJveEV4dGVudCYg
Y29tcHV0ZWRQYWdlTWFyZ2luLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBj
YWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8Q29tcHV0ZWRQYWdlc0NhbGxiYWNrPihjYWxsYmFj
a0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggODIxOWViYjUz
YjFjZmUzNjM5ZjJkYzE2Yzc3YzkxZmNmNWZlYjAxYi4uOGJiMDU5MGIxMTY4YjhjMzllYTY1OTYw
NWFmZDgyMTgxYTg4YjdlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTM2NSw3ICszNjUsNiBAQCBlbnVtIGNsYXNzIFdlYkNvbnRlbnRNb2RlIDogdWludDhfdDsK
IHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6RGF0YSo+IERhdGFDYWxsYmFjazsKIHR5cGVk
ZWYgR2VuZXJpY0NhbGxiYWNrPHVpbnQ2NF90PiBVbnNpZ25lZENhbGxiYWNrOwogdHlwZWRlZiBH
ZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJj4gU3RyaW5nQ2FsbGJhY2s7Ci10eXBlZGVmIEdl
bmVyaWNDYWxsYmFjazxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNv
cmU6OkV4Y2VwdGlvbkRldGFpbHM+PiBTY3JpcHRWYWx1ZUNhbGxiYWNrOwogdHlwZWRlZiBHZW5l
cmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmPiBGb250QXR0cmlidXRl
c0NhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJj4gU2VsZWN0aW9uQ29udGV4dENhbGxiYWNrOwogdHlwZWRl
ZiBHZW5lcmljQ2FsbGJhY2s8Ym9vbD4gQm9vbENhbGxiYWNrOwpAQCAtMTE0MCw4ICsxMTM5LDgg
QEAgcHVibGljOgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShGdW5jdGlv
bjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBn
ZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25z
dCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRXZWJBcmNo
aXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIFdURjo6RnVuY3Rpb248dm9pZCAo
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25E
ZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7Ci0gICAg
dm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMmJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgQVBJ
OjpDb250ZW50V29ybGQmLCBGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXZWJDb3JlOjpSdW5K
YXZhU2NyaXB0UGFyYW1ldGVycyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWls
cz4mKT4mJik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoV2Vi
Q29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyPiwgQVBJOjpDb250ZW50V29ybGQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscz4mKT4mJik7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxs
YmFjaz4mJik7CiAKICAgICBmbG9hdCBoZWFkZXJIZWlnaHQoV2ViRnJhbWVQcm94eSYpOwpAQCAt
MjEzMCw3ICsyMTI5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJvb2xDYWxsYmFjayhib29sIHJl
c3VsdCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcm
LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhDYWxsYmFj
a0lEKTsKLSAgICB2b2lkIHNjcmlwdFZhbHVlQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrSUQpOwog
ICAgIHZvaWQgY29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRS
ZWN0PiYsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0Qm94RXh0ZW50JiBjb21wdXRlZFBhZ2VNYXJnaW4sIENhbGxiYWNrSUQpOwogICAgIHZv
aWQgdmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBDYWxs
YmFja0lEKTsKICAgICB2b2lkIHVuc2lnbmVkQ2FsbGJhY2sodWludDY0X3QsIENhbGxiYWNrSUQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IDQ5ZDI2NGRiNmIxNmU5ZjY3MjFiYzI1YjJjYjUwMzBlMzJkYjQ4MjguLjQyMTQ1ZjJj
NWMwNGIzMzhhYjA0MWZiMDZkNjk2ODZjMmY1NzkxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE2Nyw3ICsxNjcsNiBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFN0cmluZ0NhbGxiYWNrKFN0cmluZyByZXN1
bHRTdHJpbmcsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEJvb2xDYWxsYmFj
ayhib29sIHJlc3VsdCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgSW52YWxp
ZGF0ZVN0cmluZ0NhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIFNj
cmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIE9wdGlvbmFs
PFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogICAgIENvbXB1dGVkUGFnZXNDYWxsYmFjayhWZWN0b3I8V2ViQ29yZTo6SW50
UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBXZWJD
b3JlOjpSZWN0RWRnZXM8ZmxvYXQ+IGNvbXB1dGVkUGFnZU1hcmdpbiwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiAgICAgVmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soU3RyaW5nIGNvbW1h
bmQsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0YXRlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKICAgICBVbnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJlc3VsdCwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IDhiMmM3ZmE4ZmYzMWUxYzRjMWNkMDdiY2RiNjI2ZjE3YzI4ZWE0
MGEuLmE1MmUzZjUyZTlkMjVkMzQ5ODYwNjFkZTdmZTUyYTBiMzMwM2NlYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zNDYzLDIzICszNDYz
LDMzIEBAIEtleWJvYXJkVUlNb2RlIFdlYlBhZ2U6OmtleWJvYXJkVUlNb2RlKCkKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRVSU1vZGU+KChmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVk
ID8gS2V5Ym9hcmRBY2Nlc3NGdWxsIDogS2V5Ym9hcmRBY2Nlc3NEZWZhdWx0KSB8IChtX3RhYlRv
TGlua3MgPyBLZXlib2FyZEFjY2Vzc1RhYnNUb0xpbmtzIDogMCkpOwogfQogCi12b2lkIFdlYlBh
Z2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMsIENvbnRlbnRXb3JsZElkZW50aWZpZXIgd29ybGRJZGVudGlmaWVyLCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJh
bWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENvbnRlbnRX
b3JsZElkZW50aWZpZXIgd29ybGRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlv
bkRldGFpbHM+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgLy8gTk9URTogV2UgbmVl
ZCB0byBiZSBjYXJlZnVsIHdoZW4gcnVubmluZyBzY3JpcHRzIHRoYXQgdGhlIG9iamVjdHMgd2Ug
ZGVwZW5kIG9uIGRvbid0CiAgICAgLy8gZGlzYXBwZWFyIGR1cmluZyBzY3JpcHQgZXhlY3V0aW9u
LgogCiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgpKSB7Ci0gICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayh7IH0sIEV4Y2Vw
dGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdDogVGFyZ2V0IGZyYW1l
IGNvdWxkIG5vdCBiZSBmb3VuZCBpbiB0aGUgcGFnZSJfcywgMCwgMCwgRXhjZXB0aW9uRGV0YWls
czo6VHlwZTo6SW52YWxpZFRhcmdldEZyYW1lIH0sIGNhbGxiYWNrSUQpKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRl
IEphdmFTY3JpcHQ6IFRhcmdldCBmcmFtZSBjb3VsZCBub3QgYmUgZm91bmQgaW4gdGhlIHBhZ2Ui
X3MsIDAsIDAsIEV4Y2VwdGlvbkRldGFpbHM6OlR5cGU6OkludmFsaWRUYXJnZXRGcmFtZSB9KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8qIHdvcmxkID0gbV91c2VyQ29udGVu
dENvbnRyb2xsZXItPndvcmxkRm9ySWRlbnRpZmllcih3b3JsZElkZW50aWZpZXIpOwogICAgIGlm
ICghd29ybGQpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRW
YWx1ZUNhbGxiYWNrKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBK
YXZhU2NyaXB0OiBDYW5ub3QgZmluZCBzcGVjaWZpZWQgY29udGVudCB3b3JsZCJfcyB9LCBjYWxs
YmFja0lEKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWls
cyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0OiBDYW5ub3QgZmluZCBzcGVjaWZpZWQg
Y29udGVudCB3b3JsZCJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8g
cmVzb2x2ZUZ1bmN0aW9uID0gW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywg
d29ybGQgPSBtYWtlUmVmKCp3b3JsZCksIGZyYW1lID0gbWFrZVJlZigqZnJhbWUpLCBjYWxsYmFj
a0lEXShWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdCkgeworI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9N
QUlOUykKKyAgICBpZiAoZnJhbWUtPnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90
ZWN0aW9ucygpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0
YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGluIGEgZnJhbWUgdGhhdCBpcyBu
b3QgaW4gYW4gYXBwLWJvdW5kIGRvbWFpbiJfcywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlw
ZTo6QXBwQm91bmREb21haW4gfSk7CisgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fcGFn
ZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5n
LCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFp
bi4iKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChMb2FkaW5nLCAicnVu
SmF2YVNjcmlwdDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJv
dW5kIGRvbWFpbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBhdXRv
IHJlc29sdmVGdW5jdGlvbiA9IFt3b3JsZCA9IG1ha2VSZWYoKndvcmxkKSwgZnJhbWUgPSBtYWtl
UmVmKCpmcmFtZSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIChWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZTsKICAgICAgICAgaWYg
KHJlc3VsdCkgewogICAgICAgICAgICAgc2VyaWFsaXplZFJlc3VsdFZhbHVlID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoZnJhbWUtPmpzQ29udGV4dEZvcldvcmxkKHdvcmxkLnB0cigp
KSwKQEAgLTM0OTQsMjIgKzM1MDQsMTMgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdl
YkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKICAgICAg
ICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICBkZXRhaWxzID0gcmVzdWx0LmVycm9yKCk7CiAK
LSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNr
KGRhdGFSZWZlcmVuY2UsIGRldGFpbHMsIGNhbGxiYWNrSUQpKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZGF0YVJlZmVyZW5jZSwgZGV0YWlscyk7CiAgICAgfTsKLSNpZiBFTkFCTEUoQVBQ
X0JPVU5EX0RPTUFJTlMpCi0gICAgaWYgKGZyYW1lLT5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQ
cml2YWN5UHJvdGVjdGlvbnMoKSkgewotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0
byBleGVjdXRlIEphdmFTY3JpcHQgaW4gYSBmcmFtZSB0aGF0IGlzIG5vdCBpbiBhbiBhcHAtYm91
bmQgZG9tYWluIl9zLCAwLCAwLCBFeGNlcHRpb25EZXRhaWxzOjpUeXBlOjpBcHBCb3VuZERvbWFp
biB9LCBjYWxsYmFja0lEKSk7Ci0gICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+
bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAi
SWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4i
KTsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChMb2FkaW5nLCAicnVuSmF2
YVNjcmlwdDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5k
IGRvbWFpbiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2soY29tbW9uVk0oKSk7CiAgICAgZnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS5l
eGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3b3JsZC0+Y29yZVdvcmxk
KCksIFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUocmVzb2x2ZUZ1bmN0aW9uKSk7CiB9CiAK
LXZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFJ1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRpZmllciwg
U3RyaW5nPiYgd29ybGREYXRhLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6
OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgY29uc3Qgc3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxk
RGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8qIHdlYkZyYW1lID0gZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYkZyYW1lKCpmcmFtZUlEKSA6ICZtYWluV2ViRnJhbWUoKTsKIApAQCAtMzUx
OSw3ICszNTIwLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0
V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWUKICAgICAgICAgICAgIGZyYW1l
LT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZShjb3JlV29y
bGQpOwogICAgIH0KIAotICAgIHJ1bkphdmFTY3JpcHQod2ViRnJhbWUsIFdURk1vdmUocGFyYW1l
dGVycyksIHdvcmxkRGF0YS5maXJzdCwgY2FsbGJhY2tJRCk7CisgICAgcnVuSmF2YVNjcmlwdCh3
ZWJGcmFtZSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgd29ybGREYXRhLmZpcnN0LCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmlu
ZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzIGluY2x1ZGVDaGlsZEZyYW1lcywg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IDJhNDYzNzRmNjc3NjQwZTBlZTQ3MjRkNmU3M2E5NTA3MzMwOGI5ZTAu
LmIxOWU1ODMwMWQyZjIxNTZmNmE0NWNiZWQ1YjA5ZDc4Y2VmOTgwNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1NDgsOCArMTU0OCw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKENhbGxiYWNrSUQp
OwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBD
YWxsYmFja0lEKTsKICAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0KFdlYkZyYW1l
KiwgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgQ29udGVudFdvcmxkSWRlbnRp
ZmllciwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0
V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgT3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyPiwgY29uc3Qgc3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZp
ZXIsIFN0cmluZz4mIHdvcmxkRGF0YSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBydW5KYXZhU2Ny
aXB0KFdlYkZyYW1lKiwgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgQ29udGVu
dFdvcmxkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYm
KTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXZWJDb3JlOjpS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+LCBjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiYgd29y
bGREYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYpOwogICAgIHZv
aWQgZm9yY2VSZXBhaW50KENhbGxiYWNrSUQpOwogICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNv
cmU6OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVp
bnQzMl90IG9wdGlvbnMsIENhbGxiYWNrSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAzN2IzYzMzMmFmNTUw
Y2U2Mjc5OGQzMjVhMTA3ZTY2MTUzZWNlMWQ1Li4wYzlkOTY3YjZjZDY0NDU1MWVhZTczYTM4OWQ2
MjZhYjY3MWNjYWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIyMCw4ICsyMjAsNyBAQCBHZW5lcmF0ZVN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdD
b21tYW5kVHlwZQogICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRXZWJBcmNo
aXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIHNlbmRX
aXRoQXN5bmNSZXBseSBpbnN0ZWFkIG9mIGNhbGxiYWNrSURzCi0gICAgUnVuSmF2YVNjcmlwdElu
RnJhbWVJblNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVy
cyBwYXJhbWV0ZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IHN0ZDo6cGFpcjxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4gd29ybGQs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFJ1bkphdmFTY3JpcHRJbkZyYW1l
SW5TY3JpcHRXb3JsZChzdHJ1Y3QgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMgcGFy
YW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6
OnBhaXI8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+IHdvcmxkKSAtPiAo
SVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlv
bkRldGFpbHM+IGRldGFpbHMpIEFzeW5jCiAKICAgICBGb3JjZVJlcGFpbnQoV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2VsZWN0QWxsKCkK
</data>
<flag name="commit-queue"
          id="426571"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410590</attachid>
            <date>2020-10-05 16:57:02 -0700</date>
            <delta_ts>2020-10-05 18:41:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217351-20201005165701.patch</filename>
            <type>text/plain</type>
            <size>24502</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFjYWFkNjA2ZGYxMDQ1ZGM2
NzI4NmNkMmU3ZjE5ZDZhMjZjM2Q2YzkuLjBkNTA0Mzg3ZTk0YjgzN2RhNDkxMGQ2MDY2YTczNTg4
ZjRmMjYxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMTAtMDUgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2Ugc2VuZFdp
dGhBc3luY1JlcGx5IHRvIGV2YWx1YXRlIEphdmFTY3JpcHQgaW4gYSBXZWJQYWdlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTczNTEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gbWVh
bmluZ2Z1bCBiZWhhdmlvciwgYnV0IGNvbXBsZXhpdHkgaXMgcmVtb3ZlZC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlUnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6YXNBc3luY0Z1bmN0
aW9uOndpdGhTb3VyY2VVUkw6d2l0aEFyZ3VtZW50czpmb3JjZVVzZXJHZXN0dXJlOmluRnJhbWU6
aW5Xb3JsZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHRha2VT
bmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjAtMTAtMDUgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2Ugc2VuZFdpdGhB
c3luY1JlcGx5IGZvciBEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggZmNiYTg0NDI5ZGQ4Njkz
YWNlNWJkOTUwMTA3M2Y4OGFjMTAxYzVlOS4uNGE0YWQ3MWEyZTJmZjhlMTE2YmI5NTEyZGNmNTE5
NGU5NTY4NWVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBA
IC0yNDg5LDggKzI0ODksOCBAQCB2b2lkIFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VS
ZWYgcGFnZSwgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCiAKIHZvaWQgV0tQYWdlUnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3Jp
cHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZVJ1bkphdmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFj
aykKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHRv
SW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwg
dHJ1ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBy
ZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNr
QmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgY2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUp
LCAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgPyB0b0FQSShBUEk6OkVycm9y
OjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250ZXh0KTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgVVJM
IHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6
RXhjZXB0aW9uRGV0YWlscz4pIHsKKyAgICAgICAgY2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUp
LCBudWxscHRyLCBjb250ZXh0KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggZTJkMmYzZWVmNTdhNmJhOGVjMGIz
MzU1ZjAwN2JiZTg0NWFlNmRkZC4uYzFjN2Q0ZmU1OWRiMTNiNTBkMDIyODMzZTJjMjViMjVhNjZi
YWNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCkBAIC03OTYsNiArNzk2LDcgQEAgc3RhdGljIHZvaWQgaGFyZHdhcmVLZXlib2FyZEF2YWls
YWJpbGl0eUNoYW5nZWRDYWxsYmFjayhDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiwKICAgICBfcGFn
ZS0+c3RvcExvYWRpbmcoKTsKIH0KIAorI2lmIFVTRShBUFBLSVQpCiBzdGF0aWMgV0tFcnJvckNv
ZGUgY2FsbGJhY2tFcnJvckNvZGUoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQog
ewogICAgIHN3aXRjaCAoZXJyb3IpIHsKQEAgLTgxMyw2ICs4MTQsNyBAQCBzdGF0aWMgV0tFcnJv
ckNvZGUgY2FsbGJhY2tFcnJvckNvZGUoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9y
KQogICAgICAgICByZXR1cm4gV0tFcnJvcldlYlZpZXdJbnZhbGlkYXRlZDsKICAgICB9CiB9Cisj
ZW5kaWYKIAogLSAodm9pZClldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlw
dFN0cmluZyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxl
dGlvbkhhbmRsZXIKIHsKQEAgLTkzMiwyOCArOTM0LDEwIEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNF
cnJvcj4gbnNFcnJvckZyb21FeGNlcHRpb25EZXRhaWxzKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlv
bkRlCiAgICAgICAgICAgICBmcmFtZUlEID0gbWFrZU9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyVHlwZT4oaWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgX3BhZ2UtPnJ1
bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCh7IGphdmFTY3JpcHRTdHJpbmcsIHNvdXJj
ZVVSTCwgISFhc0FzeW5jRnVuY3Rpb24sIFdURk1vdmUoYXJndW1lbnRzTWFwKSwgISFmb3JjZVVz
ZXJHZXN0dXJlIH0sIGZyYW1lSUQsICp3b3JsZC0+X2NvbnRlbnRXb3JsZC5nZXQoKSwgW2hhbmRs
ZXJdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0
VmFsdWVDYWxsYmFjazo6RXJyb3IgZXJyb3JDb2RlKSB7CisgICAgX3BhZ2UtPnJ1bkphdmFTY3Jp
cHRJbkZyYW1lSW5TY3JpcHRXb3JsZCh7IGphdmFTY3JpcHRTdHJpbmcsIHNvdXJjZVVSTCwgISFh
c0FzeW5jRnVuY3Rpb24sIFdURk1vdmUoYXJndW1lbnRzTWFwKSwgISFmb3JjZVVzZXJHZXN0dXJl
IH0sIGZyYW1lSUQsICp3b3JsZC0+X2NvbnRlbnRXb3JsZC5nZXQoKSwgW2hhbmRsZXJdKEFQSTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPFdl
YkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMpIHsKICAgICAgICAgaWYgKCFoYW5kbGVy
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChlcnJvckNvZGUgIT0gV2ViS2l0
OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvcjo6Tm9uZSkgewotICAgICAgICAgICAgYXV0byBl
cnJvciA9IGNyZWF0ZU5TRXJyb3IoY2FsbGJhY2tFcnJvckNvZGUoZXJyb3JDb2RlKSk7Ci0gICAg
ICAgICAgICBpZiAoZXJyb3JDb2RlID09IFdlYktpdDo6U2NyaXB0VmFsdWVDYWxsYmFjazo6RXJy
b3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGUgT3duZXJX
YXNJbnZhbGlkYXRlZCBjYWxsYmFjayBpcyBzeW5jaHJvbm91cy4gV2UgZG9uJ3Qgd2FudCB0byBj
YWxsIHRoZSBibG9jayBmcm9tIHdpdGhpbiBpdAotICAgICAgICAgICAgICAgIC8vIGJlY2F1c2Ug
dGhhdCBjYW4gdHJpZ2dlciByZS1lbnRyYW5jeSBidWdzIGluIFdlYktpdC4KLSAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgZXZlbiBiZXR0ZXIgaWYgR2VuZXJpY0NhbGxiYWNr
IGRpZCB0aGlzIGZvciB1cy4KLSAgICAgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBbaGFuZGxlciwgZXJyb3JdIHsKLSAgICAgICAgICAgICAgICAg
ICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWhhbmRsZXIuZ2V0
KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJhd0hhbmRsZXIobmlsLCBlcnJvci5nZXQoKSk7Ci0g
ICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoaWQsIE5TRXJyb3Ig
KikpaGFuZGxlci5nZXQoKTsKLSAgICAgICAgICAgIHJhd0hhbmRsZXIobmlsLCBlcnJvci5nZXQo
KSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQogICAgICAgICBhdXRvIHJhd0hh
bmRsZXIgPSAodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpaGFuZGxlci5nZXQoKTsKICAgICAgICAg
aWYgKGRldGFpbHMpIHsKICAgICAgICAgICAgIEFTU0VSVCghc2VyaWFsaXplZFNjcmlwdFZhbHVl
KTsKQEAgLTk5Niw3ICs5ODAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IG5zRXJyb3JG
cm9tRXhjZXB0aW9uRGV0YWlscyhjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZQogICAgIC8vIGNv
bnRhaW5zIHJlY2VudCB1cGRhdGVzLiBJZiB3ZSBldmVyIGhhdmUgYSBVSS1zaWRlIHNuYXBzaG90
IG1lY2hhbmlzbSBvbiBtYWNPUywgd2Ugd2lsbCBuZWVkIHRvIGZhY3RvcgogICAgIC8vIGluIHNu
YXBzaG90Q29uZmlndXJhdGlvbi5hZnRlclNjcmVlblVwZGF0ZXMgYXQgdGhhdCB0aW1lLgogICAg
IF9wYWdlLT50YWtlU25hcHNob3QoV2ViQ29yZTo6ZW5jbG9zaW5nSW50UmVjdChyZWN0SW5WaWV3
Q29vcmRpbmF0ZXMpLCBiaXRtYXBTaXplLCBXZWJLaXQ6OlNuYXBzaG90T3B0aW9uc0luVmlld0Nv
b3JkaW5hdGVzLCBbaGFuZGxlciwgc25hcHNob3RXaWR0aCwgaW1hZ2VIZWlnaHRdKGNvbnN0IFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlSGFuZGxlLCBXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3IgZXJyb3JDb2RlKSB7Ci0gICAgICAgIGlmIChlcnJvckNvZGUgIT0gV2Vi
S2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvcjo6Tm9uZSkgeworICAgICAgICBpZiAoZXJy
b3JDb2RlICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgewogICAgICAgICAg
ICAgYXV0byBlcnJvciA9IGNyZWF0ZU5TRXJyb3IoY2FsbGJhY2tFcnJvckNvZGUoZXJyb3JDb2Rl
KSk7CiAgICAgICAgICAgICBoYW5kbGVyKG5pbCwgZXJyb3IuZ2V0KCkpOwogICAgICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcAppbmRleCBkOGIzZjNjMTk5OTI4OGYyYTE4ZGEzN2I2ZjI0YTljOGEzYzNjZjFh
Li5lYTlhY2JlZmMxMjEzZDNmZjMyMjc1YjhmNDM1MGE1NzJjZGJhYWZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMzkx
OSw3ICszOTE5LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfaW5fd29y
bGQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIKIAogICAgIEdSZWZQdHI8R1Rh
c2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJsZSwgY2Fs
bGJhY2ssIHVzZXJEYXRhKSk7CiAgICAgYXV0byB3b3JsZCA9IEFQSTo6Q29udGVudFdvcmxkOjpz
aGFyZWRXb3JsZFdpdGhOYW1lKFN0cmluZzo6ZnJvbVVURjgod29ybGROYW1lKSk7Ci0gICAgZ2V0
UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoeyBTdHJpbmc6
OmZyb21VVEY4KHNjcmlwdCksIFVSTCB7IH0sIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRydWUgfSwg
V1RGOjpudWxsb3B0LCB3b3JsZC5nZXQoKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxFeGNl
cHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAg
ICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCh7IFN0
cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1
ZSB9LCBXVEY6Om51bGxvcHQsIHdvcmxkLmdldCgpLCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGNvbnN0IE9w
dGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+JiBkZXRhaWxzKSB7CiAgICAgICAgIEV4Y2VwdGlvbkRl
dGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKICAgICAgICAgaWYgKGRldGFpbHMpCiAgICAgICAgICAg
ICBleGNlcHRpb25EZXRhaWxzID0gKmRldGFpbHM7CkBAIC0zOTYyLDcgKzM5NjIsNyBAQCBzdGF0
aWMgdm9pZCByZXNvdXJjZXNTdHJlYW1SZWFkQ2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5
bmNSZXN1bHQqIHJlc3VsdCwgZwogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRf
V0VCX1ZJRVcoZ190YXNrX2dldF9zb3VyY2Vfb2JqZWN0KHRhc2suZ2V0KCkpKTsKICAgICBncG9p
bnRlciBvdXRwdXRTdHJlYW1EYXRhID0gZ19tZW1vcnlfb3V0cHV0X3N0cmVhbV9nZXRfZGF0YShH
X01FTU9SWV9PVVRQVVRfU1RSRUFNKG9iamVjdCkpOwogICAgIGdldFBhZ2Uod2ViVmlldykucnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgU3RyaW5nOjpmcm9tVVRGOChyZWludGVycHJldF9jYXN0
PGNvbnN0IGdjaGFyKj4ob3V0cHV0U3RyZWFtRGF0YSkpLCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpu
dWxsb3B0LCB0cnVlIH0sCi0gICAgICAgIFt0YXNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRh
aWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICAgICAgW3Rhc2tdKEFQSTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4
Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMpIHsKICAgICAgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMg
ZXhjZXB0aW9uRGV0YWlsczsKICAgICAgICAgICAgIGlmIChkZXRhaWxzKQogICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbkRldGFpbHMgPSAqZGV0YWlsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IGI3YjgxNzVjZjAzNWVkZTA4ZWUxNDk1ZjRjMzY3NTgzMTZi
ZDhkOGYuLjQwNGRkZDIwMTRmZmQ3NmFmNzRjNjg5ZWI4MmRmMGFkM2MyZWQ4ZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDA4MSwxOCArNDA4MSwxOCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpCiAg
ICAgICAgIGxhdW5jaFByb2Nlc3MoeyB9LCBQcm9jZXNzTGF1bmNoUmVhc29uOjpJbml0aWFsUHJv
Y2Vzcyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUo
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lk
IFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFJ1bkphdmFTY3JpcHRQYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+
Jik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBydW5KYXZhU2NyaXB0SW5GcmFtZUluU2Ny
aXB0V29ybGQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBBUEk6OkNvbnRlbnRX
b3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpLCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRp
b25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3Zv
aWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGNvbnN0IE9wdGlvbmFsPEV4
Y2VwdGlvbkRldGFpbHM+Jik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICAvLyBGb3IgYmFj
a3dhcmQtY29tcGF0aWJpbGl0eSBzdXBwb3J0IHJ1bm5pbmcgc2NyaXB0IGluIGEgV2ViVmlldyB3
aGljaCBoYXMgbm90IGRvbmUgYW55IGxvYWRzIHlldHMuCiAgICAgbGF1bmNoSW5pdGlhbFByb2Nl
c3NJZk5lY2Vzc2FyeSgpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAg
ICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgeyB9LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpV
bmtub3duKTsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihudWxscHRyLCB7IH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC00MTAwLDEyICs0MTAwLDE0IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFt
ZXRlcnMmJiBwCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocGFnZUNsaWVudCgp
LmNhblRha2VGb3JlZ3JvdW5kQXNzZXJ0aW9ucygpKQogICAgICAgICBhY3Rpdml0eSA9IG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkph
dmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCJfcyk7Ci0gICAgZWxzZQogI2VuZGlmCi0gICAg
ICAgIGFjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHko
IldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkIl9zKTsKIAot
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBXVEZNb3ZlKGFjdGl2aXR5KSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHBhcmFtZXRlcnMsIGZyYW1lSUQsIHdv
cmxkLndvcmxkRGF0YSgpLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQocGFyYW1l
dGVycywgZnJhbWVJRCwgd29ybGQud29ybGREYXRhKCkpLCBbYWN0aXZpdHkgPSBXVEZNb3ZlKGFj
dGl2aXR5KSwgY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbildIChj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIE9wdGlvbmFsPEV4Y2VwdGlv
bkRldGFpbHM+IGRldGFpbHMpIG11dGFibGUgeworICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YTsKKyAgICAgICAgZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRhdGFSZWZlcmVuY2Uuc2l6
ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZl
cmVuY2Uuc2l6ZSgpKTsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6YWRvcHQoV1RGTW92ZShkYXRhKSkucHRyKCksIGRldGFpbHMpOworICAgIH0p
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50
YXRpb24oV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtNzE2MCwyNiArNzE2Miw2IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjppbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpz
Y3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5j
ZSwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQotewotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFNjcmlwdFZhbHVl
Q2FsbGJhY2s+KGNhbGxiYWNrSUQpOwotICAgIGlmICghY2FsbGJhY2spIHsKLSAgICAgICAgLy8g
RklYTUU6IExvZyBlcnJvciBvciBhc3NlcnQuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoZGF0YVJlZmVyZW5jZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgY2FsbGJhY2stPnBlcmZv
cm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShudWxscHRyLCBkZXRhaWxzKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGRhdGEucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShkYXRhUmVmZXJlbmNlLnNpemUoKSk7Ci0gICAgZGF0YS5hcHBlbmQo
ZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKLQotICAgIGNhbGxi
YWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmFkb3B0KFdURk1vdmUoZGF0YSkpLnB0cigpLCBkZXRhaWxzKTsKLX0KLQogdm9pZCBX
ZWJQYWdlUHJveHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8SW50UmVjdD4m
IHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY29uc3QgRmxv
YXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbiwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPENvbXB1dGVkUGFnZXNDYWxs
YmFjaz4oY2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDgyMTllYmI1M2IxY2ZlMzYzOWYyZGMxNmM3N2M5MWZjZjVmZWIwMWIuLjhiYjA1OTBiMTE2
OGI4YzM5ZWE2NTk2MDVhZmQ4MjE4MWE4OGI3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC0zNjUsNyArMzY1LDYgQEAgZW51bSBjbGFzcyBXZWJDb250ZW50TW9k
ZSA6IHVpbnQ4X3Q7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6OkRhdGEqPiBEYXRhQ2Fs
bGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazx1aW50NjRfdD4gVW5zaWduZWRDYWxsYmFj
azsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFN0cmluZyY+IFN0cmluZ0NhbGxiYWNr
OwotdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBP
cHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPj4gU2NyaXB0VmFsdWVDYWxsYmFjazsK
IHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJj4g
Rm9udEF0dHJpYnV0ZXNDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyY+IFNlbGVjdGlvbkNvbnRleHRDYWxs
YmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGJvb2w+IEJvb2xDYWxsYmFjazsKQEAgLTEx
NDAsOCArMTEzOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2
ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYp
OwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSosIFdURjo6RnVuY3Rp
b248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZv
aWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQ
STo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lkIHJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZShXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFdlYkNv
cmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4sIEFQSTo6Q29udGVudFdvcmxkJiwgRnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUo
V2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHM+Jik+JiYpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJblNj
cmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIEFQSTo6Q29udGVudFdvcmxkJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYpOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KFJl
ZlB0cjxWb2lkQ2FsbGJhY2s+JiYpOwogCiAgICAgZmxvYXQgaGVhZGVySGVpZ2h0KFdlYkZyYW1l
UHJveHkmKTsKQEAgLTIxMzAsNyArMjEyOSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBib29sQ2Fs
bGJhY2soYm9vbCByZXN1bHQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc3RyaW5nQ2FsbGJhY2so
Y29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlU3RyaW5nQ2Fs
bGJhY2soQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBD
YWxsYmFja0lEKTsKICAgICB2b2lkIGNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBWZWN0b3I8
V2ViQ29yZTo6SW50UmVjdD4mLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBj
b25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgY29tcHV0ZWRQYWdlTWFyZ2luLCBDYWxsYmFj
a0lEKTsKICAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIGJv
b2wsIGludCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB1bnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90
LCBDYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgppbmRleCA0OWQyNjRkYjZiMTZlOWY2NzIxYmMyNWIyY2I1MDMwZTMyZGI0
ODI4Li40MjE0NWYyYzVjMDRiMzM4YWIwNDFmYjA2ZDY5Njg2YzJmNTc5MTUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xNjcs
NyArMTY3LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBTdHJpbmdDYWxsYmFj
ayhTdHJpbmcgcmVzdWx0U3RyaW5nLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAg
ICBCb29sQ2FsbGJhY2soYm9vbCByZXN1bHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogICAgIEludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKLSAgICBTY3JpcHRWYWx1ZUNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHRE
YXRhLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBDb21wdXRlZFBhZ2VzQ2FsbGJhY2soVmVjdG9y
PFdlYkNvcmU6OkludFJlY3Q+IHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQ
cmludGluZywgV2ViQ29yZTo6UmVjdEVkZ2VzPGZsb2F0PiBjb21wdXRlZFBhZ2VNYXJnaW4sIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFZhbGlkYXRlQ29tbWFuZENhbGxiYWNr
KFN0cmluZyBjb21tYW5kLCBib29sIGlzRW5hYmxlZCwgaW50MzJfdCBzdGF0ZSwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgVW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCByZXN1
bHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA4YjJjN2ZhOGZmMzFlMWM0YzFjZDA3YmNk
YjYyNmYxN2MyOGVhNDBhLi5hNTJlM2Y1MmU5ZDI1ZDM0OTg2MDYxZGU3ZmU1MmEwYjMzMDNjZWE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAt
MzQ2MywyMyArMzQ2MywzMyBAQCBLZXlib2FyZFVJTW9kZSBXZWJQYWdlOjprZXlib2FyZFVJTW9k
ZSgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEtleWJvYXJkVUlNb2RlPigoZnVsbEtleWJvYXJk
QWNjZXNzRW5hYmxlZCA/IEtleWJvYXJkQWNjZXNzRnVsbCA6IEtleWJvYXJkQWNjZXNzRGVmYXVs
dCkgfCAobV90YWJUb0xpbmtzID8gS2V5Ym9hcmRBY2Nlc3NUYWJzVG9MaW5rcyA6IDApKTsKIH0K
IAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBDb250ZW50V29ybGRJZGVudGlmaWVyIHdvcmxk
SWRlbnRpZmllciwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpydW5KYXZh
U2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzLCBDb250ZW50V29ybGRJZGVudGlmaWVyIHdvcmxkSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJD
b3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIC8v
IE5PVEU6IFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aGVuIHJ1bm5pbmcgc2NyaXB0cyB0aGF0IHRo
ZSBvYmplY3RzIHdlIGRlcGVuZCBvbiBkb24ndAogICAgIC8vIGRpc2FwcGVhciBkdXJpbmcgc2Ny
aXB0IGV4ZWN1dGlvbi4KIAogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5jb3JlRnJhbWUoKSkg
ewotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJh
Y2soeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQ6
IFRhcmdldCBmcmFtZSBjb3VsZCBub3QgYmUgZm91bmQgaW4gdGhlIHBhZ2UiX3MsIDAsIDAsIEV4
Y2VwdGlvbkRldGFpbHM6OlR5cGU6OkludmFsaWRUYXJnZXRGcmFtZSB9LCBjYWxsYmFja0lEKSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFi
bGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0OiBUYXJnZXQgZnJhbWUgY291bGQgbm90IGJlIGZvdW5k
IGluIHRoZSBwYWdlIl9zLCAwLCAwLCBFeGNlcHRpb25EZXRhaWxzOjpUeXBlOjpJbnZhbGlkVGFy
Z2V0RnJhbWUgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvKiB3b3JsZCA9
IG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT53b3JsZEZvcklkZW50aWZpZXIod29ybGRJZGVudGlm
aWVyKTsKICAgICBpZiAoIXdvcmxkKSB7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayh7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxl
IHRvIGV4ZWN1dGUgSmF2YVNjcmlwdDogQ2Fubm90IGZpbmQgc3BlY2lmaWVkIGNvbnRlbnQgd29y
bGQiX3MgfSwgY2FsbGJhY2tJRCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIEV4
Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdDogQ2Fubm90IGZp
bmQgc3BlY2lmaWVkIGNvbnRlbnQgd29ybGQiX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBhdXRvIHJlc29sdmVGdW5jdGlvbiA9IFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHRoaXMsIHdvcmxkID0gbWFrZVJlZigqd29ybGQpLCBmcmFtZSA9IG1ha2VSZWYoKmZy
YW1lKSwgY2FsbGJhY2tJRF0oVmFsdWVPckV4Y2VwdGlvbiByZXN1bHQpIHsKKyNpZiBFTkFCTEUo
QVBQX0JPVU5EX0RPTUFJTlMpCisgICAgaWYgKGZyYW1lLT5zaG91bGRFbmFibGVJbkFwcEJyb3dz
ZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0s
IEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBhIGZy
YW1lIHRoYXQgaXMgbm90IGluIGFuIGFwcC1ib3VuZCBkb21haW4iX3MsIDAsIDAsIEV4Y2VwdGlv
bkRldGFpbHM6OlR5cGU6OkFwcEJvdW5kRG9tYWluIH0pOworICAgICAgICBpZiAoYXV0byogZG9j
dW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCisgICAgICAgICAgICBkb2N1
bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VM
ZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFw
cCBib3VuZCBkb21haW4uIik7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
TG9hZGluZywgInJ1bkphdmFTY3JpcHQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBm
b3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRp
ZgorCisgICAgYXV0byByZXNvbHZlRnVuY3Rpb24gPSBbd29ybGQgPSBtYWtlUmVmKCp3b3JsZCks
IGZyYW1lID0gbWFrZVJlZigqZnJhbWUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSAoVmFsdWVPckV4Y2VwdGlvbiByZXN1bHQpIG11dGFibGUgewogICAg
ICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWU7
CiAgICAgICAgIGlmIChyZXN1bHQpIHsKICAgICAgICAgICAgIHNlcmlhbGl6ZWRSZXN1bHRWYWx1
ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGZyYW1lLT5qc0NvbnRleHRGb3JXb3Js
ZCh3b3JsZC5wdHIoKSksCkBAIC0zNDk0LDIyICszNTA0LDEzIEBAIHZvaWQgV2ViUGFnZTo6cnVu
SmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFy
YW1ldGVyCiAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgZGV0YWlscyA9IHJlc3Vs
dC5lcnJvcigpOwogCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0
VmFsdWVDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBkZXRhaWxzLCBjYWxsYmFja0lEKSk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGRhdGFSZWZlcmVuY2UsIGRldGFpbHMpOwogICAgIH07Ci0j
aWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQotICAgIGlmIChmcmFtZS0+c2hvdWxkRW5hYmxl
SW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKLSAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKHsgfSwgRXhjZXB0aW9uRGV0YWls
cyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGluIGEgZnJhbWUgdGhhdCBpcyBub3Qg
aW4gYW4gYXBwLWJvdW5kIGRvbWFpbiJfcywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6
QXBwQm91bmREb21haW4gfSwgY2FsbGJhY2tJRCkpOwotICAgICAgICBpZiAoYXV0byogZG9jdW1l
bnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCi0gICAgICAgICAgICBkb2N1bWVu
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZl
bDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBi
b3VuZCBkb21haW4uIik7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoTG9h
ZGluZywgInJ1bkphdmFTY3JpcHQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Ig
bm9uIGFwcC1ib3VuZCBkb21haW4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgog
ICAgIEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwogICAgIGZyYW1lLT5jb3JlRnJhbWUo
KS0+c2NyaXB0KCkuZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQod29y
bGQtPmNvcmVXb3JsZCgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKHJlc29sdmVGdW5j
dGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRX
b3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgY29uc3Qgc3RkOjpwYWlyPENvbnRlbnRXb3Js
ZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxkRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQor
dm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBT
dHJpbmc+JiB3b3JsZERhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3ZWJGcmFtZSA9IGZyYW1lSUQgPyBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZSgqZnJhbWVJRCkgOiAmbWFpbldlYkZyYW1l
KCk7CiAKQEAgLTM1MTksNyArMzUyMCw3IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdElu
RnJhbWVJblNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1lCiAgICAg
ICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hHbG9iYWxPYmplY3RBdmFp
bGFibGUoY29yZVdvcmxkKTsKICAgICB9CiAKLSAgICBydW5KYXZhU2NyaXB0KHdlYkZyYW1lLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCB3b3JsZERhdGEuZmlyc3QsIGNhbGxiYWNrSUQpOworICAgIHJ1
bkphdmFTY3JpcHQod2ViRnJhbWUsIFdURk1vdmUocGFyYW1ldGVycyksIHdvcmxkRGF0YS5maXJz
dCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldENv
bnRlbnRzQXNTdHJpbmcoQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcyBpbmNsdWRl
Q2hpbGRGcmFtZXMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAyYTQ2Mzc0ZjY3NzY0MGUwZWU0NzI0ZDZlNzNh
OTUwNzMzMDhiOWUwLi5iMTllNTgzMDFkMmYyMTU2ZjZhNDVjYmVkNWIwOWQ3OGNlZjk4MDQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNTQ4LDgg
KzE1NDgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0
YShDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNj
cmlwdChXZWJGcmFtZSosIFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbnRl
bnRXb3JsZElkZW50aWZpZXIsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdElu
RnJhbWVJblNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9w
dGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50
V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZERhdGEsIENhbGxiYWNrSUQpOworICAgIHZv
aWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0
ZXJzJiYsIENvbnRlbnRXb3JsZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscz4mKT4mJik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29y
bGQoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgT3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiwgY29uc3Qgc3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIs
IFN0cmluZz4mIHdvcmxkRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYp
PiYmKTsKICAgICB2b2lkIGZvcmNlUmVwYWludChDYWxsYmFja0lEKTsKICAgICB2b2lkIHRha2VT
bmFwc2hvdChXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBi
aXRtYXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCBDYWxsYmFja0lEKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXgg
MzdiM2MzMzJhZjU1MGNlNjI3OThkMzI1YTEwN2U2NjE1M2VjZTFkNS4uMGM5ZDk2N2I2Y2Q2NDQ1
NTFlYWU3M2EzODlkNjI2YWI2NzFjY2FhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMjAsOCArMjIwLDcgQEAg
R2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBHZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAg
ICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCi0gICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIHVzZSBzZW5kV2l0aEFzeW5jUmVwbHkgaW5zdGVhZCBvZiBjYWxsYmFja0lEcwotICAgIFJ1
bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChzdHJ1Y3QgV2ViQ29yZTo6UnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMgcGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBzdGQ6OnBhaXI8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyLCBT
dHJpbmc+IHdvcmxkLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBSdW5KYXZh
U2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoc3RydWN0IFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgc3RkOjpwYWlyPFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5n
PiB3b3JsZCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBPcHRpb25hbDxXZWJD
b3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzKSBBc3luYwogCiAgICAgRm9yY2VSZXBhaW50
KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFNlbGVjdEFsbCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410599</attachid>
            <date>2020-10-05 18:41:42 -0700</date>
            <delta_ts>2020-10-05 21:43:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217351-20201005184141.patch</filename>
            <type>text/plain</type>
            <size>25071</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjgwMjUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDIwLTEwLTA1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIHNlbmRXaXRo
QXN5bmNSZXBseSB0byBldmFsdWF0ZSBKYXZhU2NyaXB0IGluIGEgV2ViUGFnZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MzUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIG1lYW5p
bmdmdWwgYmVoYXZpb3IsIGJ1dCBjb21wbGV4aXR5IGlzIHJlbW92ZWQuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06
CisgICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmFzQXN5bmNGdW5jdGlv
bjp3aXRoU291cmNlVVJMOndpdGhBcmd1bWVudHM6Zm9yY2VVc2VyR2VzdHVyZTppbkZyYW1lOmlu
V29ybGQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyB0YWtlU25h
cHNob3RXaXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2NyaXB0VmFsdWVDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIwLTEwLTA1ICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI2NzkxNSk6
IE1hbnkgbGF5b3V0IHRlc3RzIGFyZSBhc3NlcnRpbmcgdW5kZXIgfkNvbXBsZXRpb25IYW5kbGVy
KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNp
b24gMjY4MDI1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDA4MSwxOCArNDA4MSwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
bGF1bmNoSW5pdGlhbFByb2Nlc3NJCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoeyB9LCBQcm9jZXNz
TGF1bmNoUmVhc29uOjpJbml0aWFsUHJvY2Vzcyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpy
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBy
dW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RG
OjpudWxsb3B0LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpLCBXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3Jp
cHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgQVBJOjpDb250
ZW50V29ybGQmIHdvcmxkLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5G
cmFtZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBP
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIEFQSTo6Q29udGVudFdv
cmxkJiB3b3JsZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSosIGNvbnN0IE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+Jik+JiYgY2FsbGJhY2tGdW5j
dGlvbikKIHsKICAgICAvLyBGb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBzdXBwb3J0IHJ1bm5p
bmcgc2NyaXB0IGluIGEgV2ViVmlldyB3aGljaCBoYXMgbm90IGRvbmUgYW55IGxvYWRzIHlldHMu
CiAgICAgbGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwogCiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgeyB9
LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlv
bihudWxscHRyLCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00MTAwLDEyICs0
MTAwLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZUkKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChwYWdlQ2xpZW50KCkuY2FuVGFrZUZvcmVncm91
bmRBc3NlcnRpb25zKCkpCiAgICAgICAgIGFjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5mb3JlZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJ
blNjcmlwdFdvcmxkIl9zKTsKLSAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgYWN0aXZpdHkgPSBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojpy
dW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQiX3MpOwogCi0gICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIFdURk1vdmUo
YWN0aXZpdHkpKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5G
cmFtZUluU2NyaXB0V29ybGQocGFyYW1ldGVycywgZnJhbWVJRCwgd29ybGQud29ybGREYXRhKCks
IGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6
OlJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChwYXJhbWV0ZXJzLCBmcmFtZUlELCB3
b3JsZC53b3JsZERhdGEoKSksIFthY3Rpdml0eSA9IFdURk1vdmUoYWN0aXZpdHkpLCBjYWxsYmFj
a0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKV0gKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWls
cykgbXV0YWJsZSB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgICAgICBkYXRh
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGF0YVJlZmVyZW5jZS5zaXplKCkpOworICAgICAgICBk
YXRhLmFwcGVuZChkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOwor
ICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9w
dChXVEZNb3ZlKGRhdGEpKS5wdHIoKSwgZGV0YWlscyk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCkBAIC03MTYwLDI2ICs3MTYyLDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmludmFs
aWRhdGVTdHJpbmdDYWxsYgogICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YVJlZmVyZW5jZSwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQotewotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50
YWtlPFNjcmlwdFZhbHVlQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwotICAgIGlmICghY2FsbGJhY2sp
IHsKLSAgICAgICAgLy8gRklYTUU6IExvZyBlcnJvciBvciBhc3NlcnQuCi0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YVJlZmVyZW5jZS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
Y2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShudWxscHRyLCBkZXRhaWxz
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwot
ICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkYXRhUmVmZXJlbmNlLnNpemUoKSk7Ci0g
ICAgZGF0YS5hcHBlbmQoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgp
KTsKLQotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KFdURk1vdmUoZGF0YSkpLnB0cigpLCBkZXRhaWxz
KTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjayhjb25zdCBW
ZWN0b3I8SW50UmVjdD4mIHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmlu
dGluZywgY29uc3QgRmxvYXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbiwgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPENv
bXB1dGVkUGFnZXNDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjY4MDI1KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2NSw3ICszNjUsNiBA
QCBlbnVtIGNsYXNzIFdlYkNvbnRlbnRNb2RlIDogdWludDhfdDsKIHR5cGVkZWYgR2VuZXJpY0Nh
bGxiYWNrPEFQSTo6RGF0YSo+IERhdGFDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PHVpbnQ2NF90PiBVbnNpZ25lZENhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29u
c3QgU3RyaW5nJj4gU3RyaW5nQ2FsbGJhY2s7Ci10eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHM+PiBTY3JpcHRWYWx1ZUNhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3Qg
V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmPiBGb250QXR0cmlidXRlc0NhbGxiYWNrOwogdHlwZWRl
ZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJj4gU2VsZWN0aW9uQ29udGV4dENhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8
Ym9vbD4gQm9vbENhbGxiYWNrOwpAQCAtMTE0MCw4ICsxMTM5LDggQEAgcHVibGljOgogICAgIHZv
aWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEq
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShX
ZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFt
ZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdlYkNvcmU6OlJ1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzJiYsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0
SW5GcmFtZUluU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwg
T3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgQVBJOjpDb250ZW50V29ybGQmLCBG
dW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lk
IHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVy
cyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwg
Y29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJik7CisgICAgdm9p
ZCBydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMmJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgQVBJOjpD
b250ZW50V29ybGQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJik7
CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4mJik7CiAKICAgICBm
bG9hdCBoZWFkZXJIZWlnaHQoV2ViRnJhbWVQcm94eSYpOwpAQCAtMjEzMCw3ICsyMTI5LDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGJvb2xDYWxsYmFjayhib29sIHJlc3VsdCwgQ2FsbGJhY2tJRCk7
CiAgICAgdm9pZCBzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBDYWxsYmFja0lEKTsKICAg
ICB2b2lkIGludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhDYWxsYmFja0lEKTsKLSAgICB2b2lkIHNj
cmlwdFZhbHVlQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgT3B0aW9uYWw8V2Vi
Q29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrSUQpOwogICAgIHZvaWQgY29tcHV0ZWRQ
YWdlc0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIGRvdWJsZSB0b3Rh
bFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiBj
b21wdXRlZFBhZ2VNYXJnaW4sIENhbGxiYWNrSUQpOwogICAgIHZvaWQgdmFsaWRhdGVDb21tYW5k
Q2FsbGJhY2soY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBDYWxsYmFja0lEKTsKICAgICB2b2lk
IHVuc2lnbmVkQ2FsbGJhY2sodWludDY0X3QsIENhbGxiYWNrSUQpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24g
MjY4MDI1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNyArMTY3LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICBTdHJpbmdDYWxsYmFjayhTdHJpbmcgcmVzdWx0U3RyaW5nLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBCb29sQ2FsbGJhY2soYm9vbCByZXN1bHQsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEludmFsaWRhdGVTdHJpbmdDYWxsYmFj
ayhXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBTY3JpcHRWYWx1ZUNhbGxiYWNr
KElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBD
b21wdXRlZFBhZ2VzQ2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHBhZ2VSZWN0cywg
ZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgV2ViQ29yZTo6UmVjdEVkZ2VzPGZs
b2F0PiBjb21wdXRlZFBhZ2VNYXJnaW4sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ICAgIFZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKFN0cmluZyBjb21tYW5kLCBib29sIGlzRW5hYmxl
ZCwgaW50MzJfdCBzdGF0ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgVW5z
aWduZWRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZp
c2lvbiAyNjgwMjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDg5LDggKzI0ODksOCBAQCB2b2lkIFdLUGFnZVNldFBhZ2VT
dGF0ZUNsaWVudChXS1BhZ2VSZWYgCiAKIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsIHZvaWQqIGNvbnRl
eHQsIFdLUGFnZVJ1bkphdmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwo
cGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHRvSW1wbChzY3JpcHRSZWYpLT5z
dHJpbmcoKSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBbY29udGV4dCwg
Y2FsbGJhY2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKLSAgICAgICAgY2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUpLCAoZXJyb3IgIT0gQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6Tm9uZSkgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkg
OiAwLCBjb250ZXh0KTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZSh7IHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6
bnVsbG9wdCwgdHJ1ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdKEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4p
IHsKKyAgICAgICAgY2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUpLCBudWxscHRyLCBjb250ZXh0
KTsKICAgICB9KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyNjgwMjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OTYsNiAr
Nzk2LDcgQEAgLSAodm9pZClzdG9wTG9hZGluZwogICAgIF9wYWdlLT5zdG9wTG9hZGluZygpOwog
fQogCisjaWYgVVNFKEFQUEtJVCkKIHN0YXRpYyBXS0Vycm9yQ29kZSBjYWxsYmFja0Vycm9yQ29k
ZShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCiB7CiAgICAgc3dpdGNoIChlcnJv
cikgewpAQCAtODEzLDYgKzgxNCw3IEBAIHN0YXRpYyBXS0Vycm9yQ29kZSBjYWxsYmFja0Vycm9y
Q29kZShXZWIKICAgICAgICAgcmV0dXJuIFdLRXJyb3JXZWJWaWV3SW52YWxpZGF0ZWQ7CiAgICAg
fQogfQorI2VuZGlmCiAKIC0gKHZvaWQpZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWph
dmFTY3JpcHRTdHJpbmcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICop
KWNvbXBsZXRpb25IYW5kbGVyCiB7CkBAIC05MzIsMjggKzkzNCwxMCBAQCAtICh2b2lkKV9ldmFs
dWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopCiAgICAgICAgICAgICBmcmFtZUlEID0gbWFrZU9i
amVjdElkZW50aWZpZXI8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyVHlwZT4oaWRlbnRpZmllcik7
CiAgICAgfQogCi0gICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCh7
IGphdmFTY3JpcHRTdHJpbmcsIHNvdXJjZVVSTCwgISFhc0FzeW5jRnVuY3Rpb24sIFdURk1vdmUo
YXJndW1lbnRzTWFwKSwgISFmb3JjZVVzZXJHZXN0dXJlIH0sIGZyYW1lSUQsICp3b3JsZC0+X2Nv
bnRlbnRXb3JsZC5nZXQoKSwgW2hhbmRsZXJdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBz
ZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+
IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0VmFsdWVDYWxsYmFjazo6RXJyb3IgZXJyb3JDb2RlKSB7
CisgICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCh7IGphdmFTY3Jp
cHRTdHJpbmcsIHNvdXJjZVVSTCwgISFhc0FzeW5jRnVuY3Rpb24sIFdURk1vdmUoYXJndW1lbnRz
TWFwKSwgISFmb3JjZVVzZXJHZXN0dXJlIH0sIGZyYW1lSUQsICp3b3JsZC0+X2NvbnRlbnRXb3Js
ZC5nZXQoKSwgW2hhbmRsZXJdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVk
U2NyaXB0VmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMp
IHsKICAgICAgICAgaWYgKCFoYW5kbGVyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IGlmIChlcnJvckNvZGUgIT0gV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvcjo6Tm9u
ZSkgewotICAgICAgICAgICAgYXV0byBlcnJvciA9IGNyZWF0ZU5TRXJyb3IoY2FsbGJhY2tFcnJv
ckNvZGUoZXJyb3JDb2RlKSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3JDb2RlID09IFdlYktpdDo6
U2NyaXB0VmFsdWVDYWxsYmFjazo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpIHsKLSAgICAg
ICAgICAgICAgICAvLyBUaGUgT3duZXJXYXNJbnZhbGlkYXRlZCBjYWxsYmFjayBpcyBzeW5jaHJv
bm91cy4gV2UgZG9uJ3Qgd2FudCB0byBjYWxsIHRoZSBibG9jayBmcm9tIHdpdGhpbiBpdAotICAg
ICAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhhdCBjYW4gdHJpZ2dlciByZS1lbnRyYW5jeSBidWdz
IGluIFdlYktpdC4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgZXZlbiBi
ZXR0ZXIgaWYgR2VuZXJpY0NhbGxiYWNrIGRpZCB0aGlzIGZvciB1cy4KLSAgICAgICAgICAgICAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbaGFuZGxlciwgZXJy
b3JdIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKGlk
LCBOU0Vycm9yICopKWhhbmRsZXIuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJhd0hhbmRs
ZXIobmlsLCBlcnJvci5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhdXRvIHJhd0hhbmRsZXIg
PSAodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpaGFuZGxlci5nZXQoKTsKLSAgICAgICAgICAgIHJh
d0hhbmRsZXIobmlsLCBlcnJvci5nZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQogICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoaWQsIE5TRXJyb3IgKikp
aGFuZGxlci5nZXQoKTsKICAgICAgICAgaWYgKGRldGFpbHMpIHsKICAgICAgICAgICAgIEFTU0VS
VCghc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKQEAgLTk5Niw3ICs5ODAsNyBAQCAtICh2b2lkKXRh
a2VTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXCiAgICAgLy8gY29udGFpbnMgcmVjZW50IHVw
ZGF0ZXMuIElmIHdlIGV2ZXIgaGF2ZSBhIFVJLXNpZGUgc25hcHNob3QgbWVjaGFuaXNtIG9uIG1h
Y09TLCB3ZSB3aWxsIG5lZWQgdG8gZmFjdG9yCiAgICAgLy8gaW4gc25hcHNob3RDb25maWd1cmF0
aW9uLmFmdGVyU2NyZWVuVXBkYXRlcyBhdCB0aGF0IHRpbWUuCiAgICAgX3BhZ2UtPnRha2VTbmFw
c2hvdChXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0KHJlY3RJblZpZXdDb29yZGluYXRlcyksIGJp
dG1hcFNpemUsIFdlYktpdDo6U25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0ZXMsIFtoYW5k
bGVyLCBzbmFwc2hvdFdpZHRoLCBpbWFnZUhlaWdodF0oY29uc3QgV2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvckNvZGUpIHsKLSAgICAgICAgaWYgKGVycm9yQ29kZSAhPSBXZWJLaXQ6OlNjcmlwdFZhbHVl
Q2FsbGJhY2s6OkVycm9yOjpOb25lKSB7CisgICAgICAgIGlmIChlcnJvckNvZGUgIT0gV2ViS2l0
OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7CiAgICAgICAgICAgICBhdXRvIGVycm9yID0g
Y3JlYXRlTlNFcnJvcihjYWxsYmFja0Vycm9yQ29kZShlcnJvckNvZGUpKTsKICAgICAgICAgICAg
IGhhbmRsZXIobmlsLCBlcnJvci5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNw
cAkocmV2aXNpb24gMjY4MDI1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3ODUsNyArMzc4NSw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0V2kKIHsKICAgICBHUmVmUHRyPEdU
YXNrPiB0YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXcod2ViVmlldywgY2FuY2VsbGFibGUsIGNh
bGxiYWNrLCB1c2VyRGF0YSkpOwogCi0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWUoV1RGTW92ZShwYXJhbXMpLCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4
Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgewor
ICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdURk1vdmUocGFy
YW1zKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSog
c2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxz
KSB7CiAgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKICAgICAgICAg
aWYgKGRldGFpbHMpCiAgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gKmRldGFpbHM7CkBA
IC0zOTE5LDcgKzM5MTksNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9p
bl93CiAKICAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXcod2Vi
VmlldywgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOwogICAgIGF1dG8gd29ybGQg
PSBBUEk6OkNvbnRlbnRXb3JsZDo6c2hhcmVkV29ybGRXaXRoTmFtZShTdHJpbmc6OmZyb21VVEY4
KHdvcmxkTmFtZSkpOwotICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluRnJhbWVJ
blNjcmlwdFdvcmxkKHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBVUkwgeyB9LCBmYWxzZSwg
V1RGOjpudWxsb3B0LCB0cnVlIH0sIFdURjo6bnVsbG9wdCwgd29ybGQuZ2V0KCksIFt0YXNrID0g
V1RGTW92ZSh0YXNrKV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxs
YmFja0Jhc2U6OkVycm9yKSB7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5G
cmFtZUluU2NyaXB0V29ybGQoeyBTdHJpbmc6OmZyb21VVEY4KHNjcmlwdCksIFVSTCB7IH0sIGZh
bHNlLCBXVEY6Om51bGxvcHQsIHRydWUgfSwgV1RGOjpudWxsb3B0LCB3b3JsZC5nZXQoKSwgW3Rh
c2sgPSBXVEZNb3ZlKHRhc2spXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBjb25zdCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiYgZGV0YWlscykg
ewogICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFpbHM7CiAgICAgICAgIGlm
IChkZXRhaWxzKQogICAgICAgICAgICAgZXhjZXB0aW9uRGV0YWlscyA9ICpkZXRhaWxzOwpAQCAt
Mzk2Miw3ICszOTYyLDcgQEAgc3RhdGljIHZvaWQgcmVzb3VyY2VzU3RyZWFtUmVhZENhbGxiYWNr
KAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ190YXNrX2dl
dF9zb3VyY2Vfb2JqZWN0KHRhc2suZ2V0KCkpKTsKICAgICBncG9pbnRlciBvdXRwdXRTdHJlYW1E
YXRhID0gZ19tZW1vcnlfb3V0cHV0X3N0cmVhbV9nZXRfZGF0YShHX01FTU9SWV9PVVRQVVRfU1RS
RUFNKG9iamVjdCkpOwogICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKHsgU3RyaW5nOjpmcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IGdjaGFyKj4ob3V0
cHV0U3RyZWFtRGF0YSkpLCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlIH0sCi0g
ICAgICAgIFt0YXNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlw
dFZhbHVlLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3IpIHsKKyAgICAgICAgW3Rhc2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRl
dGFpbHMpIHsKICAgICAgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsK
ICAgICAgICAgICAgIGlmIChkZXRhaWxzKQogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFp
bHMgPSAqZGV0YWlsczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlci5jcHAJKHJldmlzaW9uIDI2ODAyNSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyOjppbnMKIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
OjpydW5TY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQpCiB7CiAgICAgbV9wYWdlLnJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZSh7IHNjcmlwdCwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwg
ZmFsc2UgfSwgCi0gICAgICAgIFtdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZXhjZXB0aW9uRGV0YWlscywgQ2FsbGJhY2tC
YXNlOjpFcnJvcikgeworICAgICAgICBbXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGV4Y2VwdGlvbkRldGFpbHMpIHsKICAg
ICAgICAgICAgIGlmIChleGNlcHRpb25EZXRhaWxzKQogICAgICAgICAgICAgICAgIExPR19FUlJP
UigiRXhjZXB0aW9uIHJ1bm5pbmcgc2NyaXB0IFwiJXNcIiIsIGV4Y2VwdGlvbkRldGFpbHMtPm1l
c3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjY4MDI1KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0NjMsMjMgKzM0NjMsMzMgQEAgS2V5Ym9hcmRVSU1vZGUgV2ViUGFnZTo6a2V5Ym9hcmRVSU1v
ZGUoKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxLZXlib2FyZFVJTW9kZT4oKGZ1bGxLZXlib2Fy
ZEFjY2Vzc0VuYWJsZWQgPyBLZXlib2FyZEFjY2Vzc0Z1bGwgOiBLZXlib2FyZEFjY2Vzc0RlZmF1
bHQpIHwgKG1fdGFiVG9MaW5rcyA/IEtleWJvYXJkQWNjZXNzVGFic1RvTGlua3MgOiAwKSk7CiB9
CiAKLXZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgQ29udGVudFdvcmxkSWRlbnRpZmllciB3b3Js
ZElkZW50aWZpZXIsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6cnVuSmF2
YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycywgQ29udGVudFdvcmxkSWRlbnRpZmllciB3b3JsZElkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2Vi
Q29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICAv
LyBOT1RFOiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBydW5uaW5nIHNjcmlwdHMgdGhhdCB0
aGUgb2JqZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKICAgICAvLyBkaXNhcHBlYXIgZHVyaW5nIHNj
cmlwdCBleGVjdXRpb24uCiAKICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+Y29yZUZyYW1lKCkp
IHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxi
YWNrKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0
OiBUYXJnZXQgZnJhbWUgY291bGQgbm90IGJlIGZvdW5kIGluIHRoZSBwYWdlIl9zLCAwLCAwLCBF
eGNlcHRpb25EZXRhaWxzOjpUeXBlOjpJbnZhbGlkVGFyZ2V0RnJhbWUgfSwgY2FsbGJhY2tJRCkp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5h
YmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdDogVGFyZ2V0IGZyYW1lIGNvdWxkIG5vdCBiZSBmb3Vu
ZCBpbiB0aGUgcGFnZSJfcywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6SW52YWxpZFRh
cmdldEZyYW1lIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byogd29ybGQg
PSBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+d29ybGRGb3JJZGVudGlmaWVyKHdvcmxkSWRlbnRp
Zmllcik7CiAgICAgaWYgKCF3b3JsZCkgewotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJs
ZSB0byBleGVjdXRlIEphdmFTY3JpcHQ6IENhbm5vdCBmaW5kIHNwZWNpZmllZCBjb250ZW50IHdv
cmxkIl9zIH0sIGNhbGxiYWNrSUQpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBF
eGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQ6IENhbm5vdCBm
aW5kIHNwZWNpZmllZCBjb250ZW50IHdvcmxkIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYXV0byByZXNvbHZlRnVuY3Rpb24gPSBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCB0aGlzLCB3b3JsZCA9IG1ha2VSZWYoKndvcmxkKSwgZnJhbWUgPSBtYWtlUmVmKCpm
cmFtZSksIGNhbGxiYWNrSURdKFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0KSB7CisjaWYgRU5BQkxF
KEFQUF9CT1VORF9ET01BSU5TKQorICAgIGlmIChmcmFtZS0+c2hvdWxkRW5hYmxlSW5BcHBCcm93
c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQgaW4gYSBm
cmFtZSB0aGF0IGlzIG5vdCBpbiBhbiBhcHAtYm91bmQgZG9tYWluIl9zLCAwLCAwLCBFeGNlcHRp
b25EZXRhaWxzOjpUeXBlOjpBcHBCb3VuZERvbWFpbiB9KTsKKyAgICAgICAgaWYgKGF1dG8qIGRv
Y3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQorICAgICAgICAgICAgZG9j
dW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdl
TGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1h
cHAgYm91bmQgZG9tYWluLiIpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KExvYWRpbmcsICJydW5KYXZhU2NyaXB0OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24g
Zm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5k
aWYKKworICAgIGF1dG8gcmVzb2x2ZUZ1bmN0aW9uID0gW3dvcmxkID0gbWFrZVJlZigqd29ybGQp
LCBmcmFtZSA9IG1ha2VSZWYoKmZyYW1lKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0KSBtdXRhYmxlIHsKICAg
ICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFJlc3VsdFZhbHVl
OwogICAgICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgICAgICBzZXJpYWxpemVkUmVzdWx0VmFs
dWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShmcmFtZS0+anNDb250ZXh0Rm9yV29y
bGQod29ybGQucHRyKCkpLApAQCAtMzQ5NCwyMiArMzUwNCwxMyBAQCB2b2lkIFdlYlBhZ2U6OnJ1
bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyCiAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAg
ICAgZGV0YWlscyA9IHJlc3VsdC5lcnJvcigpOwogCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBkZXRhaWxzLCBj
YWxsYmFja0lEKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRhdGFSZWZlcmVuY2UsIGRl
dGFpbHMpOwogICAgIH07Ci0jaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQotICAgIGlmIChm
cmFtZS0+c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKLSAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKHsg
fSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGluIGEg
ZnJhbWUgdGhhdCBpcyBub3QgaW4gYW4gYXBwLWJvdW5kIGRvbWFpbiJfcywgMCwgMCwgRXhjZXB0
aW9uRGV0YWlsczo6VHlwZTo6QXBwQm91bmREb21haW4gfSwgY2FsbGJhY2tJRCkpOwotICAgICAg
ICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCi0g
ICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVj
dGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQoTG9hZGluZywgInJ1bkphdmFTY3JpcHQ6IElnbm9yaW5nIHVzZXIgc2Ny
aXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSNlbmRpZgogICAgIEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwogICAg
IGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2Vu
dFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBX
VEZNb3ZlKHJlc29sdmVGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3Jp
cHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgY29uc3Qgc3Rk
OjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxkRGF0YSwgQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2Ny
aXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBPcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50
V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZERhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3ZWJG
cmFtZSA9IGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZSgqZnJhbWVJ
RCkgOiAmbWFpbldlYkZyYW1lKCk7CiAKQEAgLTM1MTksNyArMzUyMCw3IEBAIHZvaWQgV2ViUGFn
ZTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmkKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIo
KS5jbGllbnQoKS5kaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZShjb3JlV29ybGQpOwogICAg
IH0KIAotICAgIHJ1bkphdmFTY3JpcHQod2ViRnJhbWUsIFdURk1vdmUocGFyYW1ldGVycyksIHdv
cmxkRGF0YS5maXJzdCwgY2FsbGJhY2tJRCk7CisgICAgcnVuSmF2YVNjcmlwdCh3ZWJGcmFtZSwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgd29ybGREYXRhLmZpcnN0LCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyhDb250ZW50
QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzIGluY2x1ZGVDaGlsZEZyYW1lcywgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAkocmV2aXNpb24gMjY4MDI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQ4LDggKzE1NDgsOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDYWxsYmFja0lEKTsK
ICAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2Fs
bGJhY2tJRCk7CiAgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSos
IFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbnRlbnRXb3JsZElkZW50aWZp
ZXIsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdv
cmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4sIGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVy
LCBTdHJpbmc+JiB3b3JsZERhdGEsIENhbGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlw
dChXZWJGcmFtZSosIFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbnRlbnRX
b3JsZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJik7
CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiwgY29uc3Qgc3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxk
RGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKICAgICB2b2lk
IGZvcmNlUmVwYWludChDYWxsYmFja0lEKTsKICAgICB2b2lkIHRha2VTbmFwc2hvdChXZWJDb3Jl
OjpJbnRSZWN0IHNuYXBzaG90UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCB1aW50
MzJfdCBvcHRpb25zLCBDYWxsYmFja0lEKTsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNjgw
MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsOCArMjIwLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZChlbnVtOnVpbgogICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAg
ICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgdXNlIHNlbmRXaXRoQXN5bmNSZXBseSBpbnN0ZWFkIG9mIGNhbGxiYWNrSURzCi0gICAgUnVu
SmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3JlOjpSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+IGZyYW1lSUQsIHN0ZDo6cGFpcjxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0
cmluZz4gd29ybGQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFJ1bkphdmFT
Y3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChzdHJ1Y3QgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBh
cmFtZXRlcnMgcGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBzdGQ6OnBhaXI8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+
IHdvcmxkKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIE9wdGlvbmFsPFdlYkNv
cmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMpIEFzeW5jCiAKICAgICBGb3JjZVJlcGFpbnQo
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2VsZWN0QWxsKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410610</attachid>
            <date>2020-10-05 21:43:54 -0700</date>
            <delta_ts>2020-10-06 12:47:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217351-20201005214353.patch</filename>
            <type>text/plain</type>
            <size>26333</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwZDM4NjliNTRmNDA2ZDQ0
MTVkZmU0NDkxNWY2MmU3ZDBkMjJhNGEuLjJiM2EzMjdhNGQ2OTBkOGViOTJlOTg4MDdiNWQwMmJk
NWI5MTlkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMTAtMDUgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2Ugc2VuZFdp
dGhBc3luY1JlcGx5IHRvIGV2YWx1YXRlIEphdmFTY3JpcHQgaW4gYSBXZWJQYWdlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTczNTEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gbWVh
bmluZ2Z1bCBiZWhhdmlvciwgYnV0IGNvbXBsZXhpdHkgaXMgcmVtb3ZlZC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlUnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6YXNBc3luY0Z1bmN0
aW9uOndpdGhTb3VyY2VVUkw6d2l0aEFyZ3VtZW50czpmb3JjZVVzZXJHZXN0dXJlOmluRnJhbWU6
aW5Xb3JsZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHRha2VT
bmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjAtMTAtMDUgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIERvd25sb2Fk
SUQgYW4gT2JqZWN0SWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAKaW5kZXggZmNiYTg0NDI5ZGQ4NjkzYWNlNWJkOTUwMTA3M2Y4OGFjMTAxYzVlOS4uNGE0
YWQ3MWEyZTJmZjhlMTE2YmI5NTEyZGNmNTE5NGU5NTY4NWVlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0yNDg5LDggKzI0ODksOCBAQCB2b2lkIFdLUGFn
ZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlU3RhdGVDbGllbnRCYXNl
KiBjbGllbnQpCiAKIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdLUGFnZVJl
ZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZVJ1
bkphdmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPnJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgVVJM
IHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6
RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAg
Y2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUpLCAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJv
cjo6Tm9uZSkgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250ZXh0
KTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHRvSW1w
bChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1
ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1
cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4pIHsKKyAgICAgICAg
Y2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUpLCBudWxscHRyLCBjb250ZXh0KTsKICAgICB9KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
aW5kZXggZTJkMmYzZWVmNTdhNmJhOGVjMGIzMzU1ZjAwN2JiZTg0NWFlNmRkZC4uYzFjN2Q0ZmU1
OWRiMTNiNTBkMDIyODMzZTJjMjViMjVhNjZiYWNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC03OTYsNiArNzk2LDcgQEAgc3RhdGlj
IHZvaWQgaGFyZHdhcmVLZXlib2FyZEF2YWlsYWJpbGl0eUNoYW5nZWRDYWxsYmFjayhDRk5vdGlm
aWNhdGlvbkNlbnRlclJlZiwKICAgICBfcGFnZS0+c3RvcExvYWRpbmcoKTsKIH0KIAorI2lmIFVT
RShBUFBLSVQpCiBzdGF0aWMgV0tFcnJvckNvZGUgY2FsbGJhY2tFcnJvckNvZGUoV2ViS2l0OjpD
YWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQogewogICAgIHN3aXRjaCAoZXJyb3IpIHsKQEAgLTgx
Myw2ICs4MTQsNyBAQCBzdGF0aWMgV0tFcnJvckNvZGUgY2FsbGJhY2tFcnJvckNvZGUoV2ViS2l0
OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQogICAgICAgICByZXR1cm4gV0tFcnJvcldlYlZp
ZXdJbnZhbGlkYXRlZDsKICAgICB9CiB9CisjZW5kaWYKIAogLSAodm9pZClldmFsdWF0ZUphdmFT
Y3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKQEAgLTkzMiwyOCArOTM0
LDEwIEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gbnNFcnJvckZyb21FeGNlcHRpb25EZXRh
aWxzKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRlCiAgICAgICAgICAgICBmcmFtZUlEID0gbWFr
ZU9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyVHlwZT4oaWRlbnRpZmll
cik7CiAgICAgfQogCi0gICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3Js
ZCh7IGphdmFTY3JpcHRTdHJpbmcsIHNvdXJjZVVSTCwgISFhc0FzeW5jRnVuY3Rpb24sIFdURk1v
dmUoYXJndW1lbnRzTWFwKSwgISFmb3JjZVVzZXJHZXN0dXJlIH0sIGZyYW1lSUQsICp3b3JsZC0+
X2NvbnRlbnRXb3JsZC5nZXQoKSwgW2hhbmRsZXJdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHM+IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0VmFsdWVDYWxsYmFjazo6RXJyb3IgZXJyb3JDb2Rl
KSB7CisgICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCh7IGphdmFT
Y3JpcHRTdHJpbmcsIHNvdXJjZVVSTCwgISFhc0FzeW5jRnVuY3Rpb24sIFdURk1vdmUoYXJndW1l
bnRzTWFwKSwgISFmb3JjZVVzZXJHZXN0dXJlIH0sIGZyYW1lSUQsICp3b3JsZC0+X2NvbnRlbnRX
b3JsZC5nZXQoKSwgW2hhbmRsZXJdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxp
emVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFp
bHMpIHsKICAgICAgICAgaWYgKCFoYW5kbGVyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIGlmIChlcnJvckNvZGUgIT0gV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvcjo6
Tm9uZSkgewotICAgICAgICAgICAgYXV0byBlcnJvciA9IGNyZWF0ZU5TRXJyb3IoY2FsbGJhY2tF
cnJvckNvZGUoZXJyb3JDb2RlKSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3JDb2RlID09IFdlYktp
dDo6U2NyaXB0VmFsdWVDYWxsYmFjazo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpIHsKLSAg
ICAgICAgICAgICAgICAvLyBUaGUgT3duZXJXYXNJbnZhbGlkYXRlZCBjYWxsYmFjayBpcyBzeW5j
aHJvbm91cy4gV2UgZG9uJ3Qgd2FudCB0byBjYWxsIHRoZSBibG9jayBmcm9tIHdpdGhpbiBpdAot
ICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhhdCBjYW4gdHJpZ2dlciByZS1lbnRyYW5jeSBi
dWdzIGluIFdlYktpdC4KLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgZXZl
biBiZXR0ZXIgaWYgR2VuZXJpY0NhbGxiYWNrIGRpZCB0aGlzIGZvciB1cy4KLSAgICAgICAgICAg
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbaGFuZGxlciwg
ZXJyb3JdIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4p
KGlkLCBOU0Vycm9yICopKWhhbmRsZXIuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJhd0hh
bmRsZXIobmlsLCBlcnJvci5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhdXRvIHJhd0hhbmRs
ZXIgPSAodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpaGFuZGxlci5nZXQoKTsKLSAgICAgICAgICAg
IHJhd0hhbmRsZXIobmlsLCBlcnJvci5nZXQoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQogICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoaWQsIE5TRXJyb3Ig
KikpaGFuZGxlci5nZXQoKTsKICAgICAgICAgaWYgKGRldGFpbHMpIHsKICAgICAgICAgICAgIEFT
U0VSVCghc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKQEAgLTk5Niw3ICs5ODAsNyBAQCBzdGF0aWMg
UmV0YWluUHRyPE5TRXJyb3I+IG5zRXJyb3JGcm9tRXhjZXB0aW9uRGV0YWlscyhjb25zdCBXZWJD
b3JlOjpFeGNlcHRpb25EZQogICAgIC8vIGNvbnRhaW5zIHJlY2VudCB1cGRhdGVzLiBJZiB3ZSBl
dmVyIGhhdmUgYSBVSS1zaWRlIHNuYXBzaG90IG1lY2hhbmlzbSBvbiBtYWNPUywgd2Ugd2lsbCBu
ZWVkIHRvIGZhY3RvcgogICAgIC8vIGluIHNuYXBzaG90Q29uZmlndXJhdGlvbi5hZnRlclNjcmVl
blVwZGF0ZXMgYXQgdGhhdCB0aW1lLgogICAgIF9wYWdlLT50YWtlU25hcHNob3QoV2ViQ29yZTo6
ZW5jbG9zaW5nSW50UmVjdChyZWN0SW5WaWV3Q29vcmRpbmF0ZXMpLCBiaXRtYXBTaXplLCBXZWJL
aXQ6OlNuYXBzaG90T3B0aW9uc0luVmlld0Nvb3JkaW5hdGVzLCBbaGFuZGxlciwgc25hcHNob3RX
aWR0aCwgaW1hZ2VIZWlnaHRdKGNvbnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUm
IGltYWdlSGFuZGxlLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3JDb2RlKSB7Ci0g
ICAgICAgIGlmIChlcnJvckNvZGUgIT0gV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJv
cjo6Tm9uZSkgeworICAgICAgICBpZiAoZXJyb3JDb2RlICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcjo6Tm9uZSkgewogICAgICAgICAgICAgYXV0byBlcnJvciA9IGNyZWF0ZU5TRXJyb3Io
Y2FsbGJhY2tFcnJvckNvZGUoZXJyb3JDb2RlKSk7CiAgICAgICAgICAgICBoYW5kbGVyKG5pbCwg
ZXJyb3IuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBkOGIzZjNjMTk5OTI4
OGYyYTE4ZGEzN2I2ZjI0YTljOGEzYzNjZjFhLi5jNTE5NDRlYzU5OTUxZWY4YjYzZTAwYjhhZGUx
OGFlYWY4YmE1NDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMzc4NSw3ICszNzg1LDcgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0V2ViVmlld1J1bkphdmFTY3JpcHRXaXRoUGFyYW1zKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IGNvbnN0IGcKIHsKICAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKGdfdGFza19u
ZXcod2ViVmlldywgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOwogCi0gICAgZ2V0
UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV1RGTW92ZShwYXJhbXMpLCBb
dGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxp
emVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktp
dDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKFdURk1vdmUocGFyYW1zKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25h
bDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzKSB7CiAgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMg
ZXhjZXB0aW9uRGV0YWlsczsKICAgICAgICAgaWYgKGRldGFpbHMpCiAgICAgICAgICAgICBleGNl
cHRpb25EZXRhaWxzID0gKmRldGFpbHM7CkBAIC0zOTE5LDcgKzM5MTksNyBAQCB2b2lkIHdlYmtp
dF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9pbl93b3JsZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBjb25zdCBnY2hhcgogCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rh
c2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKICAgICBh
dXRvIHdvcmxkID0gQVBJOjpDb250ZW50V29ybGQ6OnNoYXJlZFdvcmxkV2l0aE5hbWUoU3RyaW5n
Ojpmcm9tVVRGOCh3b3JsZE5hbWUpKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3Jp
cHRJbkZyYW1lSW5TY3JpcHRXb3JsZCh7IFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgVVJMIHsg
fSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBXVEY6Om51bGxvcHQsIHdvcmxkLmdldCgp
LCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJp
YWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2
YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBV
UkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlIH0sIFdURjo6bnVsbG9wdCwgd29ybGQu
Z2V0KCksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUq
IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgY29uc3QgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4m
IGRldGFpbHMpIHsKICAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxzOwog
ICAgICAgICBpZiAoZGV0YWlscykKICAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSAqZGV0
YWlsczsKQEAgLTM5NjIsNyArMzk2Miw3IEBAIHN0YXRpYyB2b2lkIHJlc291cmNlc1N0cmVhbVJl
YWRDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBnCiAgICAg
V2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX3Rhc2tfZ2V0X3NvdXJj
ZV9vYmplY3QodGFzay5nZXQoKSkpOwogICAgIGdwb2ludGVyIG91dHB1dFN0cmVhbURhdGEgPSBn
X21lbW9yeV9vdXRwdXRfc3RyZWFtX2dldF9kYXRhKEdfTUVNT1JZX09VVFBVVF9TVFJFQU0ob2Jq
ZWN0KSk7CiAgICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoeyBT
dHJpbmc6OmZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ2NoYXIqPihvdXRwdXRTdHJl
YW1EYXRhKSksIFVSTCB7IH0sIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRydWUgfSwKLSAgICAgICAg
W3Rhc2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUs
IE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcikgeworICAgICAgICBbdGFza10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscykg
ewogICAgICAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxzOwogICAgICAg
ICAgICAgaWYgKGRldGFpbHMpCiAgICAgICAgICAgICAgICAgZXhjZXB0aW9uRGV0YWlscyA9ICpk
ZXRhaWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3Nv
Y2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIu
Y3BwCmluZGV4IGQyMDQ1MTk5YjQxNTU3YjkzMmFlZDFlMzhlNGMyNWM0ZWUzMmRjNGEuLmRiMjNm
NzVjYTJjZThmMWVmOTU2ODM2NjMyNTIxMzdhNTVmZGYyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0
L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2
b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aW5zcGVjdChjb25zdCBTdHJpbmcm
IGhvc3RBbmRQb3J0LCBDb25uZWN0aQogdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRs
ZXI6OnJ1blNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHsKICAgICBtX3BhZ2UucnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKHsgc2NyaXB0LCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0
LCBmYWxzZSB9LCAKLSAgICAgICAgW10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRp
b25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBleGNlcHRpb25EZXRhaWxzLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKSB7CisgICAgICAgIFtdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwg
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZXhjZXB0aW9uRGV0YWlscykgewog
ICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbkRldGFpbHMpCiAgICAgICAgICAgICAgICAgTE9HX0VS
Uk9SKCJFeGNlcHRpb24gcnVubmluZyBzY3JpcHQgXCIlc1wiIiwgZXhjZXB0aW9uRGV0YWlscy0+
bWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IGY2M2I3NGQzODIxYzAyYmRmNTkyMGMxOGE1ODk3NzcxY2Ew
YTVkMTguLmI5NGQ1MDI5ZGFjOTY4MjEzZDBmMzA1YjI3MWU0NTg1ZGRiOWNlZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDA4MSwxOCArNDA4MSwxOCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpCiAg
ICAgICAgIGxhdW5jaFByb2Nlc3MoeyB9LCBQcm9jZXNzTGF1bmNoUmVhc29uOjpJbml0aWFsUHJv
Y2Vzcyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUo
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lk
IFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFJ1bkphdmFTY3JpcHRQYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSosIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+
Jik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBydW5KYXZhU2NyaXB0SW5GcmFtZUluU2Ny
aXB0V29ybGQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBBUEk6OkNvbnRlbnRX
b3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpLCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRp
b25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3Zv
aWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGNvbnN0IE9wdGlvbmFsPEV4
Y2VwdGlvbkRldGFpbHM+Jik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICAvLyBGb3IgYmFj
a3dhcmQtY29tcGF0aWJpbGl0eSBzdXBwb3J0IHJ1bm5pbmcgc2NyaXB0IGluIGEgV2ViVmlldyB3
aGljaCBoYXMgbm90IGRvbmUgYW55IGxvYWRzIHlldHMuCiAgICAgbGF1bmNoSW5pdGlhbFByb2Nl
c3NJZk5lY2Vzc2FyeSgpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAg
ICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgeyB9LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpV
bmtub3duKTsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihudWxscHRyLCB7IH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC00MTAwLDEyICs0MTAwLDE4IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFt
ZXRlcnMmJiBwCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocGFnZUNsaWVudCgp
LmNhblRha2VGb3JlZ3JvdW5kQXNzZXJ0aW9ucygpKQogICAgICAgICBhY3Rpdml0eSA9IG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkph
dmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCJfcyk7Ci0gICAgZWxzZQogI2VuZGlmCi0gICAg
ICAgIGFjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHko
IldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkIl9zKTsKIAot
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBXVEZNb3ZlKGFjdGl2aXR5KSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHBhcmFtZXRlcnMsIGZyYW1lSUQsIHdv
cmxkLndvcmxkRGF0YSgpLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQocGFyYW1l
dGVycywgZnJhbWVJRCwgd29ybGQud29ybGREYXRhKCkpLCBbYWN0aXZpdHkgPSBXVEZNb3ZlKGFj
dGl2aXR5KSwgY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbildIChj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIE9wdGlvbmFsPEV4Y2VwdGlv
bkRldGFpbHM+IGRldGFpbHMpIG11dGFibGUgeworICAgICAgICBpZiAoZGF0YVJlZmVyZW5jZS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgZGV0YWls
cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7CisgICAgICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkYXRhUmVmZXJl
bmNlLnNpemUoKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBk
YXRhUmVmZXJlbmNlLnNpemUoKSk7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KFdURk1vdmUoZGF0YSkpLnB0cigpLCBkZXRhaWxzKTsK
KyAgICB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJl
cHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTcxNjAsMjYgKzcxNjYsNiBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFS
ZWZlcmVuY2UsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKLXsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxTY3Jp
cHRWYWx1ZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKLSAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBMb2cgZXJyb3Igb3IgYXNzZXJ0LgotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGRhdGFSZWZlcmVuY2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNhbGxiYWNr
LT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUobnVsbHB0ciwgZGV0YWlscyk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBkYXRh
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGF0YVJlZmVyZW5jZS5zaXplKCkpOwotICAgIGRhdGEu
YXBwZW5kKGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7Ci0KLSAg
ICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjphZG9wdChXVEZNb3ZlKGRhdGEpKS5wdHIoKSwgZGV0YWlscyk7Ci19Ci0K
IHZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPElu
dFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIGNv
bnN0IEZsb2F0Qm94RXh0ZW50JiBjb21wdXRlZFBhZ2VNYXJnaW4sIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxDb21wdXRlZFBh
Z2VzQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCA4MjE5ZWJiNTNiMWNmZTM2MzlmMmRjMTZjNzdjOTFmY2Y1ZmViMDFiLi44YmIw
NTkwYjExNjhiOGMzOWVhNjU5NjA1YWZkODIxODFhODhiN2VkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzY1LDcgKzM2NSw2IEBAIGVudW0gY2xhc3MgV2ViQ29u
dGVudE1vZGUgOiB1aW50OF90OwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpEYXRhKj4g
RGF0YUNhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8dWludDY0X3Q+IFVuc2lnbmVk
Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmPiBTdHJpbmdD
YWxsYmFjazsKLXR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4+IFNjcmlwdFZhbHVlQ2Fs
bGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBXZWJDb3JlOjpGb250QXR0cmli
dXRlcyY+IEZvbnRBdHRyaWJ1dGVzQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmPiBTZWxlY3Rpb25Db250
ZXh0Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxib29sPiBCb29sQ2FsbGJhY2s7
CkBAIC0xMTQwLDggKzExMzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dl
YkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKICAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsK
ICAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBGdW5jdGlvbjx2
b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWUoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwg
V1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFs
PFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3Js
ZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBPcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+LCBBUEk6OkNvbnRlbnRXb3JsZCYsIEZ1bmN0aW9uPHZvaWQoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBjb25zdCBPcHRpb25hbDxXZWJD
b3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZy
YW1lSW5TY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBPcHRp
b25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBBUEk6OkNvbnRlbnRXb3JsZCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKICAgICB2b2lkIGZvcmNlUmVw
YWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmKTsKIAogICAgIGZsb2F0IGhlYWRlckhlaWdodChX
ZWJGcmFtZVByb3h5Jik7CkBAIC0yMTMwLDcgKzIxMjksNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
Ym9vbENhbGxiYWNrKGJvb2wgcmVzdWx0LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHN0cmluZ0Nh
bGxiYWNrKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgaW52YWxpZGF0ZVN0
cmluZ0NhbGxiYWNrKENhbGxiYWNrSUQpOwotICAgIHZvaWQgc2NyaXB0VmFsdWVDYWxsYmFjayhj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRh
aWxzPiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiwgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmlu
dGluZywgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbiwg
Q2FsbGJhY2tJRCk7CiAgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmRDYWxsYmFjayhjb25zdCBTdHJp
bmcmLCBib29sLCBpbnQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgdW5zaWduZWRDYWxsYmFjayh1
aW50NjRfdCwgQ2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNDlkMjY0ZGI2YjE2ZTlmNjcyMWJjMjViMmNiNTAz
MGUzMmRiNDgyOC4uNDIxNDVmMmM1YzA0YjMzOGFiMDQxZmIwNmQ2OTY4NmMyZjU3OTE1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpA
QCAtMTY3LDcgKzE2Nyw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU3RyaW5n
Q2FsbGJhY2soU3RyaW5nIHJlc3VsdFN0cmluZywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiAgICAgQm9vbENhbGxiYWNrKGJvb2wgcmVzdWx0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKICAgICBJbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCi0gICAgU2NyaXB0VmFsdWVDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2Ug
cmVzdWx0RGF0YSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgQ29tcHV0ZWRQYWdlc0NhbGxiYWNr
KFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFj
dG9yRm9yUHJpbnRpbmcsIFdlYkNvcmU6OlJlY3RFZGdlczxmbG9hdD4gY29tcHV0ZWRQYWdlTWFy
Z2luLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBWYWxpZGF0ZUNvbW1hbmRD
YWxsYmFjayhTdHJpbmcgY29tbWFuZCwgYm9vbCBpc0VuYWJsZWQsIGludDMyX3Qgc3RhdGUsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFVuc2lnbmVkQ2FsbGJhY2sodWludDY0
X3QgcmVzdWx0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYmUwYjU1Y2Y2NDc4ZDA3M2Mz
MDY4NGE0NGY2YzYzNzg3MmJhNzc4ZS4uMjYwYTBlMmFjYjRiZTllYTdiM2QwZjNhYmNmZDA2MDJm
NTE0NzJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTM0NjMsMjMgKzM0NjMsMzMgQEAgS2V5Ym9hcmRVSU1vZGUgV2ViUGFnZTo6a2V5Ym9h
cmRVSU1vZGUoKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxLZXlib2FyZFVJTW9kZT4oKGZ1bGxL
ZXlib2FyZEFjY2Vzc0VuYWJsZWQgPyBLZXlib2FyZEFjY2Vzc0Z1bGwgOiBLZXlib2FyZEFjY2Vz
c0RlZmF1bHQpIHwgKG1fdGFiVG9MaW5rcyA/IEtleWJvYXJkQWNjZXNzVGFic1RvTGlua3MgOiAw
KSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgQ29udGVudFdvcmxkSWRlbnRpZmll
ciB3b3JsZElkZW50aWZpZXIsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6
cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycywgQ29udGVudFdvcmxkSWRlbnRpZmllciB3b3JsZElkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICAvLyBOT1RFOiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBydW5uaW5nIHNjcmlwdHMg
dGhhdCB0aGUgb2JqZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKICAgICAvLyBkaXNhcHBlYXIgZHVy
aW5nIHNjcmlwdCBleGVjdXRpb24uCiAKICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+Y29yZUZy
YW1lKCkpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1
ZUNhbGxiYWNrKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZh
U2NyaXB0OiBUYXJnZXQgZnJhbWUgY291bGQgbm90IGJlIGZvdW5kIGluIHRoZSBwYWdlIl9zLCAw
LCAwLCBFeGNlcHRpb25EZXRhaWxzOjpUeXBlOjpJbnZhbGlkVGFyZ2V0RnJhbWUgfSwgY2FsbGJh
Y2tJRCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIEV4Y2VwdGlvbkRldGFpbHMg
eyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdDogVGFyZ2V0IGZyYW1lIGNvdWxkIG5vdCBi
ZSBmb3VuZCBpbiB0aGUgcGFnZSJfcywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6SW52
YWxpZFRhcmdldEZyYW1lIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byog
d29ybGQgPSBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+d29ybGRGb3JJZGVudGlmaWVyKHdvcmxk
SWRlbnRpZmllcik7CiAgICAgaWYgKCF3b3JsZCkgewotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsg
IlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQ6IENhbm5vdCBmaW5kIHNwZWNpZmllZCBjb250
ZW50IHdvcmxkIl9zIH0sIGNhbGxiYWNrSUQpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQ6IENh
bm5vdCBmaW5kIHNwZWNpZmllZCBjb250ZW50IHdvcmxkIl9zIH0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byByZXNvbHZlRnVuY3Rpb24gPSBbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCB0aGlzLCB3b3JsZCA9IG1ha2VSZWYoKndvcmxkKSwgZnJhbWUgPSBtYWtl
UmVmKCpmcmFtZSksIGNhbGxiYWNrSURdKFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0KSB7CisjaWYg
RU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQorICAgIGlmIChmcmFtZS0+c2hvdWxkRW5hYmxlSW5B
cHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQg
aW4gYSBmcmFtZSB0aGF0IGlzIG5vdCBpbiBhbiBhcHAtYm91bmQgZG9tYWluIl9zLCAwLCAwLCBF
eGNlcHRpb25EZXRhaWxzOjpUeXBlOjpBcHBCb3VuZERvbWFpbiB9KTsKKyAgICAgICAgaWYgKGF1
dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQorICAgICAgICAg
ICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9y
IG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKExvYWRpbmcsICJydW5KYXZhU2NyaXB0OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmpl
Y3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisjZW5kaWYKKworICAgIGF1dG8gcmVzb2x2ZUZ1bmN0aW9uID0gW3dvcmxkID0gbWFrZVJlZigq
d29ybGQpLCBmcmFtZSA9IG1ha2VSZWYoKmZyYW1lKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0KSBtdXRhYmxl
IHsKICAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFJlc3Vs
dFZhbHVlOwogICAgICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgICAgICBzZXJpYWxpemVkUmVz
dWx0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShmcmFtZS0+anNDb250ZXh0
Rm9yV29ybGQod29ybGQucHRyKCkpLApAQCAtMzQ5NCwyMiArMzUwNCwxMyBAQCB2b2lkIFdlYlBh
Z2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVy
cyYmIHBhcmFtZXRlcgogICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIGRldGFpbHMg
PSByZXN1bHQuZXJyb3IoKTsKIAotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgZGV0YWlscywgY2FsbGJhY2tJRCkp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkYXRhUmVmZXJlbmNlLCBkZXRhaWxzKTsKICAg
ICB9OwotI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKLSAgICBpZiAoZnJhbWUtPnNob3Vs
ZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7Ci0gICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayh7IH0sIEV4Y2VwdGlv
bkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBhIGZyYW1lIHRoYXQg
aXMgbm90IGluIGFuIGFwcC1ib3VuZCBkb21haW4iX3MsIDAsIDAsIEV4Y2VwdGlvbkRldGFpbHM6
OlR5cGU6OkFwcEJvdW5kRG9tYWluIH0sIGNhbGxiYWNrSUQpKTsKLSAgICAgICAgaWYgKGF1dG8q
IGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQotICAgICAgICAgICAg
ZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNz
YWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5v
bi1hcHAgYm91bmQgZG9tYWluLiIpOwotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKExvYWRpbmcsICJydW5KYXZhU2NyaXB0OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rp
b24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0j
ZW5kaWYKICAgICBKU0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKICAgICBmcmFtZS0+Y29y
ZUZyYW1lKCktPnNjcmlwdCgpLmV4ZWN1dGVBc3luY2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJbldv
cmxkKHdvcmxkLT5jb3JlV29ybGQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShyZXNv
bHZlRnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZUlu
U2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBPcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIGNvbnN0IHN0ZDo6cGFpcjxDb250
ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZERhdGEsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKK3ZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRp
ZmllciwgU3RyaW5nPiYgd29ybGREYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHM+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogd2ViRnJhbWUgPSBmcmFt
ZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoKmZyYW1lSUQpIDogJm1haW5X
ZWJGcmFtZSgpOwogCkBAIC0zNTE5LDcgKzM1MjAsNyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFT
Y3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFt
ZQogICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoR2xvYmFsT2Jq
ZWN0QXZhaWxhYmxlKGNvcmVXb3JsZCk7CiAgICAgfQogCi0gICAgcnVuSmF2YVNjcmlwdCh3ZWJG
cmFtZSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgd29ybGREYXRhLmZpcnN0LCBjYWxsYmFja0lEKTsK
KyAgICBydW5KYXZhU2NyaXB0KHdlYkZyYW1lLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCB3b3JsZERh
dGEuZmlyc3QsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdl
OjpnZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMg
aW5jbHVkZUNoaWxkRnJhbWVzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZDUzZDMwNDNmNWE3NjEwZGViYmUz
MjU3MGE0OGQwZTI1YWY0N2UxMi4uMDE1MGE5MjVjZDgyMmExNDcwOGVkYWNmNzRhYTBmYmNlZjc1
ZTFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
MTU0OCw4ICsxNTQ4LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJj
aGl2ZURhdGEoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9m
RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHJ1
bkphdmFTY3JpcHQoV2ViRnJhbWUqLCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYm
LCBDb250ZW50V29ybGRJZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHJ1bkphdmFT
Y3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVy
cyYmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBjb25zdCBzdGQ6OnBhaXI8
Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiYgd29ybGREYXRhLCBDYWxsYmFja0lEKTsK
KyAgICB2b2lkIHJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqLCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycyYmLCBDb250ZW50V29ybGRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHM+Jik+JiYpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJblNj
cmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVu
dGlmaWVyLCBTdHJpbmc+JiB3b3JsZERhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0
YWlscz4mKT4mJik7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoQ2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3QsIFdlYkNvcmU6Oklu
dFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywgQ2FsbGJhY2tJRCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CmluZGV4IDM3YjNjMzMyYWY1NTBjZTYyNzk4ZDMyNWExMDdlNjYxNTNlY2UxZDUuLjBjOWQ5Njdi
NmNkNjQ0NTUxZWFlNzNhMzg5ZDYyNmFiNjcxY2NhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjIwLDggKzIy
MCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktp
dDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgR2V0U291cmNlRm9yRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogICAgIEdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIAotICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCB1c2Ugc2VuZFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgY2FsbGJhY2tJRHMK
LSAgICBSdW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoc3RydWN0IFdlYkNvcmU6OlJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpwYWlyPFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRp
ZmllciwgU3RyaW5nPiB3b3JsZCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAg
UnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3JlOjpSdW5KYXZh
U2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIHN0ZDo6cGFpcjxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIs
IFN0cmluZz4gd29ybGQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscykgQXN5bmMKIAogICAgIEZvcmNl
UmVwYWludChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBTZWxlY3RBbGwoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410680</attachid>
            <date>2020-10-06 12:47:34 -0700</date>
            <delta_ts>2020-10-06 13:02:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217351-20201006124733.patch</filename>
            <type>text/plain</type>
            <size>26689</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwZDM4NjliNTRmNDA2ZDQ0
MTVkZmU0NDkxNWY2MmU3ZDBkMjJhNGEuLjQ4MGYxOWUzOGJmNzM5ODQ5MDU3YjI0NjVjYWIzNjMw
ZWMyYmY4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMTAtMDYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2Ugc2VuZFdp
dGhBc3luY1JlcGx5IHRvIGV2YWx1YXRlIEphdmFTY3JpcHQgaW4gYSBXZWJQYWdlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTczNTEKKworICAgICAg
ICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBtZWFu
aW5nZnVsIGJlaGF2aW9yLCBidXQgY29tcGxleGl0eSBpcyByZW1vdmVkLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0
SW5NYWluRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDphc0FzeW5jRnVuY3Rp
b246d2l0aFNvdXJjZVVSTDp3aXRoQXJndW1lbnRzOmZvcmNlVXNlckdlc3R1cmU6aW5GcmFtZTpp
bldvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgdGFrZVNu
YXBzaG90V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlwdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMC0xMC0wNSAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1ha2UgRG93bmxvYWRJ
RCBhbiBPYmplY3RJZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAppbmRleCBmY2JhODQ0MjlkZDg2OTNhY2U1YmQ5NTAxMDczZjg4YWMxMDFjNWU5Li40YTRh
ZDcxYTJlMmZmOGUxMTZiYjk1MTJkY2Y1MTk0ZTk1Njg1ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0ODksOCArMjQ4OSw4IEBAIHZvaWQgV0tQYWdl
U2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2Uq
IGNsaWVudCkKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQYWdlUmVm
IHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlUnVu
SmF2YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+cnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgdG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCBVUkwg
eyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlIH0sIFtjb250ZXh0LCBjYWxsYmFja10oQVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHJldHVyblZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpF
eGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBj
YWxsYmFjayh0b0FQSShyZXR1cm5WYWx1ZSksIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9y
OjpOb25lKSA/IHRvQVBJKEFQSTo6RXJyb3I6OmNyZWF0ZSgpLnB0cigpKSA6IDAsIGNvbnRleHQp
OworICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgdG9JbXBs
KHNjcmlwdFJlZiktPnN0cmluZygpLCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0cnVl
IH0sIFtjb250ZXh0LCBjYWxsYmFja10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHJldHVy
blZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPikgeworICAgICAgICBj
YWxsYmFjayh0b0FQSShyZXR1cm5WYWx1ZSksIG51bGxwdHIsIGNvbnRleHQpOwogICAgIH0pOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpp
bmRleCBlMmQyZjNlZWY1N2E2YmE4ZWMwYjMzNTVmMDA3YmJlODQ1YWU2ZGRkLi5jMWM3ZDRmZTU5
ZGIxM2I1MGQwMjI4MzNlMmMyNWIyNWE2NmJhY2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTc5Niw2ICs3OTYsNyBAQCBzdGF0aWMg
dm9pZCBoYXJkd2FyZUtleWJvYXJkQXZhaWxhYmlsaXR5Q2hhbmdlZENhbGxiYWNrKENGTm90aWZp
Y2F0aW9uQ2VudGVyUmVmLAogICAgIF9wYWdlLT5zdG9wTG9hZGluZygpOwogfQogCisjaWYgVVNF
KEFQUEtJVCkKIHN0YXRpYyBXS0Vycm9yQ29kZSBjYWxsYmFja0Vycm9yQ29kZShXZWJLaXQ6OkNh
bGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCiB7CiAgICAgc3dpdGNoIChlcnJvcikgewpAQCAtODEz
LDYgKzgxNCw3IEBAIHN0YXRpYyBXS0Vycm9yQ29kZSBjYWxsYmFja0Vycm9yQ29kZShXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCiAgICAgICAgIHJldHVybiBXS0Vycm9yV2ViVmll
d0ludmFsaWRhdGVkOwogICAgIH0KIH0KKyNlbmRpZgogCiAtICh2b2lkKWV2YWx1YXRlSmF2YVNj
cmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewpAQCAtOTMyLDI4ICs5MzQs
MTAgQEAgc3RhdGljIFJldGFpblB0cjxOU0Vycm9yPiBuc0Vycm9yRnJvbUV4Y2VwdGlvbkRldGFp
bHMoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGUKICAgICAgICAgICAgIGZyYW1lSUQgPSBtYWtl
T2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXJUeXBlPihpZGVudGlmaWVy
KTsKICAgICB9CiAKLSAgICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxk
KHsgamF2YVNjcmlwdFN0cmluZywgc291cmNlVVJMLCAhIWFzQXN5bmNGdW5jdGlvbiwgV1RGTW92
ZShhcmd1bWVudHNNYXApLCAhIWZvcmNlVXNlckdlc3R1cmUgfSwgZnJhbWVJRCwgKndvcmxkLT5f
Y29udGVudFdvcmxkLmdldCgpLCBbaGFuZGxlcl0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUq
IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWls
cz4gZGV0YWlscywgV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvciBlcnJvckNvZGUp
IHsKKyAgICBfcGFnZS0+cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHsgamF2YVNj
cmlwdFN0cmluZywgc291cmNlVVJMLCAhIWFzQXN5bmNGdW5jdGlvbiwgV1RGTW92ZShhcmd1bWVu
dHNNYXApLCAhIWZvcmNlVXNlckdlc3R1cmUgfSwgZnJhbWVJRCwgKndvcmxkLT5fY29udGVudFdv
cmxkLmdldCgpLCBbaGFuZGxlcl0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWls
cykgewogICAgICAgICBpZiAoIWhhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgaWYgKGVycm9yQ29kZSAhPSBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yOjpO
b25lKSB7Ci0gICAgICAgICAgICBhdXRvIGVycm9yID0gY3JlYXRlTlNFcnJvcihjYWxsYmFja0Vy
cm9yQ29kZShlcnJvckNvZGUpKTsKLSAgICAgICAgICAgIGlmIChlcnJvckNvZGUgPT0gV2ViS2l0
OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCkgewotICAg
ICAgICAgICAgICAgIC8vIFRoZSBPd25lcldhc0ludmFsaWRhdGVkIGNhbGxiYWNrIGlzIHN5bmNo
cm9ub3VzLiBXZSBkb24ndCB3YW50IHRvIGNhbGwgdGhlIGJsb2NrIGZyb20gd2l0aGluIGl0Ci0g
ICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGF0IGNhbiB0cmlnZ2VyIHJlLWVudHJhbmN5IGJ1
Z3MgaW4gV2ViS2l0LgotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBldmVu
IGJldHRlciBpZiBHZW5lcmljQ2FsbGJhY2sgZGlkIHRoaXMgZm9yIHVzLgotICAgICAgICAgICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtoYW5kbGVyLCBl
cnJvcl0gewotICAgICAgICAgICAgICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXiko
aWQsIE5TRXJyb3IgKikpaGFuZGxlci5nZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgcmF3SGFu
ZGxlcihuaWwsIGVycm9yLmdldCgpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGF1dG8gcmF3SGFuZGxl
ciA9ICh2b2lkICheKShpZCwgTlNFcnJvciAqKSloYW5kbGVyLmdldCgpOwotICAgICAgICAgICAg
cmF3SGFuZGxlcihuaWwsIGVycm9yLmdldCgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCiAgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShpZCwgTlNFcnJvciAq
KSloYW5kbGVyLmdldCgpOwogICAgICAgICBpZiAoZGV0YWlscykgewogICAgICAgICAgICAgQVNT
RVJUKCFzZXJpYWxpemVkU2NyaXB0VmFsdWUpOwpAQCAtOTk2LDcgKzk4MCw3IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8TlNFcnJvcj4gbnNFcnJvckZyb21FeGNlcHRpb25EZXRhaWxzKGNvbnN0IFdlYkNv
cmU6OkV4Y2VwdGlvbkRlCiAgICAgLy8gY29udGFpbnMgcmVjZW50IHVwZGF0ZXMuIElmIHdlIGV2
ZXIgaGF2ZSBhIFVJLXNpZGUgc25hcHNob3QgbWVjaGFuaXNtIG9uIG1hY09TLCB3ZSB3aWxsIG5l
ZWQgdG8gZmFjdG9yCiAgICAgLy8gaW4gc25hcHNob3RDb25maWd1cmF0aW9uLmFmdGVyU2NyZWVu
VXBkYXRlcyBhdCB0aGF0IHRpbWUuCiAgICAgX3BhZ2UtPnRha2VTbmFwc2hvdChXZWJDb3JlOjpl
bmNsb3NpbmdJbnRSZWN0KHJlY3RJblZpZXdDb29yZGluYXRlcyksIGJpdG1hcFNpemUsIFdlYktp
dDo6U25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0ZXMsIFtoYW5kbGVyLCBzbmFwc2hvdFdp
ZHRoLCBpbWFnZUhlaWdodF0oY29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYg
aW1hZ2VIYW5kbGUsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvckNvZGUpIHsKLSAg
ICAgICAgaWYgKGVycm9yQ29kZSAhPSBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9y
OjpOb25lKSB7CisgICAgICAgIGlmIChlcnJvckNvZGUgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6
OkVycm9yOjpOb25lKSB7CiAgICAgICAgICAgICBhdXRvIGVycm9yID0gY3JlYXRlTlNFcnJvcihj
YWxsYmFja0Vycm9yQ29kZShlcnJvckNvZGUpKTsKICAgICAgICAgICAgIGhhbmRsZXIobmlsLCBl
cnJvci5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IGQ4YjNmM2MxOTk5Mjg4
ZjJhMThkYTM3YjZmMjRhOWM4YTNjM2NmMWEuLjI2NzZkYjllMzAyNjU2NDI1NDY1MmIzNjE0M2Qz
M2U4OTk2MjJiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYlZpZXcuY3BwCkBAIC0zNzg1LDEwICszNzg1LDEwIEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0V2l0aFBhcmFtcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBjb25zdCBnCiB7CiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tf
bmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKIAotICAgIGdl
dFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdURk1vdmUocGFyYW1zKSwg
W3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFs
aXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJL
aXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZShXVEZNb3ZlKHBhcmFtcyksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0o
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9u
YWw8RXhjZXB0aW9uRGV0YWlscz4mJiBkZXRhaWxzKSB7CiAgICAgICAgIEV4Y2VwdGlvbkRldGFp
bHMgZXhjZXB0aW9uRGV0YWlsczsKICAgICAgICAgaWYgKGRldGFpbHMpCi0gICAgICAgICAgICBl
eGNlcHRpb25EZXRhaWxzID0gKmRldGFpbHM7CisgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxz
ID0gKldURk1vdmUoZGV0YWlscyk7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0
Q2FsbGJhY2soc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBleGNlcHRpb25EZXRhaWxzLCB0YXNrLmdl
dCgpKTsKICAgICB9KTsKIH0KQEAgLTM5MTksNyArMzkxOSw3IEBAIHZvaWQgd2Via2l0X3dlYl92
aWV3X3J1bl9qYXZhc2NyaXB0X2luX3dvcmxkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0
IGdjaGFyCiAKICAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXco
d2ViVmlldywgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOwogICAgIGF1dG8gd29y
bGQgPSBBUEk6OkNvbnRlbnRXb3JsZDo6c2hhcmVkV29ybGRXaXRoTmFtZShTdHJpbmc6OmZyb21V
VEY4KHdvcmxkTmFtZSkpOwotICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluRnJh
bWVJblNjcmlwdFdvcmxkKHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBVUkwgeyB9LCBmYWxz
ZSwgV1RGOjpudWxsb3B0LCB0cnVlIH0sIFdURjo6bnVsbG9wdCwgd29ybGQuZ2V0KCksIFt0YXNr
ID0gV1RGTW92ZSh0YXNrKV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpD
YWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0
SW5GcmFtZUluU2NyaXB0V29ybGQoeyBTdHJpbmc6OmZyb21VVEY4KHNjcmlwdCksIFVSTCB7IH0s
IGZhbHNlLCBXVEY6Om51bGxvcHQsIHRydWUgfSwgV1RGOjpudWxsb3B0LCB3b3JsZC5nZXQoKSwg
W3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFs
aXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiYmIGRldGFpbHMpIHsK
ICAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxzOwogICAgICAgICBpZiAo
ZGV0YWlscykKICAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSAqZGV0YWlsczsKQEAgLTM5
NjIsMTAgKzM5NjIsMTAgQEAgc3RhdGljIHZvaWQgcmVzb3VyY2VzU3RyZWFtUmVhZENhbGxiYWNr
KEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGcKICAgICBXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfdGFza19nZXRfc291cmNlX29iamVjdCh0
YXNrLmdldCgpKSk7CiAgICAgZ3BvaW50ZXIgb3V0cHV0U3RyZWFtRGF0YSA9IGdfbWVtb3J5X291
dHB1dF9zdHJlYW1fZ2V0X2RhdGEoR19NRU1PUllfT1VUUFVUX1NUUkVBTShvYmplY3QpKTsKICAg
ICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IFN0cmluZzo6ZnJv
bVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBnY2hhcio+KG91dHB1dFN0cmVhbURhdGEpKSwg
VVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LAotICAgICAgICBbdGFza10oQVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8
RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7
CisgICAgICAgIFt0YXNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNj
cmlwdFZhbHVlLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiYmIGRldGFpbHMpIHsKICAgICAg
ICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKICAgICAgICAgICAgIGlm
IChkZXRhaWxzKQotICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSAqZGV0YWlsczsK
KyAgICAgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gKldURk1vdmUoZGV0YWlscyk7CiAg
ICAgICAgICAgICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENhbGxiYWNrKHNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSwgZXhjZXB0aW9uRGV0YWlscywgdGFzay5nZXQoKSk7CiAgICAgICAgIH0pOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCmlu
ZGV4IGQyMDQ1MTk5YjQxNTU3YjkzMmFlZDFlMzhlNGMyNWM0ZWUzMmRjNGEuLmRiMjNmNzVjYTJj
ZThmMWVmOTU2ODM2NjMyNTIxMzdhNTVmZGYyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90
ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFJl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aW5zcGVjdChjb25zdCBTdHJpbmcmIGhvc3RB
bmRQb3J0LCBDb25uZWN0aQogdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnJ1
blNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHsKICAgICBtX3BhZ2UucnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKHsgc2NyaXB0LCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmYWxz
ZSB9LCAKLSAgICAgICAgW10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxX
ZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBleGNlcHRpb25EZXRhaWxzLCBDYWxsYmFja0Jhc2U6
OkVycm9yKSB7CisgICAgICAgIFtdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZXhjZXB0aW9uRGV0YWlscykgewogICAgICAg
ICAgICAgaWYgKGV4Y2VwdGlvbkRldGFpbHMpCiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJF
eGNlcHRpb24gcnVubmluZyBzY3JpcHQgXCIlc1wiIiwgZXhjZXB0aW9uRGV0YWlscy0+bWVzc2Fn
ZS51dGY4KCkuZGF0YSgpKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IGY2M2I3NGQzODIxYzAyYmRmNTkyMGMxOGE1ODk3NzcxY2EwYTVkMTgu
LjFjZmExMGEyZGUxNmIyMmM2ZWFlOGU3YzNmOWFhMDI0MGEwMzMxYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDA4MSwxOCArNDA4MSwxOCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpCiAgICAgICAg
IGxhdW5jaFByb2Nlc3MoeyB9LCBQcm9jZXNzTGF1bmNoUmVhc29uOjpJbml0aWFsUHJvY2Vzcyk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWls
cz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBh
Z2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSosIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYg
Y2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29y
bGQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBBUEk6OkNvbnRlbnRXb3JsZDo6
cGFnZUNvbnRlbnRXb3JsZCgpLCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZh
U2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRh
aWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+IGZyYW1lSUQsIEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGNvbnN0IE9wdGlvbmFsPEV4Y2VwdGlv
bkRldGFpbHM+Jik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICAvLyBGb3IgYmFja3dhcmQt
Y29tcGF0aWJpbGl0eSBzdXBwb3J0IHJ1bm5pbmcgc2NyaXB0IGluIGEgV2ViVmlldyB3aGljaCBo
YXMgbm90IGRvbmUgYW55IGxvYWRzIHlldHMuCiAgICAgbGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5l
Y2Vzc2FyeSgpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIGNh
bGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgeyB9LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3du
KTsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihudWxscHRyLCB7IH0pOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC00MTAwLDEyICs0MTAwLDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
dW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMm
JiBwCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocGFnZUNsaWVudCgpLmNhblRh
a2VGb3JlZ3JvdW5kQXNzZXJ0aW9ucygpKQogICAgICAgICBhY3Rpdml0eSA9IG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3Jp
cHRJbkZyYW1lSW5TY3JpcHRXb3JsZCJfcyk7Ci0gICAgZWxzZQogI2VuZGlmCi0gICAgICAgIGFj
dGl2aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBh
Z2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkIl9zKTsKIAotICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBXVEZNb3ZlKGFjdGl2aXR5KSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2
YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHBhcmFtZXRlcnMsIGZyYW1lSUQsIHdvcmxkLndv
cmxkRGF0YSgpLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQocGFyYW1ldGVycywg
ZnJhbWVJRCwgd29ybGQud29ybGREYXRhKCkpLCBbYWN0aXZpdHkgPSBXVEZNb3ZlKGFjdGl2aXR5
KSwgY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbildIChjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFp
bHM+JiYgZGV0YWlscykgbXV0YWJsZSB7CisgICAgICAgIGlmIChkYXRhUmVmZXJlbmNlLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihudWxscHRyLCBXVEZNb3ZlKGRl
dGFpbHMpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBWZWN0b3I8
dWludDhfdD4gZGF0YTsKKyAgICAgICAgZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRhdGFS
ZWZlcmVuY2Uuc2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoZGF0YVJlZmVyZW5jZS5kYXRh
KCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoV1RGTW92ZShkYXRhKSkucHRyKCksIFdURk1v
dmUoZGV0YWlscykpOworICAgIH0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVuZGVy
VHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJp
bmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtNzE2MCwy
NiArNzE2Niw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2so
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWls
cywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQotewotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxi
YWNrcy50YWtlPFNjcmlwdFZhbHVlQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwotICAgIGlmICghY2Fs
bGJhY2spIHsKLSAgICAgICAgLy8gRklYTUU6IExvZyBlcnJvciBvciBhc3NlcnQuCi0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YVJlZmVyZW5jZS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShudWxscHRyLCBk
ZXRhaWxzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhOwotICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkYXRhUmVmZXJlbmNlLnNpemUo
KSk7Ci0gICAgZGF0YS5hcHBlbmQoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uu
c2l6ZSgpKTsKLQotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUo
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KFdURk1vdmUoZGF0YSkpLnB0cigpLCBk
ZXRhaWxzKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjayhj
b25zdCBWZWN0b3I8SW50UmVjdD4mIHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JG
b3JQcmludGluZywgY29uc3QgRmxvYXRCb3hFeHRlbnQmIGNvbXB1dGVkUGFnZU1hcmdpbiwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50
YWtlPENvbXB1dGVkUGFnZXNDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDgyMTllYmI1M2IxY2ZlMzYzOWYyZGMxNmM3N2M5MWZj
ZjVmZWIwMWIuLjhiYjA1OTBiMTE2OGI4YzM5ZWE2NTk2MDVhZmQ4MjE4MWE4OGI3ZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zNjUsNyArMzY1LDYgQEAgZW51
bSBjbGFzcyBXZWJDb250ZW50TW9kZSA6IHVpbnQ4X3Q7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFj
azxBUEk6OkRhdGEqPiBEYXRhQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazx1aW50
NjRfdD4gVW5zaWduZWRDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFN0
cmluZyY+IFN0cmluZ0NhbGxiYWNrOwotdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPj4g
U2NyaXB0VmFsdWVDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdlYkNv
cmU6OkZvbnRBdHRyaWJ1dGVzJj4gRm9udEF0dHJpYnV0ZXNDYWxsYmFjazsKIHR5cGVkZWYgR2Vu
ZXJpY0NhbGxiYWNrPGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyY+
IFNlbGVjdGlvbkNvbnRleHRDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGJvb2w+
IEJvb2xDYWxsYmFjazsKQEAgLTExNDAsOCArMTEzOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGdl
dFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViRnJh
bWVQcm94eSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94
eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsK
LSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXZWJDb3JlOjpSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycyYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJh
bWVJblNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIEFQSTo6Q29udGVudFdvcmxkJiwgRnVuY3Rp
b248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWUoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYpOworICAgIHZvaWQgcnVu
SmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJh
bWV0ZXJzJiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIEFQSTo6Q29udGVu
dFdvcmxkJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYpOwogICAg
IHZvaWQgZm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYpOwogCiAgICAgZmxvYXQg
aGVhZGVySGVpZ2h0KFdlYkZyYW1lUHJveHkmKTsKQEAgLTIxMzAsNyArMjEyOSw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBib29sQ2FsbGJhY2soYm9vbCByZXN1bHQsIENhbGxiYWNrSUQpOwogICAg
IHZvaWQgc3RyaW5nQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBpbnZhbGlkYXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBzY3JpcHRW
YWx1ZUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGNvbXB1dGVkUGFnZXND
YWxsYmFjayhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mLCBkb3VibGUgdG90YWxTY2Fs
ZUZhY3RvckZvclByaW50aW5nLCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgY29tcHV0
ZWRQYWdlTWFyZ2luLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZENhbGxi
YWNrKGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB1bnNp
Z25lZENhbGxiYWNrKHVpbnQ2NF90LCBDYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA0OWQyNjRkYjZiMTZlOWY2
NzIxYmMyNWIyY2I1MDMwZTMyZGI0ODI4Li40MjE0NWYyYzVjMDRiMzM4YWIwNDFmYjA2ZDY5Njg2
YzJmNTc5MTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0xNjcsNyArMTY3LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5
IHsKICAgICBTdHJpbmdDYWxsYmFjayhTdHJpbmcgcmVzdWx0U3RyaW5nLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKICAgICBCb29sQ2FsbGJhY2soYm9vbCByZXN1bHQsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBTY3JpcHRWYWx1ZUNhbGxiYWNrKElQQzo6
RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRh
aWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBDb21wdXRl
ZFBhZ2VzQ2FsbGJhY2soVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHBhZ2VSZWN0cywgZG91Ymxl
IHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgV2ViQ29yZTo6UmVjdEVkZ2VzPGZsb2F0PiBj
b21wdXRlZFBhZ2VNYXJnaW4sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFZh
bGlkYXRlQ29tbWFuZENhbGxiYWNrKFN0cmluZyBjb21tYW5kLCBib29sIGlzRW5hYmxlZCwgaW50
MzJfdCBzdGF0ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgVW5zaWduZWRD
YWxsYmFjayh1aW50NjRfdCByZXN1bHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBiZTBi
NTVjZjY0NzhkMDczYzMwNjg0YTQ0ZjZjNjM3ODcyYmE3NzhlLi4yNjBhMGUyYWNiNGJlOWVhN2Iz
ZDBmM2FiY2ZkMDYwMmY1MTQ3MmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtMzQ2MywyMyArMzQ2MywzMyBAQCBLZXlib2FyZFVJTW9kZSBX
ZWJQYWdlOjprZXlib2FyZFVJTW9kZSgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEtleWJvYXJk
VUlNb2RlPigoZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA/IEtleWJvYXJkQWNjZXNzRnVsbCA6
IEtleWJvYXJkQWNjZXNzRGVmYXVsdCkgfCAobV90YWJUb0xpbmtzID8gS2V5Ym9hcmRBY2Nlc3NU
YWJzVG9MaW5rcyA6IDApKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZy
YW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBDb250ZW50
V29ybGRJZGVudGlmaWVyIHdvcmxkSWRlbnRpZmllciwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQor
dm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBDb250ZW50V29ybGRJZGVudGlmaWVyIHdvcmxkSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIC8vIE5PVEU6IFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aGVuIHJ1
bm5pbmcgc2NyaXB0cyB0aGF0IHRoZSBvYmplY3RzIHdlIGRlcGVuZCBvbiBkb24ndAogICAgIC8v
IGRpc2FwcGVhciBkdXJpbmcgc2NyaXB0IGV4ZWN1dGlvbi4KIAogICAgIGlmICghZnJhbWUgfHwg
IWZyYW1lLT5jb3JlRnJhbWUoKSkgewotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0
byBleGVjdXRlIEphdmFTY3JpcHQ6IFRhcmdldCBmcmFtZSBjb3VsZCBub3QgYmUgZm91bmQgaW4g
dGhlIHBhZ2UiX3MsIDAsIDAsIEV4Y2VwdGlvbkRldGFpbHM6OlR5cGU6OkludmFsaWRUYXJnZXRG
cmFtZSB9LCBjYWxsYmFja0lEKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgRXhj
ZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0OiBUYXJnZXQgZnJh
bWUgY291bGQgbm90IGJlIGZvdW5kIGluIHRoZSBwYWdlIl9zLCAwLCAwLCBFeGNlcHRpb25EZXRh
aWxzOjpUeXBlOjpJbnZhbGlkVGFyZ2V0RnJhbWUgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBhdXRvKiB3b3JsZCA9IG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT53b3JsZEZvcklk
ZW50aWZpZXIod29ybGRJZGVudGlmaWVyKTsKICAgICBpZiAoIXdvcmxkKSB7Ci0gICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayh7IH0sIEV4Y2Vw
dGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdDogQ2Fubm90IGZpbmQg
c3BlY2lmaWVkIGNvbnRlbnQgd29ybGQiX3MgfSwgY2FsbGJhY2tJRCkpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUg
SmF2YVNjcmlwdDogQ2Fubm90IGZpbmQgc3BlY2lmaWVkIGNvbnRlbnQgd29ybGQiX3MgfSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlc29sdmVGdW5jdGlvbiA9IFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHdvcmxkID0gbWFrZVJlZigqd29ybGQp
LCBmcmFtZSA9IG1ha2VSZWYoKmZyYW1lKSwgY2FsbGJhY2tJRF0oVmFsdWVPckV4Y2VwdGlvbiBy
ZXN1bHQpIHsKKyNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCisgICAgaWYgKGZyYW1lLT5z
aG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1
dGUgSmF2YVNjcmlwdCBpbiBhIGZyYW1lIHRoYXQgaXMgbm90IGluIGFuIGFwcC1ib3VuZCBkb21h
aW4iX3MsIDAsIDAsIEV4Y2VwdGlvbkRldGFpbHM6OlR5cGU6OkFwcEJvdW5kRG9tYWluIH0pOwor
ICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50
KCkpCisgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0
IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQoTG9hZGluZywgInJ1bkphdmFTY3JpcHQ6IElnbm9yaW5nIHVz
ZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgYXV0byByZXNvbHZlRnVuY3Rpb24gPSBbd29y
bGQgPSBtYWtlUmVmKCp3b3JsZCksIGZyYW1lID0gbWFrZVJlZigqZnJhbWUpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoVmFsdWVPckV4Y2VwdGlvbiBy
ZXN1bHQpIG11dGFibGUgewogICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBz
ZXJpYWxpemVkUmVzdWx0VmFsdWU7CiAgICAgICAgIGlmIChyZXN1bHQpIHsKICAgICAgICAgICAg
IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGZy
YW1lLT5qc0NvbnRleHRGb3JXb3JsZCh3b3JsZC5wdHIoKSksCkBAIC0zNDk0LDIyICszNTA0LDEz
IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAg
ICAgICAgZGV0YWlscyA9IHJlc3VsdC5lcnJvcigpOwogCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBkZXRhaWxz
LCBjYWxsYmFja0lEKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRhdGFSZWZlcmVuY2Us
IGRldGFpbHMpOwogICAgIH07Ci0jaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQotICAgIGlm
IChmcmFtZS0+c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsK
LSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNr
KHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGlu
IGEgZnJhbWUgdGhhdCBpcyBub3QgaW4gYW4gYXBwLWJvdW5kIGRvbWFpbiJfcywgMCwgMCwgRXhj
ZXB0aW9uRGV0YWlsczo6VHlwZTo6QXBwQm91bmREb21haW4gfSwgY2FsbGJhY2tJRCkpOwotICAg
ICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkp
Ci0gICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQoTG9hZGluZywgInJ1bkphdmFTY3JpcHQ6IElnbm9yaW5nIHVzZXIg
c2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSNlbmRpZgogICAgIEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwog
ICAgIGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJB
Z2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBXVEZNb3ZlKHJlc29sdmVGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFT
Y3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgY29uc3Qg
c3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxkRGF0YSwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZUlu
U2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBPcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIGNvbnN0IHN0ZDo6cGFpcjxDb250
ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZERhdGEsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6
RXhjZXB0aW9uRGV0YWlscz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3
ZWJGcmFtZSA9IGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZSgqZnJh
bWVJRCkgOiAmbWFpbldlYkZyYW1lKCk7CiAKQEAgLTM1MTksNyArMzUyMCw3IEBAIHZvaWQgV2Vi
UGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJh
bWV0ZXJzJiYgcGFyYW1lCiAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlz
cGF0Y2hHbG9iYWxPYmplY3RBdmFpbGFibGUoY29yZVdvcmxkKTsKICAgICB9CiAKLSAgICBydW5K
YXZhU2NyaXB0KHdlYkZyYW1lLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCB3b3JsZERhdGEuZmlyc3Qs
IGNhbGxiYWNrSUQpOworICAgIHJ1bkphdmFTY3JpcHQod2ViRnJhbWUsIFdURk1vdmUocGFyYW1l
dGVycyksIHdvcmxkRGF0YS5maXJzdCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNTdHJpbmcoQ29udGVudEFzU3RyaW5nSW5jbHVk
ZXNDaGlsZEZyYW1lcyBpbmNsdWRlQ2hpbGRGcmFtZXMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBkNTNkMzA0
M2Y1YTc2MTBkZWJiZTMyNTcwYTQ4ZDBlMjVhZjQ3ZTEyLi4wMTUwYTkyNWNkODIyYTE0NzA4ZWRh
Y2Y3NGFhMGZiY2VmNzVlMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC0xNTQ4LDggKzE1NDgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0U2Vs
ZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldFNvdXJjZUZv
ckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBn
ZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrSUQp
OwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNvcmU6OlJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzJiYsIENvbnRlbnRXb3JsZElkZW50aWZpZXIsIENhbGxiYWNrSUQpOwotICAg
IHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIGNv
bnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZERhdGEs
IENhbGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNvcmU6
OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbnRlbnRXb3JsZElkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJik7CisgICAgdm9pZCBydW5KYXZhU2Ny
aXB0SW5GcmFtZUluU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMm
JiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgY29uc3Qgc3RkOjpwYWlyPENv
bnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxkRGF0YSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3Jl
OjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKICAgICB2b2lkIGZvcmNlUmVwYWludChDYWxsYmFj
a0lEKTsKICAgICB2b2lkIHRha2VTbmFwc2hvdChXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVj
dCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCBDYWxsYmFj
a0lEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KaW5kZXggMzdiM2MzMzJhZjU1MGNlNjI3OThkMzI1YTEwN2U2NjE1M2Vj
ZTFkNS4uMGM5ZDk2N2I2Y2Q2NDQ1NTFlYWU3M2EzODlkNjI2YWI2NzFjY2FhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CkBAIC0yMjAsOCArMjIwLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVt
OnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBHZXRTb3Vy
Y2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAgICAgR2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCi0g
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBzZW5kV2l0aEFzeW5jUmVwbHkgaW5zdGVhZCBv
ZiBjYWxsYmFja0lEcwotICAgIFJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChzdHJ1
Y3QgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMgcGFyYW1ldGVycywgT3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6OnBhaXI8V2ViS2l0OjpDb250
ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+IHdvcmxkLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKKyAgICBSdW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoc3RydWN0IFdl
YkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpwYWlyPFdlYktpdDo6Q29udGVudFdv
cmxkSWRlbnRpZmllciwgU3RyaW5nPiB3b3JsZCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1
bHREYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzKSBBc3lu
YwogCiAgICAgRm9yY2VSZXBhaW50KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAg
IFNlbGVjdEFsbCgpCg==
</data>
<flag name="commit-queue"
          id="426688"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410683</attachid>
            <date>2020-10-06 13:02:13 -0700</date>
            <delta_ts>2020-10-06 13:11:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217351-20201006130212.patch</filename>
            <type>text/plain</type>
            <size>28212</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwZDM4NjliNTRmNDA2ZDQ0
MTVkZmU0NDkxNWY2MmU3ZDBkMjJhNGEuLjQ4MGYxOWUzOGJmNzM5ODQ5MDU3YjI0NjVjYWIzNjMw
ZWMyYmY4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMTAtMDYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2Ugc2VuZFdp
dGhBc3luY1JlcGx5IHRvIGV2YWx1YXRlIEphdmFTY3JpcHQgaW4gYSBXZWJQYWdlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTczNTEKKworICAgICAg
ICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBtZWFu
aW5nZnVsIGJlaGF2aW9yLCBidXQgY29tcGxleGl0eSBpcyByZW1vdmVkLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0
SW5NYWluRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDphc0FzeW5jRnVuY3Rp
b246d2l0aFNvdXJjZVVSTDp3aXRoQXJndW1lbnRzOmZvcmNlVXNlckdlc3R1cmU6aW5GcmFtZTpp
bldvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgdGFrZVNu
YXBzaG90V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlwdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMC0xMC0wNSAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1ha2UgRG93bmxvYWRJ
RCBhbiBPYmplY3RJZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAppbmRleCBmY2JhODQ0MjlkZDg2OTNhY2U1YmQ5NTAxMDczZjg4YWMxMDFjNWU5Li5jNzIz
ZTc5OGVmZTM4NWRjNmZjOGRkZTE2MThkY2RkN2FmZWE1YzcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0ODksOCArMjQ4OSwxMSBAQCB2b2lkIFdLUGFn
ZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlU3RhdGVDbGllbnRCYXNl
KiBjbGllbnQpCiAKIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdLUGFnZVJl
ZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZVJ1
bkphdmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPnJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgVVJM
IHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6
RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAg
Y2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUpLCAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJv
cjo6Tm9uZSkgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250ZXh0
KTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHRvSW1w
bChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1
ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdIChhdXRvJiYgcmVzdWx0KSB7CisgICAgICAgIGlmIChy
ZXN1bHQuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICBjYWxsYmFjayh0b0FQSShyZXN1bHQudmFs
dWUoKS5nZXQoKSksIG51bGxwdHIsIGNvbnRleHQpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBjYWxsYmFjayhudWxscHRyLCBudWxscHRyLCBjb250ZXh0KTsKICAgICB9KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggZTJk
MmYzZWVmNTdhNmJhOGVjMGIzMzU1ZjAwN2JiZTg0NWFlNmRkZC4uMmY5OGU0ZGM3Nzk0OTczYmM1
MjU5ZWY1NzlhN2M3ODliYTMxNTNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC03OTYsNiArNzk2LDcgQEAgc3RhdGljIHZvaWQgaGFy
ZHdhcmVLZXlib2FyZEF2YWlsYWJpbGl0eUNoYW5nZWRDYWxsYmFjayhDRk5vdGlmaWNhdGlvbkNl
bnRlclJlZiwKICAgICBfcGFnZS0+c3RvcExvYWRpbmcoKTsKIH0KIAorI2lmIFVTRShBUFBLSVQp
CiBzdGF0aWMgV0tFcnJvckNvZGUgY2FsbGJhY2tFcnJvckNvZGUoV2ViS2l0OjpDYWxsYmFja0Jh
c2U6OkVycm9yIGVycm9yKQogewogICAgIHN3aXRjaCAoZXJyb3IpIHsKQEAgLTgxMyw2ICs4MTQs
NyBAQCBzdGF0aWMgV0tFcnJvckNvZGUgY2FsbGJhY2tFcnJvckNvZGUoV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yIGVycm9yKQogICAgICAgICByZXR1cm4gV0tFcnJvcldlYlZpZXdJbnZhbGlk
YXRlZDsKICAgICB9CiB9CisjZW5kaWYKIAogLSAodm9pZClldmFsdWF0ZUphdmFTY3JpcHQ6KE5T
U3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQs
IE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKQEAgLTkzMiw0MSArOTM0LDIyIEBAIHN0
YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gbnNFcnJvckZyb21FeGNlcHRpb25EZXRhaWxzKGNvbnN0
IFdlYkNvcmU6OkV4Y2VwdGlvbkRlCiAgICAgICAgICAgICBmcmFtZUlEID0gbWFrZU9iamVjdElk
ZW50aWZpZXI8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyVHlwZT4oaWRlbnRpZmllcik7CiAgICAg
fQogCi0gICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCh7IGphdmFT
Y3JpcHRTdHJpbmcsIHNvdXJjZVVSTCwgISFhc0FzeW5jRnVuY3Rpb24sIFdURk1vdmUoYXJndW1l
bnRzTWFwKSwgISFmb3JjZVVzZXJHZXN0dXJlIH0sIGZyYW1lSUQsICp3b3JsZC0+X2NvbnRlbnRX
b3JsZC5nZXQoKSwgW2hhbmRsZXJdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxp
emVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFp
bHMsIFdlYktpdDo6U2NyaXB0VmFsdWVDYWxsYmFjazo6RXJyb3IgZXJyb3JDb2RlKSB7CisgICAg
X3BhZ2UtPnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCh7IGphdmFTY3JpcHRTdHJp
bmcsIHNvdXJjZVVSTCwgISFhc0FzeW5jRnVuY3Rpb24sIFdURk1vdmUoYXJndW1lbnRzTWFwKSwg
ISFmb3JjZVVzZXJHZXN0dXJlIH0sIGZyYW1lSUQsICp3b3JsZC0+X2NvbnRlbnRXb3JsZC5nZXQo
KSwgW2hhbmRsZXJdIChhdXRvJiYgcmVzdWx0KSB7CiAgICAgICAgIGlmICghaGFuZGxlcikKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZXJyb3JDb2RlICE9IFdlYktpdDo6U2Ny
aXB0VmFsdWVDYWxsYmFjazo6RXJyb3I6Ok5vbmUpIHsKLSAgICAgICAgICAgIGF1dG8gZXJyb3Ig
PSBjcmVhdGVOU0Vycm9yKGNhbGxiYWNrRXJyb3JDb2RlKGVycm9yQ29kZSkpOwotICAgICAgICAg
ICAgaWYgKGVycm9yQ29kZSA9PSBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yOjpP
d25lcldhc0ludmFsaWRhdGVkKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIE93bmVyV2FzSW52
YWxpZGF0ZWQgY2FsbGJhY2sgaXMgc3luY2hyb25vdXMuIFdlIGRvbid0IHdhbnQgdG8gY2FsbCB0
aGUgYmxvY2sgZnJvbSB3aXRoaW4gaXQKLSAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHRoYXQg
Y2FuIHRyaWdnZXIgcmUtZW50cmFuY3kgYnVncyBpbiBXZWJLaXQuCi0gICAgICAgICAgICAgICAg
Ly8gRklYTUU6IEl0IHdvdWxkIGJlIGV2ZW4gYmV0dGVyIGlmIEdlbmVyaWNDYWxsYmFjayBkaWQg
dGhpcyBmb3IgdXMuCi0gICAgICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgW2hhbmRsZXIsIGVycm9yXSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1
dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShpZCwgTlNFcnJvciAqKSloYW5kbGVyLmdldCgpOwot
ICAgICAgICAgICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwgZXJyb3IuZ2V0KCkpOwotICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWhh
bmRsZXIuZ2V0KCk7Ci0gICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwgZXJyb3IuZ2V0KCkpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KICAgICAgICAgYXV0byByYXdIYW5kbGVy
ID0gKHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWhhbmRsZXIuZ2V0KCk7Ci0gICAgICAgIGlmIChk
ZXRhaWxzKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIXNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7Ci0g
ICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwgbnNFcnJvckZyb21FeGNlcHRpb25EZXRhaWxzKCpk
ZXRhaWxzKS5nZXQoKSk7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CisgICAg
ICAgICAgICByYXdIYW5kbGVyKG5pbCwgbnNFcnJvckZyb21FeGNlcHRpb25EZXRhaWxzKHJlc3Vs
dC5lcnJvcigpKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoIXNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgeworICAgICAgICBpZiAoIXJlc3VsdC52
YWx1ZSgpKSB7CiAgICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwgY3JlYXRlTlNFcnJvcihXS0Vy
cm9ySmF2YVNjcmlwdFJlc3VsdFR5cGVJc1Vuc3VwcG9ydGVkKS5nZXQoKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZCBib2R5ID0gQVBJOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS0+aW50ZXJuYWxS
ZXByZXNlbnRhdGlvbigpLCAwKTsKKyAgICAgICAgaWQgYm9keSA9IEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShyZXN1bHQudmFsdWUoKS0+aW50ZXJuYWxSZXByZXNlbnRh
dGlvbigpLCAwKTsKICAgICAgICAgcmF3SGFuZGxlcihib2R5LCBuaWwpOwogICAgIH0pOwogfQpA
QCAtOTk2LDcgKzk3OSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gbnNFcnJvckZyb21F
eGNlcHRpb25EZXRhaWxzKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRlCiAgICAgLy8gY29udGFp
bnMgcmVjZW50IHVwZGF0ZXMuIElmIHdlIGV2ZXIgaGF2ZSBhIFVJLXNpZGUgc25hcHNob3QgbWVj
aGFuaXNtIG9uIG1hY09TLCB3ZSB3aWxsIG5lZWQgdG8gZmFjdG9yCiAgICAgLy8gaW4gc25hcHNo
b3RDb25maWd1cmF0aW9uLmFmdGVyU2NyZWVuVXBkYXRlcyBhdCB0aGF0IHRpbWUuCiAgICAgX3Bh
Z2UtPnRha2VTbmFwc2hvdChXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0KHJlY3RJblZpZXdDb29y
ZGluYXRlcyksIGJpdG1hcFNpemUsIFdlYktpdDo6U25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRp
bmF0ZXMsIFtoYW5kbGVyLCBzbmFwc2hvdFdpZHRoLCBpbWFnZUhlaWdodF0oY29uc3QgV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIFdlYktpdDo6Q2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvckNvZGUpIHsKLSAgICAgICAgaWYgKGVycm9yQ29kZSAhPSBXZWJLaXQ6
OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yOjpOb25lKSB7CisgICAgICAgIGlmIChlcnJvckNv
ZGUgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7CiAgICAgICAgICAgICBh
dXRvIGVycm9yID0gY3JlYXRlTlNFcnJvcihjYWxsYmFja0Vycm9yQ29kZShlcnJvckNvZGUpKTsK
ICAgICAgICAgICAgIGhhbmRsZXIobmlsLCBlcnJvci5nZXQoKSk7CiAgICAgICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZp
ZXcuY3BwCmluZGV4IGQ4YjNmM2MxOTk5Mjg4ZjJhMThkYTM3YjZmMjRhOWM4YTNjM2NmMWEuLmRi
MDQ5YTA0ZWY1MGJjOWFiOTZlY2M0ZDc3ZjE3MDU5Yzk3ZjZkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0zNzg1LDEx
ICszNzg1LDE0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0V2l0aFBh
cmFtcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnCiB7CiAgICAgR1JlZlB0cjxHVGFz
az4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxs
YmFjaywgdXNlckRhdGEpKTsKIAotICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKFdURk1vdmUocGFyYW1zKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxFeGNl
cHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAg
ICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXVEZNb3ZlKHBhcmFt
cyksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0gKGF1dG8mJiByZXN1bHQpIHsKKyAgICAgICAgUmVm
UHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAg
ICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKLSAgICAgICAgaWYgKGRl
dGFpbHMpCi0gICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gKmRldGFpbHM7Ci0gICAgICAg
IHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soc2VyaWFsaXplZFNjcmlwdFZhbHVl
LCBleGNlcHRpb25EZXRhaWxzLCB0YXNrLmdldCgpKTsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNf
dmFsdWUoKSkKKyAgICAgICAgICAgIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA9IFdURk1vdmUocmVz
dWx0LnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxz
ID0gV1RGTW92ZShyZXN1bHQuZXJyb3IoKSk7CisgICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZh
U2NyaXB0Q2FsbGJhY2soc2VyaWFsaXplZFNjcmlwdFZhbHVlLmdldCgpLCBleGNlcHRpb25EZXRh
aWxzLCB0YXNrLmdldCgpKTsKICAgICB9KTsKIH0KIApAQCAtMzkxOSwxMSArMzkyMiwxNCBAQCB2
b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9pbl93b3JsZChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBjb25zdCBnY2hhcgogCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0
R1JlZihnX3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEp
KTsKICAgICBhdXRvIHdvcmxkID0gQVBJOjpDb250ZW50V29ybGQ6OnNoYXJlZFdvcmxkV2l0aE5h
bWUoU3RyaW5nOjpmcm9tVVRGOCh3b3JsZE5hbWUpKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1
bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCh7IFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0
KSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBXVEY6Om51bGxvcHQsIHdv
cmxkLmdldCgpLCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRl
dGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIGdldFBhZ2Uod2ViVmll
dykucnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHsgU3RyaW5nOjpmcm9tVVRGOChz
Y3JpcHQpLCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlIH0sIFdURjo6bnVsbG9w
dCwgd29ybGQuZ2V0KCksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0gKGF1dG8mJiByZXN1bHQpIHsK
KyAgICAgICAgUmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2Ny
aXB0VmFsdWU7CiAgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKLSAg
ICAgICAgaWYgKGRldGFpbHMpCi0gICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gKmRldGFp
bHM7Ci0gICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBleGNlcHRpb25EZXRhaWxzLCB0YXNrLmdldCgpKTsKKyAgICAgICAgaWYg
KHJlc3VsdC5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAgIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA9
IFdURk1vdmUocmVzdWx0LnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBleGNl
cHRpb25EZXRhaWxzID0gV1RGTW92ZShyZXN1bHQuZXJyb3IoKSk7CisgICAgICAgIHdlYmtpdFdl
YlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soV1RGTW92ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUp
LCBleGNlcHRpb25EZXRhaWxzLCB0YXNrLmdldCgpKTsKICAgICB9KTsKIH0KIApAQCAtMzk2Miwx
MSArMzk2OCwxNCBAQCBzdGF0aWMgdm9pZCByZXNvdXJjZXNTdHJlYW1SZWFkQ2FsbGJhY2soR09i
amVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZwogICAgIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ190YXNrX2dldF9zb3VyY2Vfb2JqZWN0KHRhc2su
Z2V0KCkpKTsKICAgICBncG9pbnRlciBvdXRwdXRTdHJlYW1EYXRhID0gZ19tZW1vcnlfb3V0cHV0
X3N0cmVhbV9nZXRfZGF0YShHX01FTU9SWV9PVVRQVVRfU1RSRUFNKG9iamVjdCkpOwogICAgIGdl
dFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgU3RyaW5nOjpmcm9tVVRG
OChyZWludGVycHJldF9jYXN0PGNvbnN0IGdjaGFyKj4ob3V0cHV0U3RyZWFtRGF0YSkpLCBVUkwg
eyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlIH0sCi0gICAgICAgIFt0YXNrXShBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxFeGNl
cHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAg
ICAgICAgW3Rhc2tdIChhdXRvJiYgcmVzdWx0KSB7CisgICAgICAgICAgICBSZWZQdHI8QVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKICAgICAgICAgICAg
IEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKLSAgICAgICAgICAgIGlmIChkZXRh
aWxzKQotICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSAqZGV0YWlsczsKLSAgICAg
ICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soc2VyaWFsaXplZFNjcmlw
dFZhbHVlLCBleGNlcHRpb25EZXRhaWxzLCB0YXNrLmdldCgpKTsKKyAgICAgICAgICAgIGlmIChy
ZXN1bHQuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICAgICAgc2VyaWFsaXplZFNjcmlwdFZhbHVl
ID0gV1RGTW92ZShyZXN1bHQudmFsdWUoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgZXhjZXB0aW9uRGV0YWlscyA9IFdURk1vdmUocmVzdWx0LmVycm9yKCkpOworICAgICAg
ICAgICAgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxsYmFjayhzZXJpYWxpemVkU2NyaXB0
VmFsdWUuZ2V0KCksIGV4Y2VwdGlvbkRldGFpbHMsIHRhc2suZ2V0KCkpOwogICAgICAgICB9KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3Bw
CmluZGV4IGQyMDQ1MTk5YjQxNTU3YjkzMmFlZDFlMzhlNGMyNWM0ZWUzMmRjNGEuLmRiMjNmNzVj
YTJjZThmMWVmOTU2ODM2NjMyNTIxMzdhNTVmZGYyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1Jl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aW5zcGVjdChjb25zdCBTdHJpbmcmIGhv
c3RBbmRQb3J0LCBDb25uZWN0aQogdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6
OnJ1blNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHsKICAgICBtX3BhZ2UucnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKHsgc2NyaXB0LCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBm
YWxzZSB9LCAKLSAgICAgICAgW10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25h
bDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBleGNlcHRpb25EZXRhaWxzLCBDYWxsYmFja0Jh
c2U6OkVycm9yKSB7CisgICAgICAgIFtdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZXhjZXB0aW9uRGV0YWlscykgewogICAg
ICAgICAgICAgaWYgKGV4Y2VwdGlvbkRldGFpbHMpCiAgICAgICAgICAgICAgICAgTE9HX0VSUk9S
KCJFeGNlcHRpb24gcnVubmluZyBzY3JpcHQgXCIlc1wiIiwgZXhjZXB0aW9uRGV0YWlscy0+bWVz
c2FnZS51dGY4KCkuZGF0YSgpKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IGY2M2I3NGQzODIxYzAyYmRmNTkyMGMxOGE1ODk3NzcxY2EwYTVk
MTguLjA4ZGZhYjllYzI4Mzg4NGUxZWE0ZTA4MGIyMDVlM2U5M2E2YmQ0NGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDA4MSwzMSArNDA4MSwzNSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpCiAgICAg
ICAgIGxhdW5jaFByb2Nlc3MoeyB9LCBQcm9jZXNzTGF1bmNoUmVhc29uOjpJbml0aWFsUHJvY2Vz
cyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoUnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0
YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdl
YlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFJ1bkphdmFTY3JpcHRQYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxSZWZQdHI8
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYm
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3Jp
cHRXb3JsZChXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQsIEFQSTo6Q29udGVudFdv
cmxkOjpwYWdlQ29udGVudFdvcmxkKCksIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQsIFdURjo6RnVu
Y3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlv
bkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9p
ZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZh
U2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4cGVjdGVkPFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFdl
YkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiYpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAg
Ly8gRm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkgc3VwcG9ydCBydW5uaW5nIHNjcmlwdCBpbiBh
IFdlYlZpZXcgd2hpY2ggaGFzIG5vdCBkb25lIGFueSBsb2FkcyB5ZXRzLgogICAgIGxhdW5jaElu
aXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKTsKIAotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxwdHIsIHsgfSwgQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQorICAgICAgICByZXR1cm4gY2FsbGJhY2tGdW5jdGlvbih7IG51bGxw
dHIgfSk7CiAKICAgICBQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0eVZhcmlhbnQgYWN0aXZpdHk7
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocGFnZUNsaWVudCgpLmNhblRha2VG
b3JlZ3JvdW5kQXNzZXJ0aW9ucygpKQogICAgICAgICBhY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJ
bkZyYW1lSW5TY3JpcHRXb3JsZCJfcyk7Ci0gICAgZWxzZQogI2VuZGlmCi0gICAgICAgIGFjdGl2
aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQ
cm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkIl9zKTsKIAotICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBX
VEZNb3ZlKGFjdGl2aXR5KSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNj
cmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHBhcmFtZXRlcnMsIGZyYW1lSUQsIHdvcmxkLndvcmxk
RGF0YSgpLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQocGFyYW1ldGVycywgZnJh
bWVJRCwgd29ybGQud29ybGREYXRhKCkpLCBbYWN0aXZpdHkgPSBXVEZNb3ZlKGFjdGl2aXR5KSwg
Y2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbildIChjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+
JiYgZGV0YWlscykgbXV0YWJsZSB7CisgICAgICAgIGlmIChkZXRhaWxzKQorICAgICAgICAgICAg
cmV0dXJuIGNhbGxiYWNrRnVuY3Rpb24obWFrZVVuZXhwZWN0ZWQoV1RGTW92ZSgqZGV0YWlscykp
KTsKKyAgICAgICAgaWYgKGRhdGFSZWZlcmVuY2UuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0
dXJuIGNhbGxiYWNrRnVuY3Rpb24oeyBudWxscHRyIH0pOworICAgICAgICBWZWN0b3I8dWludDhf
dD4gZGF0YTsKKyAgICAgICAgZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRhdGFSZWZlcmVu
Y2Uuc2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRh
dGFSZWZlcmVuY2Uuc2l6ZSgpKTsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbih7IEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChXVEZNb3ZlKGRhdGEpKS5wdHIoKSB9KTsKKyAgICB9
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2Vu
dGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTcxNjAsMjYgKzcxNjQsNiBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6aW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
c2NyaXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVu
Y2UsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKLXsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxTY3JpcHRWYWx1
ZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKLSAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgICAgIC8v
IEZJWE1FOiBMb2cgZXJyb3Igb3IgYXNzZXJ0LgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGRhdGFSZWZlcmVuY2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNhbGxiYWNrLT5wZXJm
b3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUobnVsbHB0ciwgZGV0YWlscyk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBkYXRhLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoZGF0YVJlZmVyZW5jZS5zaXplKCkpOwotICAgIGRhdGEuYXBwZW5k
KGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7Ci0KLSAgICBjYWxs
YmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlOjphZG9wdChXVEZNb3ZlKGRhdGEpKS5wdHIoKSwgZGV0YWlscyk7Ci19Ci0KIHZvaWQg
V2ViUGFnZVByb3h5Ojpjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPEludFJlY3Q+
JiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIGNvbnN0IEZs
b2F0Qm94RXh0ZW50JiBjb21wdXRlZFBhZ2VNYXJnaW4sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxDb21wdXRlZFBhZ2VzQ2Fs
bGJhY2s+KGNhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCA4MjE5ZWJiNTNiMWNmZTM2MzlmMmRjMTZjNzdjOTFmY2Y1ZmViMDFiLi5lNDdjYjVlNDFm
MzlkZGI3OWZkNTFkNzUxZjkzYWVmM2RjYmMyNTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtMzY1LDcgKzM2NSw2IEBAIGVudW0gY2xhc3MgV2ViQ29udGVudE1v
ZGUgOiB1aW50OF90OwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpEYXRhKj4gRGF0YUNh
bGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8dWludDY0X3Q+IFVuc2lnbmVkQ2FsbGJh
Y2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmPiBTdHJpbmdDYWxsYmFj
azsKLXR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwg
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4+IFNjcmlwdFZhbHVlQ2FsbGJhY2s7
CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBXZWJDb3JlOjpGb250QXR0cmlidXRlcyY+
IEZvbnRBdHRyaWJ1dGVzQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmPiBTZWxlY3Rpb25Db250ZXh0Q2Fs
bGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxib29sPiBCb29sQ2FsbGJhY2s7CkBAIC0x
MTQwLDggKzExMzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hp
dmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KTsKICAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2
b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBGdW5jdGlvbjx2b2lkIChB
UEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBydW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWUoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgV1RGOjpG
dW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNv
cmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1
bmN0aW9uKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXZWJD
b3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+LCBBUEk6OkNvbnRlbnRXb3JsZCYsIEZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6
RXhjZXB0aW9uRGV0YWlscz4mJik+JiYpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJ
blNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIEFQSTo6Q29udGVudFdvcmxkJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChFeHBlY3RlZDxSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+
LCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYmKT4mJik7CiAgICAgdm9pZCBmb3JjZVJlcGFp
bnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4mJik7CiAKICAgICBmbG9hdCBoZWFkZXJIZWlnaHQoV2Vi
RnJhbWVQcm94eSYpOwpAQCAtMjEzMCw3ICsyMTI5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJv
b2xDYWxsYmFjayhib29sIHJlc3VsdCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzdHJpbmdDYWxs
YmFjayhjb25zdCBTdHJpbmcmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGludmFsaWRhdGVTdHJp
bmdDYWxsYmFjayhDYWxsYmFja0lEKTsKLSAgICB2b2lkIHNjcmlwdFZhbHVlQ2FsbGJhY2soY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWls
cz4sIENhbGxiYWNrSUQpOwogICAgIHZvaWQgY29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRp
bmcsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiBjb21wdXRlZFBhZ2VNYXJnaW4sIENh
bGxiYWNrSUQpOwogICAgIHZvaWQgdmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soY29uc3QgU3RyaW5n
JiwgYm9vbCwgaW50LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHVuc2lnbmVkQ2FsbGJhY2sodWlu
dDY0X3QsIENhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDQ5ZDI2NGRiNmIxNmU5ZjY3MjFiYzI1YjJjYjUwMzBl
MzJkYjQ4MjguLjQyMTQ1ZjJjNWMwNGIzMzhhYjA0MWZiMDZkNjk2ODZjMmY1NzkxNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAg
LTE2Nyw3ICsxNjcsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFN0cmluZ0Nh
bGxiYWNrKFN0cmluZyByZXN1bHRTdHJpbmcsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogICAgIEJvb2xDYWxsYmFjayhib29sIHJlc3VsdCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiAgICAgSW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQotICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlIHJl
c3VsdERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIENvbXB1dGVkUGFnZXNDYWxsYmFjayhW
ZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3Rv
ckZvclByaW50aW5nLCBXZWJDb3JlOjpSZWN0RWRnZXM8ZmxvYXQ+IGNvbXB1dGVkUGFnZU1hcmdp
biwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgVmFsaWRhdGVDb21tYW5kQ2Fs
bGJhY2soU3RyaW5nIGNvbW1hbmQsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0YXRlLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBVbnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90
IHJlc3VsdCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGJlMGI1NWNmNjQ3OGQwNzNjMzA2
ODRhNDRmNmM2Mzc4NzJiYTc3OGUuLjI2MGEwZTJhY2I0YmU5ZWE3YjNkMGYzYWJjZmQwNjAyZjUx
NDcyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC0zNDYzLDIzICszNDYzLDMzIEBAIEtleWJvYXJkVUlNb2RlIFdlYlBhZ2U6OmtleWJvYXJk
VUlNb2RlKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRVSU1vZGU+KChmdWxsS2V5
Ym9hcmRBY2Nlc3NFbmFibGVkID8gS2V5Ym9hcmRBY2Nlc3NGdWxsIDogS2V5Ym9hcmRBY2Nlc3NE
ZWZhdWx0KSB8IChtX3RhYlRvTGlua3MgPyBLZXlib2FyZEFjY2Vzc1RhYnNUb0xpbmtzIDogMCkp
OwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5K
YXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENvbnRlbnRXb3JsZElkZW50aWZpZXIg
d29ybGRJZGVudGlmaWVyLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1
bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMsIENvbnRlbnRXb3JsZElkZW50aWZpZXIgd29ybGRJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgLy8gTk9URTogV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdoZW4gcnVubmluZyBzY3JpcHRzIHRo
YXQgdGhlIG9iamVjdHMgd2UgZGVwZW5kIG9uIGRvbid0CiAgICAgLy8gZGlzYXBwZWFyIGR1cmlu
ZyBzY3JpcHQgZXhlY3V0aW9uLgogCiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVGcmFt
ZSgpKSB7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVD
YWxsYmFjayh7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNj
cmlwdDogVGFyZ2V0IGZyYW1lIGNvdWxkIG5vdCBiZSBmb3VuZCBpbiB0aGUgcGFnZSJfcywgMCwg
MCwgRXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6SW52YWxpZFRhcmdldEZyYW1lIH0sIGNhbGxiYWNr
SUQpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsg
IlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQ6IFRhcmdldCBmcmFtZSBjb3VsZCBub3QgYmUg
Zm91bmQgaW4gdGhlIHBhZ2UiX3MsIDAsIDAsIEV4Y2VwdGlvbkRldGFpbHM6OlR5cGU6OkludmFs
aWRUYXJnZXRGcmFtZSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8qIHdv
cmxkID0gbV91c2VyQ29udGVudENvbnRyb2xsZXItPndvcmxkRm9ySWRlbnRpZmllcih3b3JsZElk
ZW50aWZpZXIpOwogICAgIGlmICghd29ybGQpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJV
bmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0OiBDYW5ub3QgZmluZCBzcGVjaWZpZWQgY29udGVu
dCB3b3JsZCJfcyB9LCBjYWxsYmFja0lEKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0OiBDYW5u
b3QgZmluZCBzcGVjaWZpZWQgY29udGVudCB3b3JsZCJfcyB9KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGF1dG8gcmVzb2x2ZUZ1bmN0aW9uID0gW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgdGhpcywgd29ybGQgPSBtYWtlUmVmKCp3b3JsZCksIGZyYW1lID0gbWFrZVJl
ZigqZnJhbWUpLCBjYWxsYmFja0lEXShWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdCkgeworI2lmIEVO
QUJMRShBUFBfQk9VTkRfRE9NQUlOUykKKyAgICBpZiAoZnJhbWUtPnNob3VsZEVuYWJsZUluQXBw
QnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGlu
IGEgZnJhbWUgdGhhdCBpcyBub3QgaW4gYW4gYXBwLWJvdW5kIGRvbWFpbiJfcywgMCwgMCwgRXhj
ZXB0aW9uRGV0YWlsczo6VHlwZTo6QXBwQm91bmREb21haW4gfSk7CisgICAgICAgIGlmIChhdXRv
KiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKKyAgICAgICAgICAg
IGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVz
c2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBu
b24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChMb2FkaW5nLCAicnVuSmF2YVNjcmlwdDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0
aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2VuZGlmCisKKyAgICBhdXRvIHJlc29sdmVGdW5jdGlvbiA9IFt3b3JsZCA9IG1ha2VSZWYoKndv
cmxkKSwgZnJhbWUgPSBtYWtlUmVmKCpmcmFtZSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIChWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdCkgbXV0YWJsZSB7
CiAgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRW
YWx1ZTsKICAgICAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAgICAgc2VyaWFsaXplZFJlc3Vs
dFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZnJhbWUtPmpzQ29udGV4dEZv
cldvcmxkKHdvcmxkLnB0cigpKSwKQEAgLTM0OTQsMjIgKzM1MDQsMTMgQEAgdm9pZCBXZWJQYWdl
OjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXIKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICBkZXRhaWxzID0g
cmVzdWx0LmVycm9yKCk7CiAKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpT
Y3JpcHRWYWx1ZUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGRldGFpbHMsIGNhbGxiYWNrSUQpKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGF0YVJlZmVyZW5jZSwgZGV0YWlscyk7CiAgICAg
fTsKLSNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCi0gICAgaWYgKGZyYW1lLT5zaG91bGRF
bmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgewotICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soeyB9LCBFeGNlcHRpb25E
ZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQgaW4gYSBmcmFtZSB0aGF0IGlz
IG5vdCBpbiBhbiBhcHAtYm91bmQgZG9tYWluIl9zLCAwLCAwLCBFeGNlcHRpb25EZXRhaWxzOjpU
eXBlOjpBcHBCb3VuZERvbWFpbiB9LCBjYWxsYmFja0lEKSk7Ci0gICAgICAgIGlmIChhdXRvKiBk
b2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRv
Y3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24t
YXBwIGJvdW5kIGRvbWFpbi4iKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RChMb2FkaW5nLCAicnVuSmF2YVNjcmlwdDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9u
IGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2Vu
ZGlmCiAgICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7CiAgICAgZnJhbWUtPmNvcmVG
cmFtZSgpLT5zY3JpcHQoKS5leGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3Js
ZCh3b3JsZC0+Y29yZVdvcmxkKCksIFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUocmVzb2x2
ZUZ1bmN0aW9uKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNj
cmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgT3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBjb25zdCBzdGQ6OnBhaXI8Q29udGVu
dFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiYgd29ybGREYXRhLCBDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5K
YXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgY29uc3Qgc3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZp
ZXIsIFN0cmluZz4mIHdvcmxkRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIHdlYkZyYW1lID0gZnJhbWVJ
RCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKCpmcmFtZUlEKSA6ICZtYWluV2Vi
RnJhbWUoKTsKIApAQCAtMzUxOSw3ICszNTIwLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2Ny
aXB0SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWUK
ICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaEdsb2JhbE9iamVj
dEF2YWlsYWJsZShjb3JlV29ybGQpOwogICAgIH0KIAotICAgIHJ1bkphdmFTY3JpcHQod2ViRnJh
bWUsIFdURk1vdmUocGFyYW1ldGVycyksIHdvcmxkRGF0YS5maXJzdCwgY2FsbGJhY2tJRCk7Cisg
ICAgcnVuSmF2YVNjcmlwdCh3ZWJGcmFtZSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgd29ybGREYXRh
LmZpcnN0LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6
Z2V0Q29udGVudHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzIGlu
Y2x1ZGVDaGlsZEZyYW1lcywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGQ1M2QzMDQzZjVhNzYxMGRlYmJlMzI1
NzBhNDhkMGUyNWFmNDdlMTIuLjAxNTBhOTI1Y2Q4MjJhMTQ3MDhlZGFjZjc0YWEwZmJjZWY3NWUx
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1
NDgsOCArMTU0OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hp
dmVEYXRhKENhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBydW5K
YXZhU2NyaXB0KFdlYkZyYW1lKiwgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwg
Q29udGVudFdvcmxkSWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2Ny
aXB0SW5GcmFtZUluU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMm
JiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgY29uc3Qgc3RkOjpwYWlyPENv
bnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxkRGF0YSwgQ2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiwgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBh
cmFtZXRlcnMmJiwgQ29udGVudFdvcmxkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNl
cHRpb25EZXRhaWxzPiYpPiYmKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3Jp
cHRXb3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBPcHRpb25hbDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXI+LCBjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRp
ZmllciwgU3RyaW5nPiYgd29ybGREYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHM+Jik+JiYpOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KENhbGxiYWNrSUQpOwogICAgIHZvaWQg
dGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJDb3JlOjpJbnRT
aXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIENhbGxiYWNrSUQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpp
bmRleCAzN2IzYzMzMmFmNTUwY2U2Mjc5OGQzMjVhMTA3ZTY2MTUzZWNlMWQ1Li4wYzlkOTY3YjZj
ZDY0NDU1MWVhZTczYTM4OWQ2MjZhYjY3MWNjYWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIyMCw4ICsyMjAs
NyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6
OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKICAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAKLSAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgdXNlIHNlbmRXaXRoQXN5bmNSZXBseSBpbnN0ZWFkIG9mIGNhbGxiYWNrSURzCi0g
ICAgUnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3JlOjpSdW5K
YXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6cGFpcjxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZp
ZXIsIFN0cmluZz4gd29ybGQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFJ1
bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChzdHJ1Y3QgV2ViQ29yZTo6UnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMgcGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBzdGQ6OnBhaXI8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyLCBT
dHJpbmc+IHdvcmxkKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIE9wdGlvbmFs
PFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMpIEFzeW5jCiAKICAgICBGb3JjZVJl
cGFpbnQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2VsZWN0QWxsKCkK
</data>
<flag name="commit-queue"
          id="426691"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410686</attachid>
            <date>2020-10-06 13:07:17 -0700</date>
            <delta_ts>2020-10-06 13:31:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217351-20201006130716.patch</filename>
            <type>text/plain</type>
            <size>28209</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwZDM4NjliNTRmNDA2ZDQ0
MTVkZmU0NDkxNWY2MmU3ZDBkMjJhNGEuLjQ4MGYxOWUzOGJmNzM5ODQ5MDU3YjI0NjVjYWIzNjMw
ZWMyYmY4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMTAtMDYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2Ugc2VuZFdp
dGhBc3luY1JlcGx5IHRvIGV2YWx1YXRlIEphdmFTY3JpcHQgaW4gYSBXZWJQYWdlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTczNTEKKworICAgICAg
ICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBtZWFu
aW5nZnVsIGJlaGF2aW9yLCBidXQgY29tcGxleGl0eSBpcyByZW1vdmVkLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VSdW5KYXZhU2NyaXB0
SW5NYWluRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDphc0FzeW5jRnVuY3Rp
b246d2l0aFNvdXJjZVVSTDp3aXRoQXJndW1lbnRzOmZvcmNlVXNlckdlc3R1cmU6aW5GcmFtZTpp
bldvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgdGFrZVNu
YXBzaG90V2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNjcmlwdFZhbHVlQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlwdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMC0xMC0wNSAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1ha2UgRG93bmxvYWRJ
RCBhbiBPYmplY3RJZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAppbmRleCBmY2JhODQ0MjlkZDg2OTNhY2U1YmQ5NTAxMDczZjg4YWMxMDFjNWU5Li5jNzIz
ZTc5OGVmZTM4NWRjNmZjOGRkZTE2MThkY2RkN2FmZWE1YzcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0ODksOCArMjQ4OSwxMSBAQCB2b2lkIFdLUGFn
ZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlU3RhdGVDbGllbnRCYXNl
KiBjbGllbnQpCiAKIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdLUGFnZVJl
ZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZVJ1
bkphdmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPnJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgVVJM
IHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiByZXR1cm5WYWx1ZSwgT3B0aW9uYWw8V2ViQ29yZTo6
RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAg
Y2FsbGJhY2sodG9BUEkocmV0dXJuVmFsdWUpLCAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJv
cjo6Tm9uZSkgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSkgOiAwLCBjb250ZXh0
KTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHRvSW1w
bChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1
ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdIChhdXRvJiYgcmVzdWx0KSB7CisgICAgICAgIGlmIChy
ZXN1bHQuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICBjYWxsYmFjayh0b0FQSShyZXN1bHQudmFs
dWUoKS5nZXQoKSksIG51bGxwdHIsIGNvbnRleHQpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBjYWxsYmFjayhudWxscHRyLCBudWxscHRyLCBjb250ZXh0KTsKICAgICB9KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggZTJk
MmYzZWVmNTdhNmJhOGVjMGIzMzU1ZjAwN2JiZTg0NWFlNmRkZC4uMmY5OGU0ZGM3Nzk0OTczYmM1
MjU5ZWY1NzlhN2M3ODliYTMxNTNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC03OTYsNiArNzk2LDcgQEAgc3RhdGljIHZvaWQgaGFy
ZHdhcmVLZXlib2FyZEF2YWlsYWJpbGl0eUNoYW5nZWRDYWxsYmFjayhDRk5vdGlmaWNhdGlvbkNl
bnRlclJlZiwKICAgICBfcGFnZS0+c3RvcExvYWRpbmcoKTsKIH0KIAorI2lmIFVTRShBUFBLSVQp
CiBzdGF0aWMgV0tFcnJvckNvZGUgY2FsbGJhY2tFcnJvckNvZGUoV2ViS2l0OjpDYWxsYmFja0Jh
c2U6OkVycm9yIGVycm9yKQogewogICAgIHN3aXRjaCAoZXJyb3IpIHsKQEAgLTgxMyw2ICs4MTQs
NyBAQCBzdGF0aWMgV0tFcnJvckNvZGUgY2FsbGJhY2tFcnJvckNvZGUoV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yIGVycm9yKQogICAgICAgICByZXR1cm4gV0tFcnJvcldlYlZpZXdJbnZhbGlk
YXRlZDsKICAgICB9CiB9CisjZW5kaWYKIAogLSAodm9pZClldmFsdWF0ZUphdmFTY3JpcHQ6KE5T
U3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQs
IE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKQEAgLTkzMiw0MSArOTM0LDIyIEBAIHN0
YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gbnNFcnJvckZyb21FeGNlcHRpb25EZXRhaWxzKGNvbnN0
IFdlYkNvcmU6OkV4Y2VwdGlvbkRlCiAgICAgICAgICAgICBmcmFtZUlEID0gbWFrZU9iamVjdElk
ZW50aWZpZXI8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyVHlwZT4oaWRlbnRpZmllcik7CiAgICAg
fQogCi0gICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCh7IGphdmFT
Y3JpcHRTdHJpbmcsIHNvdXJjZVVSTCwgISFhc0FzeW5jRnVuY3Rpb24sIFdURk1vdmUoYXJndW1l
bnRzTWFwKSwgISFmb3JjZVVzZXJHZXN0dXJlIH0sIGZyYW1lSUQsICp3b3JsZC0+X2NvbnRlbnRX
b3JsZC5nZXQoKSwgW2hhbmRsZXJdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxp
emVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFp
bHMsIFdlYktpdDo6U2NyaXB0VmFsdWVDYWxsYmFjazo6RXJyb3IgZXJyb3JDb2RlKSB7CisgICAg
X3BhZ2UtPnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCh7IGphdmFTY3JpcHRTdHJp
bmcsIHNvdXJjZVVSTCwgISFhc0FzeW5jRnVuY3Rpb24sIFdURk1vdmUoYXJndW1lbnRzTWFwKSwg
ISFmb3JjZVVzZXJHZXN0dXJlIH0sIGZyYW1lSUQsICp3b3JsZC0+X2NvbnRlbnRXb3JsZC5nZXQo
KSwgW2hhbmRsZXJdIChhdXRvJiYgcmVzdWx0KSB7CiAgICAgICAgIGlmICghaGFuZGxlcikKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZXJyb3JDb2RlICE9IFdlYktpdDo6U2Ny
aXB0VmFsdWVDYWxsYmFjazo6RXJyb3I6Ok5vbmUpIHsKLSAgICAgICAgICAgIGF1dG8gZXJyb3Ig
PSBjcmVhdGVOU0Vycm9yKGNhbGxiYWNrRXJyb3JDb2RlKGVycm9yQ29kZSkpOwotICAgICAgICAg
ICAgaWYgKGVycm9yQ29kZSA9PSBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yOjpP
d25lcldhc0ludmFsaWRhdGVkKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIE93bmVyV2FzSW52
YWxpZGF0ZWQgY2FsbGJhY2sgaXMgc3luY2hyb25vdXMuIFdlIGRvbid0IHdhbnQgdG8gY2FsbCB0
aGUgYmxvY2sgZnJvbSB3aXRoaW4gaXQKLSAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHRoYXQg
Y2FuIHRyaWdnZXIgcmUtZW50cmFuY3kgYnVncyBpbiBXZWJLaXQuCi0gICAgICAgICAgICAgICAg
Ly8gRklYTUU6IEl0IHdvdWxkIGJlIGV2ZW4gYmV0dGVyIGlmIEdlbmVyaWNDYWxsYmFjayBkaWQg
dGhpcyBmb3IgdXMuCi0gICAgICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgW2hhbmRsZXIsIGVycm9yXSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1
dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShpZCwgTlNFcnJvciAqKSloYW5kbGVyLmdldCgpOwot
ICAgICAgICAgICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwgZXJyb3IuZ2V0KCkpOwotICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWhh
bmRsZXIuZ2V0KCk7Ci0gICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwgZXJyb3IuZ2V0KCkpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KICAgICAgICAgYXV0byByYXdIYW5kbGVy
ID0gKHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWhhbmRsZXIuZ2V0KCk7Ci0gICAgICAgIGlmIChk
ZXRhaWxzKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIXNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7Ci0g
ICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwgbnNFcnJvckZyb21FeGNlcHRpb25EZXRhaWxzKCpk
ZXRhaWxzKS5nZXQoKSk7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CisgICAg
ICAgICAgICByYXdIYW5kbGVyKG5pbCwgbnNFcnJvckZyb21FeGNlcHRpb25EZXRhaWxzKHJlc3Vs
dC5lcnJvcigpKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoIXNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkgeworICAgICAgICBpZiAoIXJlc3VsdC52
YWx1ZSgpKSB7CiAgICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwgY3JlYXRlTlNFcnJvcihXS0Vy
cm9ySmF2YVNjcmlwdFJlc3VsdFR5cGVJc1Vuc3VwcG9ydGVkKS5nZXQoKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZCBib2R5ID0gQVBJOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS0+aW50ZXJuYWxS
ZXByZXNlbnRhdGlvbigpLCAwKTsKKyAgICAgICAgaWQgYm9keSA9IEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShyZXN1bHQudmFsdWUoKS0+aW50ZXJuYWxSZXByZXNlbnRh
dGlvbigpLCAwKTsKICAgICAgICAgcmF3SGFuZGxlcihib2R5LCBuaWwpOwogICAgIH0pOwogfQpA
QCAtOTk2LDcgKzk3OSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gbnNFcnJvckZyb21F
eGNlcHRpb25EZXRhaWxzKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRlCiAgICAgLy8gY29udGFp
bnMgcmVjZW50IHVwZGF0ZXMuIElmIHdlIGV2ZXIgaGF2ZSBhIFVJLXNpZGUgc25hcHNob3QgbWVj
aGFuaXNtIG9uIG1hY09TLCB3ZSB3aWxsIG5lZWQgdG8gZmFjdG9yCiAgICAgLy8gaW4gc25hcHNo
b3RDb25maWd1cmF0aW9uLmFmdGVyU2NyZWVuVXBkYXRlcyBhdCB0aGF0IHRpbWUuCiAgICAgX3Bh
Z2UtPnRha2VTbmFwc2hvdChXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0KHJlY3RJblZpZXdDb29y
ZGluYXRlcyksIGJpdG1hcFNpemUsIFdlYktpdDo6U25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRp
bmF0ZXMsIFtoYW5kbGVyLCBzbmFwc2hvdFdpZHRoLCBpbWFnZUhlaWdodF0oY29uc3QgV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIFdlYktpdDo6Q2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvckNvZGUpIHsKLSAgICAgICAgaWYgKGVycm9yQ29kZSAhPSBXZWJLaXQ6
OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yOjpOb25lKSB7CisgICAgICAgIGlmIChlcnJvckNv
ZGUgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7CiAgICAgICAgICAgICBh
dXRvIGVycm9yID0gY3JlYXRlTlNFcnJvcihjYWxsYmFja0Vycm9yQ29kZShlcnJvckNvZGUpKTsK
ICAgICAgICAgICAgIGhhbmRsZXIobmlsLCBlcnJvci5nZXQoKSk7CiAgICAgICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZp
ZXcuY3BwCmluZGV4IGQ4YjNmM2MxOTk5Mjg4ZjJhMThkYTM3YjZmMjRhOWM4YTNjM2NmMWEuLjMy
MzdkMmE3ODQ0MmE4MWY1N2Y1MmU4ZjliYjBiNDU0ZDBhNmQxMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0zNzg1LDEx
ICszNzg1LDE0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0V2l0aFBh
cmFtcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnCiB7CiAgICAgR1JlZlB0cjxHVGFz
az4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxs
YmFjaywgdXNlckRhdGEpKTsKIAotICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKFdURk1vdmUocGFyYW1zKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxFeGNl
cHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAg
ICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXVEZNb3ZlKHBhcmFt
cyksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0gKGF1dG8mJiByZXN1bHQpIHsKKyAgICAgICAgUmVm
UHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAg
ICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKLSAgICAgICAgaWYgKGRl
dGFpbHMpCi0gICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gKmRldGFpbHM7Ci0gICAgICAg
IHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soc2VyaWFsaXplZFNjcmlwdFZhbHVl
LCBleGNlcHRpb25EZXRhaWxzLCB0YXNrLmdldCgpKTsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNf
dmFsdWUoKSkKKyAgICAgICAgICAgIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA9IFdURk1vdmUocmVz
dWx0LnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxz
ID0gV1RGTW92ZShyZXN1bHQuZXJyb3IoKSk7CisgICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZh
U2NyaXB0Q2FsbGJhY2soc2VyaWFsaXplZFNjcmlwdFZhbHVlLmdldCgpLCBleGNlcHRpb25EZXRh
aWxzLCB0YXNrLmdldCgpKTsKICAgICB9KTsKIH0KIApAQCAtMzkxOSwxMSArMzkyMiwxNCBAQCB2
b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9pbl93b3JsZChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBjb25zdCBnY2hhcgogCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0
R1JlZihnX3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEp
KTsKICAgICBhdXRvIHdvcmxkID0gQVBJOjpDb250ZW50V29ybGQ6OnNoYXJlZFdvcmxkV2l0aE5h
bWUoU3RyaW5nOjpmcm9tVVRGOCh3b3JsZE5hbWUpKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1
bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCh7IFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0
KSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBXVEY6Om51bGxvcHQsIHdv
cmxkLmdldCgpLCBbdGFzayA9IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRl
dGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgIGdldFBhZ2Uod2ViVmll
dykucnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHsgU3RyaW5nOjpmcm9tVVRGOChz
Y3JpcHQpLCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlIH0sIFdURjo6bnVsbG9w
dCwgd29ybGQuZ2V0KCksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0gKGF1dG8mJiByZXN1bHQpIHsK
KyAgICAgICAgUmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2Ny
aXB0VmFsdWU7CiAgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKLSAg
ICAgICAgaWYgKGRldGFpbHMpCi0gICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gKmRldGFp
bHM7Ci0gICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBleGNlcHRpb25EZXRhaWxzLCB0YXNrLmdldCgpKTsKKyAgICAgICAgaWYg
KHJlc3VsdC5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAgIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA9
IFdURk1vdmUocmVzdWx0LnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBleGNl
cHRpb25EZXRhaWxzID0gV1RGTW92ZShyZXN1bHQuZXJyb3IoKSk7CisgICAgICAgIHdlYmtpdFdl
YlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soc2VyaWFsaXplZFNjcmlwdFZhbHVlLmdldCgpLCBl
eGNlcHRpb25EZXRhaWxzLCB0YXNrLmdldCgpKTsKICAgICB9KTsKIH0KIApAQCAtMzk2MiwxMSAr
Mzk2OCwxNCBAQCBzdGF0aWMgdm9pZCByZXNvdXJjZXNTdHJlYW1SZWFkQ2FsbGJhY2soR09iamVj
dCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZwogICAgIFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ190YXNrX2dldF9zb3VyY2Vfb2JqZWN0KHRhc2suZ2V0
KCkpKTsKICAgICBncG9pbnRlciBvdXRwdXRTdHJlYW1EYXRhID0gZ19tZW1vcnlfb3V0cHV0X3N0
cmVhbV9nZXRfZGF0YShHX01FTU9SWV9PVVRQVVRfU1RSRUFNKG9iamVjdCkpOwogICAgIGdldFBh
Z2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgU3RyaW5nOjpmcm9tVVRGOChy
ZWludGVycHJldF9jYXN0PGNvbnN0IGdjaGFyKj4ob3V0cHV0U3RyZWFtRGF0YSkpLCBVUkwgeyB9
LCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlIH0sCi0gICAgICAgIFt0YXNrXShBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxFeGNlcHRp
b25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICAg
ICAgW3Rhc2tdIChhdXRvJiYgcmVzdWx0KSB7CisgICAgICAgICAgICBSZWZQdHI8QVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKICAgICAgICAgICAgIEV4
Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKLSAgICAgICAgICAgIGlmIChkZXRhaWxz
KQotICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSAqZGV0YWlsczsKLSAgICAgICAg
ICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soc2VyaWFsaXplZFNjcmlwdFZh
bHVlLCBleGNlcHRpb25EZXRhaWxzLCB0YXNrLmdldCgpKTsKKyAgICAgICAgICAgIGlmIChyZXN1
bHQuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICAgICAgc2VyaWFsaXplZFNjcmlwdFZhbHVlID0g
V1RGTW92ZShyZXN1bHQudmFsdWUoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgZXhjZXB0aW9uRGV0YWlscyA9IFdURk1vdmUocmVzdWx0LmVycm9yKCkpOworICAgICAgICAg
ICAgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxsYmFjayhzZXJpYWxpemVkU2NyaXB0VmFs
dWUuZ2V0KCksIGV4Y2VwdGlvbkRldGFpbHMsIHRhc2suZ2V0KCkpOwogICAgICAgICB9KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCmlu
ZGV4IGQyMDQ1MTk5YjQxNTU3YjkzMmFlZDFlMzhlNGMyNWM0ZWUzMmRjNGEuLmRiMjNmNzVjYTJj
ZThmMWVmOTU2ODM2NjMyNTIxMzdhNTVmZGYyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90
ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFJl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aW5zcGVjdChjb25zdCBTdHJpbmcmIGhvc3RB
bmRQb3J0LCBDb25uZWN0aQogdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnJ1
blNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHsKICAgICBtX3BhZ2UucnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKHsgc2NyaXB0LCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmYWxz
ZSB9LCAKLSAgICAgICAgW10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxX
ZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBleGNlcHRpb25EZXRhaWxzLCBDYWxsYmFja0Jhc2U6
OkVycm9yKSB7CisgICAgICAgIFtdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZXhjZXB0aW9uRGV0YWlscykgewogICAgICAg
ICAgICAgaWYgKGV4Y2VwdGlvbkRldGFpbHMpCiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJF
eGNlcHRpb24gcnVubmluZyBzY3JpcHQgXCIlc1wiIiwgZXhjZXB0aW9uRGV0YWlscy0+bWVzc2Fn
ZS51dGY4KCkuZGF0YSgpKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IGY2M2I3NGQzODIxYzAyYmRmNTkyMGMxOGE1ODk3NzcxY2EwYTVkMTgu
LjA4ZGZhYjllYzI4Mzg4NGUxZWE0ZTA4MGIyMDVlM2U5M2E2YmQ0NGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDA4MSwzMSArNDA4MSwzNSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpCiAgICAgICAg
IGxhdW5jaFByb2Nlc3MoeyB9LCBQcm9jZXNzTGF1bmNoUmVhc29uOjpJbml0aWFsUHJvY2Vzcyk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWls
cz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBh
Z2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxSZWZQdHI8QVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYmKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRX
b3JsZChXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQsIEFQSTo6Q29udGVudFdvcmxk
OjpwYWdlQ29udGVudFdvcmxkKCksIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFJ1bkph
dmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlELCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQsIFdURjo6RnVuY3Rp
b248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRl
dGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEV4cGVjdGVkPFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFdlYkNv
cmU6OkV4Y2VwdGlvbkRldGFpbHM+JiYpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgLy8g
Rm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkgc3VwcG9ydCBydW5uaW5nIHNjcmlwdCBpbiBhIFdl
YlZpZXcgd2hpY2ggaGFzIG5vdCBkb25lIGFueSBsb2FkcyB5ZXRzLgogICAgIGxhdW5jaEluaXRp
YWxQcm9jZXNzSWZOZWNlc3NhcnkoKTsKIAotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkg
ewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxwdHIsIHsgfSwgQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQorICAgICAgICByZXR1cm4gY2FsbGJhY2tGdW5jdGlvbih7IG51bGxwdHIg
fSk7CiAKICAgICBQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0eVZhcmlhbnQgYWN0aXZpdHk7CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAocGFnZUNsaWVudCgpLmNhblRha2VGb3Jl
Z3JvdW5kQXNzZXJ0aW9ucygpKQogICAgICAgICBhY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZy
YW1lSW5TY3JpcHRXb3JsZCJfcyk7Ci0gICAgZWxzZQogI2VuZGlmCi0gICAgICAgIGFjdGl2aXR5
ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkIl9zKTsKIAotICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBXVEZN
b3ZlKGFjdGl2aXR5KSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlw
dEluRnJhbWVJblNjcmlwdFdvcmxkKHBhcmFtZXRlcnMsIGZyYW1lSUQsIHdvcmxkLndvcmxkRGF0
YSgpLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQocGFyYW1ldGVycywgZnJhbWVJ
RCwgd29ybGQud29ybGREYXRhKCkpLCBbYWN0aXZpdHkgPSBXVEZNb3ZlKGFjdGl2aXR5KSwgY2Fs
bGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbildIChjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+JiYg
ZGV0YWlscykgbXV0YWJsZSB7CisgICAgICAgIGlmIChkZXRhaWxzKQorICAgICAgICAgICAgcmV0
dXJuIGNhbGxiYWNrRnVuY3Rpb24obWFrZVVuZXhwZWN0ZWQoV1RGTW92ZSgqZGV0YWlscykpKTsK
KyAgICAgICAgaWYgKGRhdGFSZWZlcmVuY2UuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJu
IGNhbGxiYWNrRnVuY3Rpb24oeyBudWxscHRyIH0pOworICAgICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKKyAgICAgICAgZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRhdGFSZWZlcmVuY2Uu
c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFS
ZWZlcmVuY2Uuc2l6ZSgpKTsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbih7IEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlOjphZG9wdChXVEZNb3ZlKGRhdGEpKS5wdHIoKSB9KTsKKyAgICB9KTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0
aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTcxNjAsMjYgKzcxNjQsNiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6aW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2Ny
aXB0VmFsdWVDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2Us
IE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKLXsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxTY3JpcHRWYWx1ZUNh
bGxiYWNrPihjYWxsYmFja0lEKTsKLSAgICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBMb2cgZXJyb3Igb3IgYXNzZXJ0LgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGRhdGFSZWZlcmVuY2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNhbGxiYWNrLT5wZXJmb3Jt
Q2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUobnVsbHB0ciwgZGV0YWlscyk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBkYXRhLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoZGF0YVJlZmVyZW5jZS5zaXplKCkpOwotICAgIGRhdGEuYXBwZW5kKGRh
dGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7Ci0KLSAgICBjYWxsYmFj
ay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjphZG9wdChXVEZNb3ZlKGRhdGEpKS5wdHIoKSwgZGV0YWlscyk7Ci19Ci0KIHZvaWQgV2Vi
UGFnZVByb3h5Ojpjb21wdXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPEludFJlY3Q+JiBw
YWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIGNvbnN0IEZsb2F0
Qm94RXh0ZW50JiBjb21wdXRlZFBhZ2VNYXJnaW4sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsK
ICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxDb21wdXRlZFBhZ2VzQ2FsbGJh
Y2s+KGNhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCA4MjE5ZWJiNTNiMWNmZTM2MzlmMmRjMTZjNzdjOTFmY2Y1ZmViMDFiLi5lNDdjYjVlNDFmMzlk
ZGI3OWZkNTFkNzUxZjkzYWVmM2RjYmMyNTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMzY1LDcgKzM2NSw2IEBAIGVudW0gY2xhc3MgV2ViQ29udGVudE1vZGUg
OiB1aW50OF90OwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpEYXRhKj4gRGF0YUNhbGxi
YWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8dWludDY0X3Q+IFVuc2lnbmVkQ2FsbGJhY2s7
CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmPiBTdHJpbmdDYWxsYmFjazsK
LXR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4+IFNjcmlwdFZhbHVlQ2FsbGJhY2s7CiB0
eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBXZWJDb3JlOjpGb250QXR0cmlidXRlcyY+IEZv
bnRBdHRyaWJ1dGVzQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmPiBTZWxlY3Rpb25Db250ZXh0Q2FsbGJh
Y2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxib29sPiBCb29sQ2FsbGJhY2s7CkBAIC0xMTQw
LDggKzExMzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVE
YXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsK
ICAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lk
IGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBGdW5jdGlvbjx2b2lkIChBUEk6
OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWUoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgV1RGOjpGdW5j
dGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXZWJDb3Jl
OjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+LCBBUEk6OkNvbnRlbnRXb3JsZCYsIEZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdl
YkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhwZWN0ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscz4mJik+JiYpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJblNj
cmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIEFQSTo6Q29udGVudFdvcmxkJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeHBlY3RlZDxSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBX
ZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYmKT4mJik7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQo
UmVmUHRyPFZvaWRDYWxsYmFjaz4mJik7CiAKICAgICBmbG9hdCBoZWFkZXJIZWlnaHQoV2ViRnJh
bWVQcm94eSYpOwpAQCAtMjEzMCw3ICsyMTI5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJvb2xD
YWxsYmFjayhib29sIHJlc3VsdCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzdHJpbmdDYWxsYmFj
ayhjb25zdCBTdHJpbmcmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGludmFsaWRhdGVTdHJpbmdD
YWxsYmFjayhDYWxsYmFja0lEKTsKLSAgICB2b2lkIHNjcmlwdFZhbHVlQ2FsbGJhY2soY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4s
IENhbGxiYWNrSUQpOwogICAgIHZvaWQgY29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpJbnRSZWN0PiYsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiBjb21wdXRlZFBhZ2VNYXJnaW4sIENhbGxi
YWNrSUQpOwogICAgIHZvaWQgdmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwg
Ym9vbCwgaW50LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHVuc2lnbmVkQ2FsbGJhY2sodWludDY0
X3QsIENhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IDQ5ZDI2NGRiNmIxNmU5ZjY3MjFiYzI1YjJjYjUwMzBlMzJk
YjQ4MjguLjQyMTQ1ZjJjNWMwNGIzMzhhYjA0MWZiMDZkNjk2ODZjMmY1NzkxNTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE2
Nyw3ICsxNjcsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFN0cmluZ0NhbGxi
YWNrKFN0cmluZyByZXN1bHRTdHJpbmcsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ICAgIEJvb2xDYWxsYmFjayhib29sIHJlc3VsdCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiAgICAgSW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQotICAgIFNjcmlwdFZhbHVlQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3Vs
dERhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIENvbXB1dGVkUGFnZXNDYWxsYmFjayhWZWN0
b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZv
clByaW50aW5nLCBXZWJDb3JlOjpSZWN0RWRnZXM8ZmxvYXQ+IGNvbXB1dGVkUGFnZU1hcmdpbiwg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgVmFsaWRhdGVDb21tYW5kQ2FsbGJh
Y2soU3RyaW5nIGNvbW1hbmQsIGJvb2wgaXNFbmFibGVkLCBpbnQzMl90IHN0YXRlLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBVbnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJl
c3VsdCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGJlMGI1NWNmNjQ3OGQwNzNjMzA2ODRh
NDRmNmM2Mzc4NzJiYTc3OGUuLjI2MGEwZTJhY2I0YmU5ZWE3YjNkMGYzYWJjZmQwNjAyZjUxNDcy
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC0zNDYzLDIzICszNDYzLDMzIEBAIEtleWJvYXJkVUlNb2RlIFdlYlBhZ2U6OmtleWJvYXJkVUlN
b2RlKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRVSU1vZGU+KChmdWxsS2V5Ym9h
cmRBY2Nlc3NFbmFibGVkID8gS2V5Ym9hcmRBY2Nlc3NGdWxsIDogS2V5Ym9hcmRBY2Nlc3NEZWZh
dWx0KSB8IChtX3RhYlRvTGlua3MgPyBLZXlib2FyZEFjY2Vzc1RhYnNUb0xpbmtzIDogMCkpOwog
fQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZh
U2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENvbnRlbnRXb3JsZElkZW50aWZpZXIgd29y
bGRJZGVudGlmaWVyLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkph
dmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMsIENvbnRlbnRXb3JsZElkZW50aWZpZXIgd29ybGRJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
Ly8gTk9URTogV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdoZW4gcnVubmluZyBzY3JpcHRzIHRoYXQg
dGhlIG9iamVjdHMgd2UgZGVwZW5kIG9uIGRvbid0CiAgICAgLy8gZGlzYXBwZWFyIGR1cmluZyBz
Y3JpcHQgZXhlY3V0aW9uLgogCiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgp
KSB7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxs
YmFjayh7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlw
dDogVGFyZ2V0IGZyYW1lIGNvdWxkIG5vdCBiZSBmb3VuZCBpbiB0aGUgcGFnZSJfcywgMCwgMCwg
RXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6SW52YWxpZFRhcmdldEZyYW1lIH0sIGNhbGxiYWNrSUQp
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVu
YWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQ6IFRhcmdldCBmcmFtZSBjb3VsZCBub3QgYmUgZm91
bmQgaW4gdGhlIHBhZ2UiX3MsIDAsIDAsIEV4Y2VwdGlvbkRldGFpbHM6OlR5cGU6OkludmFsaWRU
YXJnZXRGcmFtZSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8qIHdvcmxk
ID0gbV91c2VyQ29udGVudENvbnRyb2xsZXItPndvcmxkRm9ySWRlbnRpZmllcih3b3JsZElkZW50
aWZpZXIpOwogICAgIGlmICghd29ybGQpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFi
bGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0OiBDYW5ub3QgZmluZCBzcGVjaWZpZWQgY29udGVudCB3
b3JsZCJfcyB9LCBjYWxsYmFja0lEKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwg
RXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0OiBDYW5ub3Qg
ZmluZCBzcGVjaWZpZWQgY29udGVudCB3b3JsZCJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGF1dG8gcmVzb2x2ZUZ1bmN0aW9uID0gW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgdGhpcywgd29ybGQgPSBtYWtlUmVmKCp3b3JsZCksIGZyYW1lID0gbWFrZVJlZigq
ZnJhbWUpLCBjYWxsYmFja0lEXShWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdCkgeworI2lmIEVOQUJM
RShBUFBfQk9VTkRfRE9NQUlOUykKKyAgICBpZiAoZnJhbWUtPnNob3VsZEVuYWJsZUluQXBwQnJv
d3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGluIGEg
ZnJhbWUgdGhhdCBpcyBub3QgaW4gYW4gYXBwLWJvdW5kIGRvbWFpbiJfcywgMCwgMCwgRXhjZXB0
aW9uRGV0YWlsczo6VHlwZTo6QXBwQm91bmREb21haW4gfSk7CisgICAgICAgIGlmIChhdXRvKiBk
b2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKKyAgICAgICAgICAgIGRv
Y3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24t
YXBwIGJvdW5kIGRvbWFpbi4iKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RChMb2FkaW5nLCAicnVuSmF2YVNjcmlwdDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9u
IGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmCisKKyAgICBhdXRvIHJlc29sdmVGdW5jdGlvbiA9IFt3b3JsZCA9IG1ha2VSZWYoKndvcmxk
KSwgZnJhbWUgPSBtYWtlUmVmKCpmcmFtZSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIChWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdCkgbXV0YWJsZSB7CiAg
ICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRWYWx1
ZTsKICAgICAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAgICAgc2VyaWFsaXplZFJlc3VsdFZh
bHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZnJhbWUtPmpzQ29udGV4dEZvcldv
cmxkKHdvcmxkLnB0cigpKSwKQEAgLTM0OTQsMjIgKzM1MDQsMTMgQEAgdm9pZCBXZWJQYWdlOjpy
dW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXIKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICBkZXRhaWxzID0gcmVz
dWx0LmVycm9yKCk7CiAKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3Jp
cHRWYWx1ZUNhbGxiYWNrKGRhdGFSZWZlcmVuY2UsIGRldGFpbHMsIGNhbGxiYWNrSUQpKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGF0YVJlZmVyZW5jZSwgZGV0YWlscyk7CiAgICAgfTsK
LSNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCi0gICAgaWYgKGZyYW1lLT5zaG91bGRFbmFi
bGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgewotICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soeyB9LCBFeGNlcHRpb25EZXRh
aWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQgaW4gYSBmcmFtZSB0aGF0IGlzIG5v
dCBpbiBhbiBhcHAtYm91bmQgZG9tYWluIl9zLCAwLCAwLCBFeGNlcHRpb25EZXRhaWxzOjpUeXBl
OjpBcHBCb3VuZERvbWFpbiB9LCBjYWxsYmFja0lEKSk7Ci0gICAgICAgIGlmIChhdXRvKiBkb2N1
bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3Vt
ZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxl
dmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBw
IGJvdW5kIGRvbWFpbi4iKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChM
b2FkaW5nLCAicnVuSmF2YVNjcmlwdDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZv
ciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlm
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7CiAgICAgZnJhbWUtPmNvcmVGcmFt
ZSgpLT5zY3JpcHQoKS5leGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZCh3
b3JsZC0+Y29yZVdvcmxkKCksIFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUocmVzb2x2ZUZ1
bmN0aW9uKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlw
dFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdv
cmxkSWRlbnRpZmllciwgU3RyaW5nPiYgd29ybGREYXRhLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
Cit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZh
U2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgY29uc3Qgc3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIs
IFN0cmluZz4mIHdvcmxkRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIHdlYkZyYW1lID0gZnJhbWVJRCA/
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKCpmcmFtZUlEKSA6ICZtYWluV2ViRnJh
bWUoKTsKIApAQCAtMzUxOSw3ICszNTIwLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0
SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWUKICAg
ICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaEdsb2JhbE9iamVjdEF2
YWlsYWJsZShjb3JlV29ybGQpOwogICAgIH0KIAotICAgIHJ1bkphdmFTY3JpcHQod2ViRnJhbWUs
IFdURk1vdmUocGFyYW1ldGVycyksIHdvcmxkRGF0YS5maXJzdCwgY2FsbGJhY2tJRCk7CisgICAg
cnVuSmF2YVNjcmlwdCh3ZWJGcmFtZSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgd29ybGREYXRhLmZp
cnN0LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Z2V0
Q29udGVudHNBc1N0cmluZyhDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzIGluY2x1
ZGVDaGlsZEZyYW1lcywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGQ1M2QzMDQzZjVhNzYxMGRlYmJlMzI1NzBh
NDhkMGUyNWFmNDdlMTIuLjAxNTBhOTI1Y2Q4MjJhMTQ3MDhlZGFjZjc0YWEwZmJjZWY3NWUxYWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1NDgs
OCArMTU0OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVE
YXRhKENhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBydW5KYXZh
U2NyaXB0KFdlYkZyYW1lKiwgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgQ29u
dGVudFdvcmxkSWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0
SW5GcmFtZUluU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwg
T3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgY29uc3Qgc3RkOjpwYWlyPENvbnRl
bnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxkRGF0YSwgQ2FsbGJhY2tJRCk7CisgICAg
dm9pZCBydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiwgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFt
ZXRlcnMmJiwgQ29udGVudFdvcmxkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzPiYpPiYmKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRX
b3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBPcHRpb25hbDxXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXI+LCBjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRpZmll
ciwgU3RyaW5nPiYgd29ybGREYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+
Jik+JiYpOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KENhbGxiYWNrSUQpOwogICAgIHZvaWQgdGFr
ZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXpl
IGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIENhbGxiYWNrSUQpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRl
eCAzN2IzYzMzMmFmNTUwY2U2Mjc5OGQzMjVhMTA3ZTY2MTUzZWNlMWQ1Li4wYzlkOTY3YjZjZDY0
NDU1MWVhZTczYTM4OWQ2MjZhYjY3MWNjYWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIyMCw4ICsyMjAsNyBA
QCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5
bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAKLSAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgdXNlIHNlbmRXaXRoQXN5bmNSZXBseSBpbnN0ZWFkIG9mIGNhbGxiYWNrSURzCi0gICAg
UnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3JlOjpSdW5KYXZh
U2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIHN0ZDo6cGFpcjxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIs
IFN0cmluZz4gd29ybGQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFJ1bkph
dmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChzdHJ1Y3QgV2ViQ29yZTo6UnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMgcGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBzdGQ6OnBhaXI8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJp
bmc+IHdvcmxkKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIE9wdGlvbmFsPFdl
YkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMpIEFzeW5jCiAKICAgICBGb3JjZVJlcGFp
bnQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2VsZWN0QWxsKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410688</attachid>
            <date>2020-10-06 13:31:58 -0700</date>
            <delta_ts>2020-10-06 13:50:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217351-20201006133158.patch</filename>
            <type>text/plain</type>
            <size>27172</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjgwNjkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDIwLTEwLTA2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIHNlbmRXaXRo
QXN5bmNSZXBseSB0byBldmFsdWF0ZSBKYXZhU2NyaXB0IGluIGEgV2ViUGFnZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MzUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBObyBjaGFuZ2UgaW4gbWVhbmlu
Z2Z1bCBiZWhhdmlvciwgYnV0IGNvbXBsZXhpdHkgaXMgcmVtb3ZlZC4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlUnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6YXNBc3luY0Z1bmN0aW9u
OndpdGhTb3VyY2VVUkw6d2l0aEFyZ3VtZW50czpmb3JjZVVzZXJHZXN0dXJlOmluRnJhbWU6aW5X
b3JsZDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHRha2VTbmFw
c2hvdFdpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzY3JpcHRWYWx1ZUNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjAtMTAtMDYgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIG93bmVyc2hpcCBv
ZiBEb3dubG9hZENsaWVudCBmcm9tIFdlYlByb2Nlc3NQb29sIHRvIERvd25sb2FkUHJveHkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjY4
MDY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDA4MSwzMSArNDA4MSwzNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNo
SW5pdGlhbFByb2Nlc3NJCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoeyB9LCBQcm9jZXNzTGF1bmNo
UmVhc29uOjpJbml0aWFsUHJvY2Vzcyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZh
U2NyaXB0SW5NYWluRnJhbWUoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8
V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeHBlY3RlZDxSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBXZWJDb3Jl
OjpFeGNlcHRpb25EZXRhaWxzPiYmKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIHJ1bkph
dmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEY6Om51
bGxvcHQsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCksIFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdElu
RnJhbWVJblNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywg
T3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBBUEk6OkNvbnRlbnRX
b3JsZCYgd29ybGQsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1l
SW5TY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgQVBJOjpDb250ZW50V29ybGQm
IHdvcmxkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFJlZlB0cjxBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiYpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCiB7CiAgICAgLy8gRm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkgc3VwcG9y
dCBydW5uaW5nIHNjcmlwdCBpbiBhIFdlYlZpZXcgd2hpY2ggaGFzIG5vdCBkb25lIGFueSBsb2Fk
cyB5ZXRzLgogICAgIGxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKTsKIAotICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxw
dHIsIHsgfSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQorICAgICAgICByZXR1cm4gY2Fs
bGJhY2tGdW5jdGlvbih7IG51bGxwdHIgfSk7CiAKICAgICBQcm9jZXNzVGhyb3R0bGVyOjpBY3Rp
dml0eVZhcmlhbnQgYWN0aXZpdHk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAo
cGFnZUNsaWVudCgpLmNhblRha2VGb3JlZ3JvdW5kQXNzZXJ0aW9ucygpKQogICAgICAgICBhY3Rp
dml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCJfcyk7Ci0gICAgZWxzZQog
I2VuZGlmCi0gICAgICAgIGFjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdv
cmxkIl9zKTsKIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBXVEZNb3ZlKGFjdGl2aXR5KSk7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHBhcmFtZXRlcnMs
IGZyYW1lSUQsIHdvcmxkLndvcmxkRGF0YSgpLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0
V29ybGQocGFyYW1ldGVycywgZnJhbWVJRCwgd29ybGQud29ybGREYXRhKCkpLCBbYWN0aXZpdHkg
PSBXVEZNb3ZlKGFjdGl2aXR5KSwgY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbildIChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIE9wdGlv
bmFsPEV4Y2VwdGlvbkRldGFpbHM+JiYgZGV0YWlscykgbXV0YWJsZSB7CisgICAgICAgIGlmIChk
ZXRhaWxzKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrRnVuY3Rpb24obWFrZVVuZXhwZWN0
ZWQoV1RGTW92ZSgqZGV0YWlscykpKTsKKyAgICAgICAgaWYgKGRhdGFSZWZlcmVuY2UuaXNFbXB0
eSgpKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrRnVuY3Rpb24oeyBudWxscHRyIH0pOwor
ICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKKyAgICAgICAgZGF0YS5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoZGF0
YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKKyAgICAgICAgY2FsbGJh
Y2tGdW5jdGlvbih7IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChXVEZNb3ZlKGRh
dGEpKS5wdHIoKSB9KTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3Ry
aW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTcxNjAs
MjYgKzcxNjQsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZVN0cmluZ0NhbGxiCiAg
ICAgY2FsbGJhY2stPmludmFsaWRhdGUoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNjcmlw
dFZhbHVlQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBP
cHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
Ci17Ci0gICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8U2NyaXB0VmFsdWVDYWxs
YmFjaz4oY2FsbGJhY2tJRCk7Ci0gICAgaWYgKCFjYWxsYmFjaykgewotICAgICAgICAvLyBGSVhN
RTogTG9nIGVycm9yIG9yIGFzc2VydC4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChkYXRhUmVmZXJlbmNlLmlzRW1wdHkoKSkgewotICAgICAgICBjYWxsYmFjay0+cGVyZm9ybUNh
bGxiYWNrV2l0aFJldHVyblZhbHVlKG51bGxwdHIsIGRldGFpbHMpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgZGF0YS5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKLSAgICBkYXRhLmFwcGVuZChkYXRh
UmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOwotCi0gICAgY2FsbGJhY2st
PnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6YWRvcHQoV1RGTW92ZShkYXRhKSkucHRyKCksIGRldGFpbHMpOwotfQotCiB2b2lkIFdlYlBh
Z2VQcm94eTo6Y29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcGFn
ZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBjb25zdCBGbG9hdEJv
eEV4dGVudCYgY29tcHV0ZWRQYWdlTWFyZ2luLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8Q29tcHV0ZWRQYWdlc0NhbGxiYWNr
PihjYWxsYmFja0lEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CShyZXZpc2lvbiAyNjgwNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtMzY1LDcgKzM2NSw2IEBAIGVudW0gY2xhc3MgV2ViQ29u
dGVudE1vZGUgOiB1aW50OF90OwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpEYXRhKj4g
RGF0YUNhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8dWludDY0X3Q+IFVuc2lnbmVk
Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmPiBTdHJpbmdD
YWxsYmFjazsKLXR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4+IFNjcmlwdFZhbHVlQ2Fs
bGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBXZWJDb3JlOjpGb250QXR0cmli
dXRlcyY+IEZvbnRBdHRyaWJ1dGVzQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmPiBTZWxlY3Rpb25Db250
ZXh0Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxib29sPiBCb29sQ2FsbGJhY2s7
CkBAIC0xMTQwLDggKzExMzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Bc1dl
YkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKICAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsK
ICAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBGdW5jdGlvbjx2
b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWUoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwg
V1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFs
PFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3Js
ZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBPcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+LCBBUEk6OkNvbnRlbnRXb3JsZCYsIEZ1bmN0aW9uPHZvaWQoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2Vi
Q29yZTo6RXhjZXB0aW9uRGV0YWlscz4mJik+JiYpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdElu
RnJhbWVJblNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9w
dGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIEFQSTo6Q29udGVudFdvcmxkJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU+LCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYmKT4mJik7CiAgICAgdm9pZCBmb3Jj
ZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4mJik7CiAKICAgICBmbG9hdCBoZWFkZXJIZWln
aHQoV2ViRnJhbWVQcm94eSYpOwpAQCAtMjEzMCw3ICsyMTI5LDYgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGJvb2xDYWxsYmFjayhib29sIHJlc3VsdCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzdHJp
bmdDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGludmFsaWRh
dGVTdHJpbmdDYWxsYmFjayhDYWxsYmFja0lEKTsKLSAgICB2b2lkIHNjcmlwdFZhbHVlQ2FsbGJh
Y2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscz4sIENhbGxiYWNrSUQpOwogICAgIHZvaWQgY29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9y
UHJpbnRpbmcsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiBjb21wdXRlZFBhZ2VNYXJn
aW4sIENhbGxiYWNrSUQpOwogICAgIHZvaWQgdmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soY29uc3Qg
U3RyaW5nJiwgYm9vbCwgaW50LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHVuc2lnbmVkQ2FsbGJh
Y2sodWludDY0X3QsIENhbGxiYWNrSUQpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjY4MDY5KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjcsNyArMTY3LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBT
dHJpbmdDYWxsYmFjayhTdHJpbmcgcmVzdWx0U3RyaW5nLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKICAgICBCb29sQ2FsbGJhY2soYm9vbCByZXN1bHQsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogICAgIEludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKLSAgICBTY3JpcHRWYWx1ZUNhbGxiYWNrKElQQzo6RGF0YVJlZmVy
ZW5jZSByZXN1bHREYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRh
aWxzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBDb21wdXRlZFBhZ2VzQ2Fs
bGJhY2soVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2Nh
bGVGYWN0b3JGb3JQcmludGluZywgV2ViQ29yZTo6UmVjdEVkZ2VzPGZsb2F0PiBjb21wdXRlZFBh
Z2VNYXJnaW4sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFZhbGlkYXRlQ29t
bWFuZENhbGxiYWNrKFN0cmluZyBjb21tYW5kLCBib29sIGlzRW5hYmxlZCwgaW50MzJfdCBzdGF0
ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgVW5zaWduZWRDYWxsYmFjayh1
aW50NjRfdCByZXN1bHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyNjgwNjkpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDg5LDggKzI0ODksMTEgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQoV0tQ
YWdlUmVmIAogCiB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXS1BhZ2VSZWYg
cGFnZVJlZiwgV0tTdHJpbmdSZWYgc2NyaXB0UmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VSdW5K
YXZhU2NyaXB0RnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWUoeyB0b0ltcGwoc2NyaXB0UmVmKS0+c3RyaW5nKCksIFVSTCB7
IH0sIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRydWUgfSwgW2NvbnRleHQsIGNhbGxiYWNrXShBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogcmV0dXJuVmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGNh
bGxiYWNrKHRvQVBJKHJldHVyblZhbHVlKSwgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6
Ok5vbmUpID8gdG9BUEkoQVBJOjpFcnJvcjo6Y3JlYXRlKCkucHRyKCkpIDogMCwgY29udGV4dCk7
CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoeyB0b0ltcGwo
c2NyaXB0UmVmKS0+c3RyaW5nKCksIFVSTCB7IH0sIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRydWUg
fSwgW2NvbnRleHQsIGNhbGxiYWNrXSAoYXV0byYmIHJlc3VsdCkgeworICAgICAgICBpZiAocmVz
dWx0Lmhhc192YWx1ZSgpKQorICAgICAgICAgICAgY2FsbGJhY2sodG9BUEkocmVzdWx0LnZhbHVl
KCkuZ2V0KCkpLCBudWxscHRyLCBjb250ZXh0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
Y2FsbGJhY2sobnVsbHB0ciwgbnVsbHB0ciwgY29udGV4dCk7CiAgICAgfSk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2
aXNpb24gMjY4MDY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzk2LDYgKzc5Niw3IEBAIC0gKHZvaWQpc3RvcExv
YWRpbmcKICAgICBfcGFnZS0+c3RvcExvYWRpbmcoKTsKIH0KIAorI2lmIFVTRShBUFBLSVQpCiBz
dGF0aWMgV0tFcnJvckNvZGUgY2FsbGJhY2tFcnJvckNvZGUoV2ViS2l0OjpDYWxsYmFja0Jhc2U6
OkVycm9yIGVycm9yKQogewogICAgIHN3aXRjaCAoZXJyb3IpIHsKQEAgLTgxMyw2ICs4MTQsNyBA
QCBzdGF0aWMgV0tFcnJvckNvZGUgY2FsbGJhY2tFcnJvckNvZGUoV2ViCiAgICAgICAgIHJldHVy
biBXS0Vycm9yV2ViVmlld0ludmFsaWRhdGVkOwogICAgIH0KIH0KKyNlbmRpZgogCiAtICh2b2lk
KWV2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewpA
QCAtOTMyLDQxICs5MzQsMjIgQEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmlu
ZyAqKQogICAgICAgICAgICAgZnJhbWVJRCA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllclR5cGU+KGlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIF9wYWdlLT5y
dW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoeyBqYXZhU2NyaXB0U3RyaW5nLCBzb3Vy
Y2VVUkwsICEhYXNBc3luY0Z1bmN0aW9uLCBXVEZNb3ZlKGFyZ3VtZW50c01hcCksICEhZm9yY2VV
c2VyR2VzdHVyZSB9LCBmcmFtZUlELCAqd29ybGQtPl9jb250ZW50V29ybGQuZ2V0KCksIFtoYW5k
bGVyXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBP
cHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OlNjcmlw
dFZhbHVlQ2FsbGJhY2s6OkVycm9yIGVycm9yQ29kZSkgeworICAgIF9wYWdlLT5ydW5KYXZhU2Ny
aXB0SW5GcmFtZUluU2NyaXB0V29ybGQoeyBqYXZhU2NyaXB0U3RyaW5nLCBzb3VyY2VVUkwsICEh
YXNBc3luY0Z1bmN0aW9uLCBXVEZNb3ZlKGFyZ3VtZW50c01hcCksICEhZm9yY2VVc2VyR2VzdHVy
ZSB9LCBmcmFtZUlELCAqd29ybGQtPl9jb250ZW50V29ybGQuZ2V0KCksIFtoYW5kbGVyXSAoYXV0
byYmIHJlc3VsdCkgewogICAgICAgICBpZiAoIWhhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgaWYgKGVycm9yQ29kZSAhPSBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6
OkVycm9yOjpOb25lKSB7Ci0gICAgICAgICAgICBhdXRvIGVycm9yID0gY3JlYXRlTlNFcnJvcihj
YWxsYmFja0Vycm9yQ29kZShlcnJvckNvZGUpKTsKLSAgICAgICAgICAgIGlmIChlcnJvckNvZGUg
PT0gV2ViS2l0OjpTY3JpcHRWYWx1ZUNhbGxiYWNrOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRl
ZCkgewotICAgICAgICAgICAgICAgIC8vIFRoZSBPd25lcldhc0ludmFsaWRhdGVkIGNhbGxiYWNr
IGlzIHN5bmNocm9ub3VzLiBXZSBkb24ndCB3YW50IHRvIGNhbGwgdGhlIGJsb2NrIGZyb20gd2l0
aGluIGl0Ci0gICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGF0IGNhbiB0cmlnZ2VyIHJlLWVu
dHJhbmN5IGJ1Z3MgaW4gV2ViS2l0LgotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJdCB3b3Vs
ZCBiZSBldmVuIGJldHRlciBpZiBHZW5lcmljQ2FsbGJhY2sgZGlkIHRoaXMgZm9yIHVzLgotICAg
ICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFto
YW5kbGVyLCBlcnJvcl0gewotICAgICAgICAgICAgICAgICAgICBhdXRvIHJhd0hhbmRsZXIgPSAo
dm9pZCAoXikoaWQsIE5TRXJyb3IgKikpaGFuZGxlci5nZXQoKTsKLSAgICAgICAgICAgICAgICAg
ICAgcmF3SGFuZGxlcihuaWwsIGVycm9yLmdldCgpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGF1dG8g
cmF3SGFuZGxlciA9ICh2b2lkICheKShpZCwgTlNFcnJvciAqKSloYW5kbGVyLmdldCgpOwotICAg
ICAgICAgICAgcmF3SGFuZGxlcihuaWwsIGVycm9yLmdldCgpKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCiAgICAgICAgIGF1dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShpZCwg
TlNFcnJvciAqKSloYW5kbGVyLmdldCgpOwotICAgICAgICBpZiAoZGV0YWlscykgewotICAgICAg
ICAgICAgQVNTRVJUKCFzZXJpYWxpemVkU2NyaXB0VmFsdWUpOwotICAgICAgICAgICAgcmF3SGFu
ZGxlcihuaWwsIG5zRXJyb3JGcm9tRXhjZXB0aW9uRGV0YWlscygqZGV0YWlscykuZ2V0KCkpOwor
ICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgeworICAgICAgICAgICAgcmF3SGFuZGxl
cihuaWwsIG5zRXJyb3JGcm9tRXhjZXB0aW9uRGV0YWlscyhyZXN1bHQuZXJyb3IoKSkuZ2V0KCkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFzZXJpYWxp
emVkU2NyaXB0VmFsdWUpIHsKKyAgICAgICAgaWYgKCFyZXN1bHQudmFsdWUoKSkgewogICAgICAg
ICAgICAgcmF3SGFuZGxlcihuaWwsIGNyZWF0ZU5TRXJyb3IoV0tFcnJvckphdmFTY3JpcHRSZXN1
bHRUeXBlSXNVbnN1cHBvcnRlZCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgaWQgYm9keSA9IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNl
cmlhbGl6ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUtPmludGVybmFsUmVwcmVzZW50YXRpb24oKSwg
MCk7CisgICAgICAgIGlkIGJvZHkgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJp
YWxpemUocmVzdWx0LnZhbHVlKCktPmludGVybmFsUmVwcmVzZW50YXRpb24oKSwgMCk7CiAgICAg
ICAgIHJhd0hhbmRsZXIoYm9keSwgbmlsKTsKICAgICB9KTsKIH0KQEAgLTk5Niw3ICs5NzksNyBA
QCAtICh2b2lkKXRha2VTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXCiAgICAgLy8gY29udGFp
bnMgcmVjZW50IHVwZGF0ZXMuIElmIHdlIGV2ZXIgaGF2ZSBhIFVJLXNpZGUgc25hcHNob3QgbWVj
aGFuaXNtIG9uIG1hY09TLCB3ZSB3aWxsIG5lZWQgdG8gZmFjdG9yCiAgICAgLy8gaW4gc25hcHNo
b3RDb25maWd1cmF0aW9uLmFmdGVyU2NyZWVuVXBkYXRlcyBhdCB0aGF0IHRpbWUuCiAgICAgX3Bh
Z2UtPnRha2VTbmFwc2hvdChXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0KHJlY3RJblZpZXdDb29y
ZGluYXRlcyksIGJpdG1hcFNpemUsIFdlYktpdDo6U25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRp
bmF0ZXMsIFtoYW5kbGVyLCBzbmFwc2hvdFdpZHRoLCBpbWFnZUhlaWdodF0oY29uc3QgV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIFdlYktpdDo6Q2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvckNvZGUpIHsKLSAgICAgICAgaWYgKGVycm9yQ29kZSAhPSBXZWJLaXQ6
OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVycm9yOjpOb25lKSB7CisgICAgICAgIGlmIChlcnJvckNv
ZGUgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7CiAgICAgICAgICAgICBh
dXRvIGVycm9yID0gY3JlYXRlTlNFcnJvcihjYWxsYmFja0Vycm9yQ29kZShlcnJvckNvZGUpKTsK
ICAgICAgICAgICAgIGhhbmRsZXIobmlsLCBlcnJvci5nZXQoKSk7CiAgICAgICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJWaWV3LmNwcAkocmV2aXNpb24gMjY4MDY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3ODUsMTEg
KzM3ODUsMTQgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRXaQogewog
ICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyh3ZWJWaWV3LCBj
YW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7CiAKLSAgICBnZXRQYWdlKHdlYlZpZXcp
LnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXVEZNb3ZlKHBhcmFtcyksIFt0YXNrID0gV1RGTW92
ZSh0YXNrKV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jh
c2U6OkVycm9yKSB7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUoV1RGTW92ZShwYXJhbXMpLCBbdGFzayA9IFdURk1vdmUodGFzayldIChhdXRvJiYgcmVzdWx0
KSB7CisgICAgICAgIFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOwogICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFpbHM7
Ci0gICAgICAgIGlmIChkZXRhaWxzKQotICAgICAgICAgICAgZXhjZXB0aW9uRGV0YWlscyA9ICpk
ZXRhaWxzOwotICAgICAgICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENhbGxiYWNrKHNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSwgZXhjZXB0aW9uRGV0YWlscywgdGFzay5nZXQoKSk7CisgICAgICAg
IGlmIChyZXN1bHQuaGFzX3ZhbHVlKCkpCisgICAgICAgICAgICBzZXJpYWxpemVkU2NyaXB0VmFs
dWUgPSBXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
ZXhjZXB0aW9uRGV0YWlscyA9IFdURk1vdmUocmVzdWx0LmVycm9yKCkpOworICAgICAgICB3ZWJr
aXRXZWJWaWV3UnVuSmF2YVNjcmlwdENhbGxiYWNrKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5nZXQo
KSwgZXhjZXB0aW9uRGV0YWlscywgdGFzay5nZXQoKSk7CiAgICAgfSk7CiB9CiAKQEAgLTM5MTks
MTEgKzM5MjIsMTQgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfaW5fdwog
CiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tfbmV3KHdlYlZpZXcs
IGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKICAgICBhdXRvIHdvcmxkID0gQVBJ
OjpDb250ZW50V29ybGQ6OnNoYXJlZFdvcmxkV2l0aE5hbWUoU3RyaW5nOjpmcm9tVVRGOCh3b3Js
ZE5hbWUpKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3Jp
cHRXb3JsZCh7IFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6
bnVsbG9wdCwgdHJ1ZSB9LCBXVEY6Om51bGxvcHQsIHdvcmxkLmdldCgpLCBbdGFzayA9IFdURk1v
dmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFs
dWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tC
YXNlOjpFcnJvcikgeworICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluRnJhbWVJ
blNjcmlwdFdvcmxkKHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBVUkwgeyB9LCBmYWxzZSwg
V1RGOjpudWxsb3B0LCB0cnVlIH0sIFdURjo6bnVsbG9wdCwgd29ybGQuZ2V0KCksIFt0YXNrID0g
V1RGTW92ZSh0YXNrKV0gKGF1dG8mJiByZXN1bHQpIHsKKyAgICAgICAgUmVmUHRyPEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAgICAgICAgIEV4Y2Vw
dGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKLSAgICAgICAgaWYgKGRldGFpbHMpCi0gICAg
ICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gKmRldGFpbHM7Ci0gICAgICAgIHdlYmtpdFdlYlZp
ZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBleGNlcHRpb25E
ZXRhaWxzLCB0YXNrLmdldCgpKTsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNfdmFsdWUoKSkKKyAg
ICAgICAgICAgIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA9IFdURk1vdmUocmVzdWx0LnZhbHVlKCkp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBleGNlcHRpb25EZXRhaWxzID0gV1RGTW92ZShy
ZXN1bHQuZXJyb3IoKSk7CisgICAgICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJh
Y2soc2VyaWFsaXplZFNjcmlwdFZhbHVlLmdldCgpLCBleGNlcHRpb25EZXRhaWxzLCB0YXNrLmdl
dCgpKTsKICAgICB9KTsKIH0KIApAQCAtMzk2MiwxMSArMzk2OCwxNCBAQCBzdGF0aWMgdm9pZCBy
ZXNvdXJjZXNTdHJlYW1SZWFkQ2FsbGJhY2soCiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9
IFdFQktJVF9XRUJfVklFVyhnX3Rhc2tfZ2V0X3NvdXJjZV9vYmplY3QodGFzay5nZXQoKSkpOwog
ICAgIGdwb2ludGVyIG91dHB1dFN0cmVhbURhdGEgPSBnX21lbW9yeV9vdXRwdXRfc3RyZWFtX2dl
dF9kYXRhKEdfTUVNT1JZX09VVFBVVF9TVFJFQU0ob2JqZWN0KSk7CiAgICAgZ2V0UGFnZSh3ZWJW
aWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoeyBTdHJpbmc6OmZyb21VVEY4KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgZ2NoYXIqPihvdXRwdXRTdHJlYW1EYXRhKSksIFVSTCB7IH0sIGZhbHNl
LCBXVEY6Om51bGxvcHQsIHRydWUgfSwKLSAgICAgICAgW3Rhc2tdKEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFp
bHM+IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgICAgICBbdGFz
a10gKGF1dG8mJiByZXN1bHQpIHsKKyAgICAgICAgICAgIFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlOwogICAgICAgICAgICAgRXhjZXB0aW9u
RGV0YWlscyBleGNlcHRpb25EZXRhaWxzOwotICAgICAgICAgICAgaWYgKGRldGFpbHMpCi0gICAg
ICAgICAgICAgICAgZXhjZXB0aW9uRGV0YWlscyA9ICpkZXRhaWxzOwotICAgICAgICAgICAgd2Vi
a2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxsYmFjayhzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGV4
Y2VwdGlvbkRldGFpbHMsIHRhc2suZ2V0KCkpOworICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNf
dmFsdWUoKSkKKyAgICAgICAgICAgICAgICBzZXJpYWxpemVkU2NyaXB0VmFsdWUgPSBXVEZNb3Zl
KHJlc3VsdC52YWx1ZSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBleGNl
cHRpb25EZXRhaWxzID0gV1RGTW92ZShyZXN1bHQuZXJyb3IoKSk7CisgICAgICAgICAgICB3ZWJr
aXRXZWJWaWV3UnVuSmF2YVNjcmlwdENhbGxiYWNrKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5nZXQo
KSwgZXhjZXB0aW9uRGV0YWlscywgdGFzay5nZXQoKSk7CiAgICAgICAgIH0pOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCShy
ZXZpc2lvbiAyNjgwNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29j
a2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyMSw5ICsxMjEsOSBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aW5z
CiB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cnVuU2NyaXB0KGNvbnN0IFN0
cmluZyYgc2NyaXB0KQogewogICAgIG1fcGFnZS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoeyBz
Y3JpcHQsIFVSTCB7IH0sIGZhbHNlLCBXVEY6Om51bGxvcHQsIGZhbHNlIH0sIAotICAgICAgICBb
XShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlv
bkRldGFpbHM+IGV4Y2VwdGlvbkRldGFpbHMsIENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKLSAgICAg
ICAgICAgIGlmIChleGNlcHRpb25EZXRhaWxzKQotICAgICAgICAgICAgICAgIExPR19FUlJPUigi
RXhjZXB0aW9uIHJ1bm5pbmcgc2NyaXB0IFwiJXNcIiIsIGV4Y2VwdGlvbkRldGFpbHMtPm1lc3Nh
Z2UudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIFtdIChhdXRvJiYgcmVzdWx0KSB7CisgICAgICAg
IGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQorICAgICAgICAgICAgTE9HX0VSUk9SKCJFeGNlcHRp
b24gcnVubmluZyBzY3JpcHQgXCIlc1wiIiwgcmVzdWx0LmVycm9yKCkubWVzc2FnZS51dGY4KCku
ZGF0YSgpKTsKICAgICB9KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI2ODA2OSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDYzLDIz
ICszNDYzLDMzIEBAIEtleWJvYXJkVUlNb2RlIFdlYlBhZ2U6OmtleWJvYXJkVUlNb2RlKCkKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRVSU1vZGU+KChmdWxsS2V5Ym9hcmRBY2Nlc3NF
bmFibGVkID8gS2V5Ym9hcmRBY2Nlc3NGdWxsIDogS2V5Ym9hcmRBY2Nlc3NEZWZhdWx0KSB8ICht
X3RhYlRvTGlua3MgPyBLZXlib2FyZEFjY2Vzc1RhYnNUb0xpbmtzIDogMCkpOwogfQogCi12b2lk
IFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMsIENvbnRlbnRXb3JsZElkZW50aWZpZXIgd29ybGRJZGVudGlm
aWVyLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQo
V2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENv
bnRlbnRXb3JsZElkZW50aWZpZXIgd29ybGRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHM+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgLy8gTk9URTog
V2UgbmVlZCB0byBiZSBjYXJlZnVsIHdoZW4gcnVubmluZyBzY3JpcHRzIHRoYXQgdGhlIG9iamVj
dHMgd2UgZGVwZW5kIG9uIGRvbid0CiAgICAgLy8gZGlzYXBwZWFyIGR1cmluZyBzY3JpcHQgZXhl
Y3V0aW9uLgogCiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgpKSB7Ci0gICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayh7IH0s
IEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdDogVGFyZ2V0
IGZyYW1lIGNvdWxkIG5vdCBiZSBmb3VuZCBpbiB0aGUgcGFnZSJfcywgMCwgMCwgRXhjZXB0aW9u
RGV0YWlsczo6VHlwZTo6SW52YWxpZFRhcmdldEZyYW1lIH0sIGNhbGxiYWNrSUQpKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBl
eGVjdXRlIEphdmFTY3JpcHQ6IFRhcmdldCBmcmFtZSBjb3VsZCBub3QgYmUgZm91bmQgaW4gdGhl
IHBhZ2UiX3MsIDAsIDAsIEV4Y2VwdGlvbkRldGFpbHM6OlR5cGU6OkludmFsaWRUYXJnZXRGcmFt
ZSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8qIHdvcmxkID0gbV91c2Vy
Q29udGVudENvbnRyb2xsZXItPndvcmxkRm9ySWRlbnRpZmllcih3b3JsZElkZW50aWZpZXIpOwog
ICAgIGlmICghd29ybGQpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpT
Y3JpcHRWYWx1ZUNhbGxiYWNrKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhl
Y3V0ZSBKYXZhU2NyaXB0OiBDYW5ub3QgZmluZCBzcGVjaWZpZWQgY29udGVudCB3b3JsZCJfcyB9
LCBjYWxsYmFja0lEKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9u
RGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0OiBDYW5ub3QgZmluZCBzcGVj
aWZpZWQgY29udGVudCB3b3JsZCJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGF1dG8gcmVzb2x2ZUZ1bmN0aW9uID0gW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
dGhpcywgd29ybGQgPSBtYWtlUmVmKCp3b3JsZCksIGZyYW1lID0gbWFrZVJlZigqZnJhbWUpLCBj
YWxsYmFja0lEXShWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdCkgeworI2lmIEVOQUJMRShBUFBfQk9V
TkRfRE9NQUlOUykKKyAgICBpZiAoZnJhbWUtPnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZh
Y3lQcm90ZWN0aW9ucygpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0
aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGluIGEgZnJhbWUgdGhh
dCBpcyBub3QgaW4gYW4gYXBwLWJvdW5kIGRvbWFpbiJfcywgMCwgMCwgRXhjZXB0aW9uRGV0YWls
czo6VHlwZTo6QXBwQm91bmREb21haW4gfSk7CisgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKKyAgICAgICAgICAgIGRvY3VtZW50LT5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpX
YXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5k
IGRvbWFpbi4iKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChMb2FkaW5n
LCAicnVuSmF2YVNjcmlwdDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24g
YXBwLWJvdW5kIGRvbWFpbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAg
ICBhdXRvIHJlc29sdmVGdW5jdGlvbiA9IFt3b3JsZCA9IG1ha2VSZWYoKndvcmxkKSwgZnJhbWUg
PSBtYWtlUmVmKCpmcmFtZSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIChWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZTsKICAgICAg
ICAgaWYgKHJlc3VsdCkgewogICAgICAgICAgICAgc2VyaWFsaXplZFJlc3VsdFZhbHVlID0gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZnJhbWUtPmpzQ29udGV4dEZvcldvcmxkKHdvcmxk
LnB0cigpKSwKQEAgLTM0OTQsMjIgKzM1MDQsMTMgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2Ny
aXB0KFdlYkZyYW1lKiBmcgogICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIGRldGFp
bHMgPSByZXN1bHQuZXJyb3IoKTsKIAotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgZGV0YWlscywgY2FsbGJhY2tJ
RCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkYXRhUmVmZXJlbmNlLCBkZXRhaWxzKTsK
ICAgICB9OwotI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKLSAgICBpZiAoZnJhbWUtPnNo
b3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7Ci0gICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayh7IH0sIEV4Y2Vw
dGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBhIGZyYW1lIHRo
YXQgaXMgbm90IGluIGFuIGFwcC1ib3VuZCBkb21haW4iX3MsIDAsIDAsIEV4Y2VwdGlvbkRldGFp
bHM6OlR5cGU6OkFwcEJvdW5kRG9tYWluIH0sIGNhbGxiYWNrSUQpKTsKLSAgICAgICAgaWYgKGF1
dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQotICAgICAgICAg
ICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9y
IG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOwotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKExvYWRpbmcsICJydW5KYXZhU2NyaXB0OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmpl
Y3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0jZW5kaWYKICAgICBKU0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKICAgICBmcmFtZS0+
Y29yZUZyYW1lKCktPnNjcmlwdCgpLmV4ZWN1dGVBc3luY2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJ
bldvcmxkKHdvcmxkLT5jb3JlV29ybGQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShy
ZXNvbHZlRnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFt
ZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBPcHRp
b25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIGNvbnN0IHN0ZDo6cGFpcjxD
b250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZERhdGEsIENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxk
KFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRl
bnRpZmllciwgU3RyaW5nPiYgd29ybGREYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRl
dGFpbHM+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogd2ViRnJhbWUgPSBm
cmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoKmZyYW1lSUQpIDogJm1h
aW5XZWJGcmFtZSgpOwogCkBAIC0zNTE5LDcgKzM1MjAsNyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkph
dmFTY3JpcHRJbkZyYW1lSW5TY3JpCiAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50
KCkuZGlzcGF0Y2hHbG9iYWxPYmplY3RBdmFpbGFibGUoY29yZVdvcmxkKTsKICAgICB9CiAKLSAg
ICBydW5KYXZhU2NyaXB0KHdlYkZyYW1lLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCB3b3JsZERhdGEu
Zmlyc3QsIGNhbGxiYWNrSUQpOworICAgIHJ1bkphdmFTY3JpcHQod2ViRnJhbWUsIFdURk1vdmUo
cGFyYW1ldGVycyksIHdvcmxkRGF0YS5maXJzdCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNTdHJpbmcoQ29udGVudEFzU3RyaW5n
SW5jbHVkZXNDaGlsZEZyYW1lcyBpbmNsdWRlQ2hpbGRGcmFtZXMsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJ
KHJldmlzaW9uIDI2ODA2OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTU0OCw4ICsxNTQ4LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrSUQp
OwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqLCBXZWJDb3Jl
OjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBDb250ZW50V29ybGRJZGVudGlmaWVyLCBDYWxs
YmFja0lEKTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXZWJD
b3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+LCBjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5n
PiYgd29ybGREYXRhLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHQoV2ViRnJh
bWUqLCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBDb250ZW50V29ybGRJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYpOworICAgIHZv
aWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIGNvbnN0
IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZERhdGEsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJik7CiAgICAgdm9pZCBmb3JjZVJl
cGFpbnQoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVj
dCBzbmFwc2hvdFJlY3QsIFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0
aW9ucywgQ2FsbGJhY2tJRCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjY4MDY5KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMjIwLDggKzIyMCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0Nv
bW1hbmQoZW51bTp1aW4KICAgICBHZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgR2V0V2Vi
QXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBz
ZW5kV2l0aEFzeW5jUmVwbHkgaW5zdGVhZCBvZiBjYWxsYmFja0lEcwotICAgIFJ1bkphdmFTY3Jp
cHRJbkZyYW1lSW5TY3JpcHRXb3JsZChzdHJ1Y3QgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFt
ZXRlcnMgcGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBzdGQ6OnBhaXI8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+IHdv
cmxkLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBSdW5KYXZhU2NyaXB0SW5G
cmFtZUluU2NyaXB0V29ybGQoc3RydWN0IFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
IHBhcmFtZXRlcnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
c3RkOjpwYWlyPFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiB3b3JsZCkg
LT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNl
cHRpb25EZXRhaWxzPiBkZXRhaWxzKSBBc3luYwogCiAgICAgRm9yY2VSZXBhaW50KFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFNlbGVjdEFsbCgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>