<?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>147678</bug_id>
          
          <creation_ts>2015-08-04 21:25:14 -0700</creation_ts>
          <short_desc>REGRESSION (r185111): Clicking phone numbers doesn&apos;t prompt to call sometimes</short_desc>
          <delta_ts>2015-08-05 09:06:10 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>145280</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>aestes</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>japhet</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1114957</commentid>
    <comment_count>0</comment_count>
      <attachid>258262</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-08-04 21:25:14 -0700</bug_when>
    <thetext>Created attachment 258262
Example

&lt;rdar://problem/21827815&gt;

Following the patch for bug #145280, clicking on phone links (tel URLs) may not work. On iOS, you can use the attached example page to observe this issue by performing the following:

1. Open example.html in MobileSafari.
2. Click the button &quot;Call +1 (408) 555-0123 in nested zero timer callback&quot;.
3. Quit and launch MobileSafari again.
4. Click the button &quot;Call +1 (408) 555-0123 in nested zero timer callback&quot;.

Then nothing will happen. Compare the behavior after step 4 with the behavior observed in step 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114961</commentid>
    <comment_count>1</comment_count>
      <attachid>258265</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-08-04 21:28:34 -0700</bug_when>
    <thetext>Created attachment 258265
Patch and unit test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114962</commentid>
    <comment_count>2</comment_count>
      <attachid>258265</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-08-04 21:37:51 -0700</bug_when>
    <thetext>Comment on attachment 258265
Patch and unit test

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

&gt; Source/WebCore/loader/HistoryController.cpp:196
&gt; +        if (DocumentLoader* documentLoader = document.loader())
&gt; +            item-&gt;setShouldOpenExternalURLsPolicy(documentLoader-&gt;shouldOpenExternalURLsPolicyToPropagate());
&gt; +

This when saving document state...

&gt; Source/WebCore/loader/HistoryController.cpp:237
&gt; +    m_frame.loader().documentLoader()-&gt;setShouldOpenExternalURLsPolicy(m_currentItem-&gt;shouldOpenExternalURLsPolicy());
&gt; +

...combined with this seems like it could be problematic, because if it is possible to have &quot;saved document state&quot; to a history item without a DocumentLoader, therefore the policy was not set, that means it&apos;s possible to pull an invalid policy out of the history item later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114963</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-08-04 21:40:20 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 258265 [details]
&gt; Patch and unit test
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=258265&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/HistoryController.cpp:196
&gt; &gt; +        if (DocumentLoader* documentLoader = document.loader())
&gt; &gt; +            item-&gt;setShouldOpenExternalURLsPolicy(documentLoader-&gt;shouldOpenExternalURLsPolicyToPropagate());
&gt; &gt; +
&gt; 
&gt; This when saving document state...
&gt; 
&gt; &gt; Source/WebCore/loader/HistoryController.cpp:237
&gt; &gt; +    m_frame.loader().documentLoader()-&gt;setShouldOpenExternalURLsPolicy(m_currentItem-&gt;shouldOpenExternalURLsPolicy());
&gt; &gt; +
&gt; 
&gt; ...combined with this seems like it could be problematic, because if it is
&gt; possible to have &quot;saved document state&quot; to a history item without a
&gt; DocumentLoader, therefore the policy was not set, that means it&apos;s possible
&gt; to pull an invalid policy out of the history item later.

Looking at Document::loader(), if the Frame returns the Document, then the DocumentLoader will almost certainly *not* be null. The only cases where it might be null are cases where we are already in a grotesquely inconsistent state, so I&apos;m not worried about this any longer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114964</commentid>
    <comment_count>4</comment_count>
      <attachid>258265</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-08-04 21:43:52 -0700</bug_when>
    <thetext>Comment on attachment 258265
Patch and unit test

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

Looks good, with one requested change.

&gt; Source/WebCore/loader/NavigationAction.h:47
&gt; +    NavigationAction(const ResourceRequest&amp;, FrameLoadType, bool isFormSubmission, ShouldOpenExternalURLsPolicy);

A cleanup project of mine very soon is going to be *reducing* the number of NavigationAction constructors (ideally to one), forcing everybody who ever creates one to think about every argument critically.

I&apos;d rather see the three call sites of this new constructor pass in the values you pass in this constructor&apos;s implementation, instead of adding this constructor now just to be removed soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114970</commentid>
    <comment_count>5</comment_count>
      <attachid>258267</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-08-04 22:07:44 -0700</bug_when>
    <thetext>Created attachment 258267
Patch and unit test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115018</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-08-05 09:06:10 -0700</bug_when>
    <thetext>Committed r187962: &lt;http://trac.webkit.org/changeset/187962&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>258262</attachid>
            <date>2015-08-04 21:25:14 -0700</date>
            <delta_ts>2015-08-04 21:25:14 -0700</delta_ts>
            <desc>Example</desc>
            <filename>example.html</filename>
            <type>text/html</type>
            <size>1275</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHNjcmlwdD4KZnVuY3Rpb24gbmF2aWdhdGVU
b1RlbFVSTCgpCnsKICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gInRlbDorMSAoNDA4KSA1NTUt
MDEyMyI7Cn0KCmZ1bmN0aW9uIG5hdmlnYXRlVG9UZWxVUkxBZnRlckRlbGF5KGRlbGF5SW5NaWxs
aXNlY29uZHMpCnsKICAgIHdpbmRvdy5zZXRUaW1lb3V0KG5hdmlnYXRlVG9UZWxVUkwsIGRlbGF5
SW5NaWxsaXNlY29uZHMgfHwgMCk7Cn0KCmZ1bmN0aW9uIG5hdmlnYXRlVG9UZWxVUkxGcm9tTmVz
dGVkWmVyb1RpbWVyQ2FsbGJhY2soKQp7CiAgICB3aW5kb3cuc2V0VGltZW91dChuYXZpZ2F0ZVRv
VGVsVVJMQWZ0ZXJEZWxheSwgMCk7Cn0KPC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHk+CjxwPlRoaXMg
cGFnZSBjYW4gYmUgdXNlZCB0byB2ZXJpZnkgdGhlICZxdW90O3Nob3VsZCBvcGVuIGV4dGVybmFs
IFVSTCZxdW90OyBwb2xpY3kgd2hlbiBuYXZpZ2F0aW9uIGlzIGluaXRpYXRlZCB2aWEgd2luZG93
LmxvY2F0aW9uLmhyZWYgb3IgYSB1c2VyLWluaXRpYXRlZCBoeXBlcmxpbmsgY2xpY2suPC9wPgo8
aDI+TmF2aWdhdGlvbiBjb25zaWRlcmVkIGluaXRpYXRlZCBieSB1c2VyIGdlc3R1cmU8L2gyPgo8
YnV0dG9uIG9uY2xpY2s9Im5hdmlnYXRlVG9UZWxVUkxBZnRlckRlbGF5KDApIj5DYWxsICsxICg0
MDgpIDU1NS0wMTIzIGluIHplcm8gdGltZXIgY2FsbGJhY2s8L2J1dHRvbj4KPGEgaHJlZj0idGVs
OisxICg0MDgpIDU1NS0wMTIzIj5DYWxsICsxICg0MDgpIDU1NS0wMTIzIHdpdGhvdXQgSmF2YVNj
cmlwdDwvYT4KPGgyPk5hdmlnYXRpb24gbm90IGNvbnNpZGVyZWQgaW5pdGlhdGVkIGJ5IHVzZXIg
Z2VzdHVyZTwvaDI+CjxidXR0b24gb25jbGljaz0ibmF2aWdhdGVUb1RlbFVSTEFmdGVyRGVsYXko
MTAwMSkiPkNhbGwgKzEgKDQwOCkgNTU1LTAxMjMgYWZ0ZXIgMSBzZWNvbmQ8L2J1dHRvbj4gPCEt
LSBOb3QgdXNlciBnZXN0dXJlIHNpbmNlIDEwMDEgbXMgPiBtYXhJbnRlcnZhbEZvclVzZXJHZXN0
dXJlRm9yd2FyZGluZyAoPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcD9yZXY9MTg3NzMxI0w1ND4pIC0tPgo8YnV0dG9u
IG9uY2xpY2s9Im5hdmlnYXRlVG9UZWxVUkxGcm9tTmVzdGVkWmVyb1RpbWVyQ2FsbGJhY2soKSI+
Q2FsbCArMSAoNDA4KSA1NTUtMDEyMyBpbiBuZXN0ZWQgemVybyB0aW1lciBjYWxsYmFjazwvYnV0
dG9uPgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258265</attachid>
            <date>2015-08-04 21:28:34 -0700</date>
            <delta_ts>2015-08-04 22:07:38 -0700</delta_ts>
            <desc>Patch and unit test</desc>
            <filename>bug-147678-20150804212826.patch</filename>
            <type>text/plain</type>
            <size>28895</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3NjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IxNzQwZjA4YjJlMGMx
OTQ5MjVjMzI5YjViODAwNDljYWE5MTMxYS4uY2YyYzRhMTUwZWUyZWU1NDRkYzFlMDJiMDliMmYz
OWE2NjZkOTI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE1LTA4LTA0ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMTg1
MTExKTogQ2xpY2tpbmcgcGhvbmUgbnVtYmVycyBkb2Vzbid0IHByb21wdCB0byBjYWxsIHNvbWV0
aW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3
Njc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTgyNzgxNT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBhIG5v
bi11c2VyLWluaXRpYXRlZCBuYXZpZ2F0aW9uIG9mIHRoZSBtYWluIGZyYW1lIHRvIGEgcGhvbmUg
bGluayAodGVsIFVSTCkKKyAgICAgICAgbWF5IGJlIGlnbm9yZWQuIFRoZSBuYXZpZ2F0aW9uIGlz
IGlnbm9yZWQgaWYgdGhlIHBhZ2Ugd2FzIHJlbG9hZGVkIGFzIGEgcmVzdWx0IG9mIGEgd2ViIGNv
bnRlbnQKKyAgICAgICAgcHJvY2VzcyBjcmFzaCwgaXRzIGxpZmV0aW1lIGV4Y2VlZGVkIHRoZSBi
YWNrLWZvcndhcmQgY2FjaGUgZXhwaXJhdGlvbiBpbnRlcnZhbCwgb3IgYSBwZXJzb24KKyAgICAg
ICAgcXVpdHMgYW5kIG9wZW5zIFNhZmFyaSBhZ2FpbiwgYW1vbmcgb3RoZXIgc2NlbmFyaW9zLgor
CisgICAgICAgICogaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
aXN0b3J5SXRlbTo6c2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06OnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kp
OiBBZGRlZC4KKyAgICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmg6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2Fk
RGlmZmVyZW50RG9jdW1lbnRJdGVtKTogQXBwbHkgdGhlICJzaG91bGQgb3BlbiBleHRlcm5hbCBV
UkxzIiBwb2xpY3kKKyAgICAgICAgZnJvbSB0aGUgaGlzdG9yeSBpdGVtLCBpZiBhcHBsaWNhYmxl
LgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZURvY3VtZW50U3RhdGUpOiBTYXZlIHRoZSAic2hv
dWxkIG9wZW4gZXh0ZXJuYWwgVVJMcyIgcG9saWN5IHRvCisgICAgICAgIHRoZSBoaXN0b3J5IGl0
ZW0uCisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6cmVzdG9yZURvY3VtZW50
U3RhdGUpOiBBcHBseSB0aGUgInNob3VsZCBvcGVuIGV4dGVybmFsIFVSTHMiIHBvbGljeQorICAg
ICAgICBmcm9tIHRoZSBoaXN0b3J5IGl0ZW0gdG8gdGhlIGRvY3VtZW50IGxvYWRlci4KKyAgICAg
ICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjppbml0aWFsaXplSXRlbSk6IFVwZGF0ZSB0
aGUgInNob3VsZCBvcGVuIGV4dGVybmFsIFVSTHMiIHBvbGljeSBvZgorICAgICAgICB0aGUgaGlz
dG9yeSBpdGVtIHRvIHJlZmxlY3QgdGhlIHBvbGljeSBvZiB0aGUgZG9jdW1lbnQgbG9hZGVyIGFz
c29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBmcmFtZS4KKyAgICAgICAgKiBsb2FkZXIvTmF2aWdh
dGlvbkFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uOjpOYXZp
Z2F0aW9uQWN0aW9uKTogQWRkIGEgY29udmVuaWVuY2UgY29uc3RydWN0b3IgdGhhdCB0YWtlcyBh
IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kuCisgICAgICAgICogbG9hZGVyL05hdmlnYXRp
b25BY3Rpb24uaDoKKwogMjAxNS0wNy0zMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KIAogICAgICAgICBDUkFTSCBhdCBXZWJDb3JlOjpUYXNrRGlzcGF0Y2hlcjxXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Pjo6cG9zdFRhc2sgKyAzOApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGM3NTUw
YjBjMmRjZmY2NDM2OGQwMjQwNzFjMWFlMmEyMzRmMmIwNDYuLmE5M2IyZTUyODlhNGY3MTYwYmI4
NWViMjZiZDIxNjFlNDBmMjkyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNS0w
OC0wNCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVT
U0lPTiAocjE4NTExMSk6IENsaWNraW5nIHBob25lIG51bWJlcnMgZG9lc24ndCBwcm9tcHQgdG8g
Y2FsbCBzb21ldGltZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0NzY3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjE4Mjc4MTU+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVhY2ggV2ViS2l0IHRv
IHNhdmUgYW5kIHJlc3RvcmUgdGhlICJzaG91bGQgb3BlbiBleHRlcm5hbCBVUkxzIiBwb2xpY3ku
CisKKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
aXNWYWxpZEVudW0pOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZVN0YXRlOjplbmNvZGUp
OiBNb2RpZmllZCB0byBlbmNvZGUgdGhlICJzaG91bGQgb3BlbiBleHRlcm5hbCBVUkxzIiBwb2xp
Y3kuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VTdGF0ZTo6ZGVjb2RlKTogTW9kaWZpZWQgdG8gZGVj
b2RlIHRoZSAic2hvdWxkIG9wZW4gZXh0ZXJuYWwgVVJMcyIgcG9saWN5LgorICAgICAgICAqIFNo
YXJlZC9TZXNzaW9uU3RhdGUuaDogQWRkZWQgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB0
byBQYWdlU3RhdGUgKGRlZmF1bHRzIHRvIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3k6OlNob3VsZE5vdEFsbG93KS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9raWxsV2ViQ29udGVudFByb2Nlc3NB
bmRSZXNldFN0YXRlXSk6IEFkZGVkOyB1c2VkIGluIHRoZSB1bml0IHRlc3QgVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyQ29jb2EvU2hvdWxkT3BlbkV4dGVybmFsVVJMc0luTmV3V2luZG93QWN0
aW9ucy5tbS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aDogRGVjbGFyZSAtW1dLV2ViVmlldyBfa2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5kUmVzZXRTdGF0
ZV0uCisgICAgICAgICogVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3Bw
OiBEZWZpbmVkIGNvbnN0YW50IHNlc3Npb25IaXN0b3J5RW50cnlTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5S2V5LgorICAgICAgICAoV2ViS2l0OjplbmNvZGVTZXNzaW9uSGlzdG9yeSk6IE1v
ZGlmaWVkIHRvIGVuY29kZSB0aGUgInNob3VsZCBvcGVuIGV4dGVybmFsIFVSTHMiIHBvbGljeS4K
KyAgICAgICAgKFdlYktpdDo6ZGVjb2RlU2Vzc2lvbkhpc3RvcnlFbnRyeSk6IE1vZGlmaWVkIHRv
IGRlY29kZSB0aGUgInNob3VsZCBvcGVuIGV4dGVybmFsIFVSTHMiIHBvbGljeS4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwOgor
ICAgICAgICAoV2ViS2l0Ojp0b1BhZ2VTdGF0ZSk6IENvcHkgInNob3VsZCBvcGVuIGV4dGVybmFs
IFVSTHMiIHBvbGljeSBmcm9tIHNwZWNpZmllZCBoaXN0b3J5IGl0ZW0uCisgICAgICAgIChXZWJL
aXQ6OnRvSGlzdG9yeUl0ZW0pOiBBcHBseSAic2hvdWxkIG9wZW4gZXh0ZXJuYWwgVVJMcyIgcG9s
aWN5IGZyb20gUGFnZVN0YXRlIHRvIEhpc3RvcnlJdGVtLgorCiAyMDE1LTA3LTMxICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBOUEFQ
SSBjb2RlIGNyYXNoZXMgb24gV2F5bGFuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9IaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVt
LmNwcAppbmRleCA4YWI1ZTg2YzQ0NjEyODQ2MmZmNTU1MDA3NDljZmZjNmEyMWUzYmFjLi5hMTkw
MmQzNjQ0YzAwMmQ1ZDgxMWYyZmMwNTYyOWJkYzllNWFjNjJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L0hpc3RvcnlJdGVtLmNwcApAQCAtMzUxLDYgKzM1MSwxNiBAQCB2b2lkIEhpc3RvcnlJdGVt
OjpjbGVhckRvY3VtZW50U3RhdGUoKQogICAgIG1fZG9jdW1lbnRTdGF0ZS5jbGVhcigpOwogfQog
Cit2b2lkIEhpc3RvcnlJdGVtOjpzZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgcG9saWN5KQoreworICAgIG1fc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSA9IHBvbGljeTsKK30KKworU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSBIaXN0b3J5SXRlbTo6c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKK30KKwogYm9vbCBIaXN0
b3J5SXRlbTo6aXNUYXJnZXRJdGVtKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pc1RhcmdldEl0
ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmggYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKaW5kZXggM2FhY2MyYTljNWM0NjA4
ZDI3ZjdhNDg4NjY5ZjllOTYwZDFiYjVkYy4uMDljZjVlZTdlNDRmMGU3MTljZGI3NTZiZGMyM2Iy
YmIwYjgwYzA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRl
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaApAQCAtMjgsNiAr
MjgsNyBAQAogI2RlZmluZSBIaXN0b3J5SXRlbV9oCiAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
KyNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNp
bmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCkBA
IC0xMTcsNiArMTE4LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RG9j
dW1lbnRTdGF0ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogICAgIHZvaWQgY2xlYXJEb2N1bWVu
dFN0YXRlKCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3koU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5KCkgY29uc3Q7CisKICAgICB2b2lkIHNldFVSTChjb25zdCBVUkwmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFVSTFN0cmluZyhjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldE9yaWdpbmFsVVJMU3RyaW5nKGNvbnN0IFN0cmluZyYpOwpAQCAtMjMx
LDYgKzIzNSw4IEBAIHByaXZhdGU6CiAgICAgSW50UG9pbnQgbV9zY3JvbGxQb2ludDsKICAgICBm
bG9hdCBtX3BhZ2VTY2FsZUZhY3RvcjsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2RvY3VtZW50U3Rh
dGU7CisKKyAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IG1fc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSB7IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFs
bG93IH07CiAgICAgCiAgICAgSGlzdG9yeUl0ZW1WZWN0b3IgbV9jaGlsZHJlbjsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDJkYWY0MDQ1ZDU3YWQwYjc0NzM3
MmY1MjA5MWIwYTgwMDBkYTZmOTIuLmRhZWZkNzJkOGJmMmQ4OTM5NjNjNDdjYjZkMjdjN2Y0YWY4
ZjVlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzIyOCw3ICsz
MjI4LDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SXRlbShIaXN0
b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EKIAogICAgIGlmICghaXRlbS5yZWZlcnJl
cigpLmlzTnVsbCgpKQogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihpdGVtLnJlZmVy
cmVyKCkpOwotICAgIAorCisgICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBw
bHkobV9mcmFtZSwgaXRlbS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkpOworCiAgICAg
Ly8gSWYgdGhpcyB3YXMgYSByZXBvc3QgdGhhdCBmYWlsZWQgdGhlIHBhZ2UgY2FjaGUsIHdlIG1p
Z2h0IHRyeSB0byByZXBvc3QgdGhlIGZvcm0uCiAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb247
CiAgICAgaWYgKGZvcm1EYXRhKSB7CkBAIC0zMjU0LDEwICszMjU2LDEwIEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEZyYW1l
TG9hZFR5cGUgbG9hCiAgICAgICAgIAogICAgICAgICBpZiAoY2FjaGVMb2FkUG9saWN5ID09IE1h
eUF0dGVtcHRDYWNoZU9ubHlMb2FkRm9yRm9ybVN1Ym1pc3Npb25JdGVtKSB7CiAgICAgICAgICAg
ICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJldHVybkNhY2hlRGF0YURvbnRMb2FkKTsKLSAgICAg
ICAgICAgIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgbG9hZFR5cGUsIGZhbHNl
KTsKKyAgICAgICAgICAgIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgbG9hZFR5
cGUsIGZhbHNlLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmV0dXJuQ2FjaGVEYXRhRWxz
ZUxvYWQpOwotICAgICAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBO
YXZpZ2F0aW9uVHlwZTo6Rm9ybVJlc3VibWl0dGVkKTsKKyAgICAgICAgICAgIGFjdGlvbiA9IE5h
dmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgTmF2aWdhdGlvblR5cGU6OkZvcm1SZXN1Ym1pdHRlZCwg
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAgICAgIH0KICAgICB9IGVsc2Ugewog
ICAgICAgICBzd2l0Y2ggKGxvYWRUeXBlKSB7CkBAIC0zMjgyLDcgKzMyODQsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBG
cmFtZUxvYWRUeXBlIGxvYQogCiAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0Rm9yT3Jp
Z2luYWxVUkwocmVxdWVzdCk7CiAgICAgICAgIHJlcXVlc3RGb3JPcmlnaW5hbFVSTC5zZXRVUkwo
aXRlbU9yaWdpbmFsVVJMKTsKLSAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbihyZXF1
ZXN0Rm9yT3JpZ2luYWxVUkwsIGxvYWRUeXBlLCBmYWxzZSk7CisgICAgICAgIGFjdGlvbiA9IE5h
dmlnYXRpb25BY3Rpb24ocmVxdWVzdEZvck9yaWdpbmFsVVJMLCBsb2FkVHlwZSwgZmFsc2UsIHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogICAgIH0KIAogICAgIGxvYWRXaXRoTmF2aWdh
dGlvbkFjdGlvbihyZXF1ZXN0LCBhY3Rpb24sIExvY2tIaXN0b3J5OjpObywgbG9hZFR5cGUsIDAs
IEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTDo6WWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IGJlNWMwNzQwZTY3OTQzOGFkMzBhYzBkN2Ex
M2RkNGMxNmUwYzU5MGEuLjEyZmQ1NjViMjFmM2VjMTI3OGU1N2VmYzVjOGJhYjQzMTBlMDk2MjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAtMTkx
LDYgKzE5MSw5IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNhdmVEb2N1bWVudFN0YXRlKCkK
ICAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBEb2N1bWVudCYgZG9jdW1lbnQg
PSAqbV9mcmFtZS5kb2N1bWVudCgpOwogICAgIGlmIChpdGVtLT5pc0N1cnJlbnREb2N1bWVudChk
b2N1bWVudCkgJiYgZG9jdW1lbnQuaGFzTGl2aW5nUmVuZGVyVHJlZSgpKSB7CisgICAgICAgIGlm
IChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBkb2N1bWVudC5sb2FkZXIoKSkKKyAg
ICAgICAgICAgIGl0ZW0tPnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koZG9jdW1lbnRM
b2FkZXItPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpKTsKKwogICAg
ICAgICBMT0coTG9hZGluZywgIldlYkNvcmVMb2FkaW5nICVzOiBzYXZpbmcgZm9ybSBzdGF0ZSB0
byAlcCIsIG1fZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCBpdGVtKTsKICAgICAgICAgaXRlbS0+c2V0RG9jdW1lbnRTdGF0ZShkb2N1bWVudC5mb3JtRWxl
bWVudHNTdGF0ZSgpKTsKICAgICB9CkBAIC0yMzAsNiArMjMzLDggQEAgdm9pZCBIaXN0b3J5Q29u
dHJvbGxlcjo6cmVzdG9yZURvY3VtZW50U3RhdGUoKQogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPmlzQ2xpZW50UmVkaXJlY3QoKSkKICAgICAgICAgcmV0dXJuOwog
CisgICAgbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5zZXRTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5KG1fY3VycmVudEl0ZW0tPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3koKSk7CisKICAgICBMT0coTG9hZGluZywgIldlYkNvcmVMb2FkaW5nICVzOiByZXN0b3Jpbmcg
Zm9ybSBzdGF0ZSBmcm9tICVwIiwgbV9mcmFtZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCksIG1fY3VycmVudEl0ZW0uZ2V0KCkpOwogICAgIG1fZnJhbWUuZG9jdW1l
bnQoKS0+c2V0U3RhdGVGb3JOZXdGb3JtRWxlbWVudHMobV9jdXJyZW50SXRlbS0+ZG9jdW1lbnRT
dGF0ZSgpKTsKIH0KQEAgLTY0OCw2ICs2NTMsOCBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpp
bml0aWFsaXplSXRlbShIaXN0b3J5SXRlbSYgaXRlbSkKICAgICBpZiAoIXVucmVhY2hhYmxlVVJM
LmlzRW1wdHkoKSB8fCBkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgp
ID49IDQwMCkKICAgICAgICAgaXRlbS5zZXRMYXN0VmlzaXRXYXNGYWlsdXJlKHRydWUpOwogCisg
ICAgaXRlbS5zZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KGRvY3VtZW50TG9hZGVyLT5z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSk7CisKICAgICAvLyBTYXZl
IGZvcm0gc3RhdGUgaWYgdGhpcyBpcyBhIFBPU1QKICAgICBpdGVtLnNldEZvcm1JbmZvRnJvbVJl
cXVlc3QoZG9jdW1lbnRMb2FkZXItPnJlcXVlc3QoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKaW5kZXggN2MxMGRjZjAwNWY4YzUzYjQyNmUxOTgwNGYz
MmNmMGNmNWRlNmJiNS4uOTdmNTIxOGU4N2Y5ZGJkZjE1NmQ0NDdjZmNlOTliZGM4ZDViYTRiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcApAQCAtNzgsNyAr
NzgsMTIgQEAgTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgTmF2aWcKIH0KIAogTmF2aWdhdGlvbkFjdGlvbjo6
TmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwg
RnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1Ym1pc3Npb24pCi0gICAg
OiBOYXZpZ2F0aW9uQWN0aW9uKHJlc291cmNlUmVxdWVzdCwgbmF2aWdhdGlvblR5cGUoZnJhbWVM
b2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgMCksIG51bGxwdHIsIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KQorICAgIDogTmF2aWdhdGlvbkFjdGlvbihyZXNv
dXJjZVJlcXVlc3QsIG5hdmlnYXRpb25UeXBlKGZyYW1lTG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Np
b24sIGZhbHNlIC8qIGhhdmVFdmVudCAqLyksIG51bGxwdHIsIFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3k6OlNob3VsZE5vdEFsbG93KQoreworfQorCitOYXZpZ2F0aW9uQWN0aW9uOjpOYXZp
Z2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBGcmFt
ZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgU2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQorICAgIDog
TmF2aWdhdGlvbkFjdGlvbihyZXNvdXJjZVJlcXVlc3QsIG5hdmlnYXRpb25UeXBlKGZyYW1lTG9h
ZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sIGZhbHNlIC8qIGhhdmVFdmVudCAqLyksIG51bGxwdHIs
IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IDQ4ZTg3MzJkODNmZjNiMmU5ZTlkNWM4ZDczYTk4
ZDk4OTM3ODU5MGQuLmVlM2U1ZGNlZjlmNTc4YjZlMTU1ZTcxMmVlNjk3NWJkYWE5MmIxNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaApAQCAtNDQsNiArNDQsNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBOYXZpZ2F0aW9uVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgTmF2aWdh
dGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGcmFtZUxvYWRUeXBlLCBib29sIGlz
Rm9ybVN1Ym1pc3Npb24pOwogCisgICAgTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBGcmFtZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1Ym1pc3Npb24sIFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kpOwogICAgIE5hdmlnYXRpb25BY3Rpb24oY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAgTmF2aWdhdGlvbkFj
dGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBOYXZpZ2F0aW9uVHlwZSwgRXZlbnQqKTsKICAg
ICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE5hdmlnYXRpb25UeXBl
LCBFdmVudCosIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvU2Vzc2lvblN0YXRlLmNwcAppbmRleCAxNjhhYmY3OTM5NzcyODE5MmExNDgyMzBhMDQ4NWZm
MTNjYTExNjA1Li5kYzA0ZTIwZWE5NjI2YWY1NzViNjgxYzNlOTFiNmUxMWRiNmYyYWM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcApAQCAtMzAsNiArMzAsMTcgQEAKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKK2Jvb2wgaXNWYWxpZEVudW0oV2ViQ29yZTo6U2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSBwb2xpY3kpCit7CisgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAg
ICBjYXNlIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFs
bG93OgorICAgIGNhc2UgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hv
dWxkQWxsb3c6CisgICAgY2FzZSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
OjpTaG91bGRBbGxvd0V4dGVybmFsU2NoZW1lczoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBIVFRQQm9keTo6RWxlbWVudDo6ZW5jb2Rl
KElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIuZW5j
b2RlRW51bSh0eXBlKTsKQEAgLTE3MCw2ICsxODEsNyBAQCB2b2lkIFBhZ2VTdGF0ZTo6ZW5jb2Rl
KElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwg
dGl0bGU7CiAgICAgZW5jb2RlciA8PCBtYWluRnJhbWVTdGF0ZTsKKyAgICBlbmNvZGVyLmVuY29k
ZUVudW0oc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiB9CiAKIGJvb2wgUGFnZVN0YXRl
OjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFBhZ2VTdGF0ZSYgcmVzdWx0
KQpAQCAtMTc4LDYgKzE5MCw4IEBAIGJvb2wgUGFnZVN0YXRlOjpkZWNvZGUoSVBDOjpBcmd1bWVu
dERlY29kZXImIGRlY29kZXIsIFBhZ2VTdGF0ZSYgcmVzdWx0KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubWFpbkZyYW1lU3RhdGUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LnNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpIHx8ICFpc1ZhbGlkRW51bShyZXN1bHQuc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJl
dHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25T
dGF0ZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCmluZGV4IGQ0ZDZh
MmJmNDJiOTk5NjZkZjVjZTg2MGFjNWQ3NGI5OGZlOWE0NmYuLjczNWE5YzMyZWZkZWI2NTFjZjRj
YWY5MzA4Mzk0NjgwZWFiMzI5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9T
ZXNzaW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblN0YXRlLmgK
QEAgLTMxLDYgKzMxLDcgQEAKICNlbmRpZgogCiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3Qu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgpAQCAtNDQsNiArNDUsOCBAQCBjbGFzcyBBcmd1bWVudEVuY29kZXI7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCitib29sIGlzVmFsaWRFbnVtKFdlYkNvcmU6OlNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kpOworCiBzdHJ1Y3QgSFRUUEJvZHkgewogICAgIHN0cnVjdCBFbGVt
ZW50IHsKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsK
QEAgLTExNSw2ICsxMTgsNyBAQCBzdHJ1Y3QgUGFnZVN0YXRlIHsKIAogICAgIFN0cmluZyB0aXRs
ZTsKICAgICBGcmFtZVN0YXRlIG1haW5GcmFtZVN0YXRlOworICAgIFdlYkNvcmU6OlNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IFdlYkNv
cmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93IH07CiB9Owog
CiBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMzE2MzIyZTAzMjg4NmJlOTA4
YzVjNjlkNGU1ZmE1NmE2NTRkNmRjNC4uNzg4NjI1ZWRkMjdhNjE5MDE0YzA1ZmQ5OGFjZmYwNjAw
OWM4NDUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KQEAgLTIwMTgsNiArMjAxOCwxMSBAQCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2lu
dCBjb25zdHJhaW5Db250ZW50T2Zmc2V0KFdlYkNvcmU6OkZsb2F0UG9pbnQgY29udGVudE9mZgog
ICAgIF9wYWdlLT5wcm9jZXNzKCkudGVybWluYXRlKCk7CiB9CiAKKy0gKHZvaWQpX2tpbGxXZWJD
b250ZW50UHJvY2Vzc0FuZFJlc2V0U3RhdGUKK3sKKyAgICBfcGFnZS0+dGVybWluYXRlUHJvY2Vz
cygpOworfQorCiAjaWYgUExBVEZPUk0oSU9TKQogc3RhdGljIFdlYkNvcmU6OkZsb2F0U2l6ZSBh
Y3RpdmVNaW5pbXVtTGF5b3V0U2l6ZShXS1dlYlZpZXcgKndlYlZpZXcsIGNvbnN0IENHUmVjdCYg
Ym91bmRzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCAyNTUxYzYzZjE4MmNiYmVkMWJkZWEzNDNkMjI2MThm
NGFhNjk0YTk1Li4xOTFlMjg2ODEwYjMwZmZlMjc4ZTQ0NmUzMzBiNjI0ZTJmYWZhNmU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaApAQCAtMTc4LDYgKzE3OCw4IEBAIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9X
S1Nob3VsZE9wZW5FeHRlcm5hbFVSTHNLZXkgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsCiBAcHJv
cGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRPdmVycmlkZURldmljZVNjYWxlRmFjdG9yOikg
Q0dGbG9hdCBfb3ZlcnJpZGVEZXZpY2VTY2FsZUZhY3RvciBXS19BVkFJTEFCTEUoV0tfTUFDX1RC
QSwgTkEpOwogI2VuZGlmCiAKKy0gKHZvaWQpX2tpbGxXZWJDb250ZW50UHJvY2Vzc0FuZFJlc2V0
U3RhdGU7CisKIC0gKHZvaWQpX2dldE1haW5SZXNvdXJjZURhdGFXaXRoQ29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAo
dm9pZClfZ2V0V2ViQXJjaGl2ZURhdGFXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
RGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAK
aW5kZXggMTY0YWNiZDBmNDQ2NDJjOGQ5ZThkZDQxZDJiNDg5YjhmZjdhZWE2Yy4uZGNkNjMzYTA5
MWYyNmFjMDI1MTFjNDcyOTQ3NWJiYTgwMGE4NzUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcApAQCAt
NTQsNiArNTQsNyBAQCBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYgc2Vzc2lvbkhpc3RvcnlFbnRy
eVVSTEtleSA9IENGU1RSKCJTZXNzaW9uSGlzdG9yeUVudHJ5VQogc3RhdGljIGNvbnN0IENGU3Ry
aW5nUmVmIHNlc3Npb25IaXN0b3J5RW50cnlUaXRsZUtleSA9IENGU1RSKCJTZXNzaW9uSGlzdG9y
eUVudHJ5VGl0bGUiKTsKIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBzZXNzaW9uSGlzdG9yeUVu
dHJ5T3JpZ2luYWxVUkxLZXkgPSBDRlNUUigiU2Vzc2lvbkhpc3RvcnlFbnRyeU9yaWdpbmFsVVJM
Iik7CiBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYgc2Vzc2lvbkhpc3RvcnlFbnRyeURhdGFLZXkg
PSBDRlNUUigiU2Vzc2lvbkhpc3RvcnlFbnRyeURhdGEiKTsKK3N0YXRpYyBjb25zdCBDRlN0cmlu
Z1JlZiBzZXNzaW9uSGlzdG9yeUVudHJ5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeUtleSA9
IENGU1RSKCJTZXNzaW9uSGlzdG9yeUVudHJ5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeUtl
eSIpOwogCiAvLyBTZXNzaW9uIGhpc3RvcnkgZW50cnkgZGF0YS4KIGNvbnN0IHVpbnQzMl90IHNl
c3Npb25IaXN0b3J5RW50cnlEYXRhVmVyc2lvbiA9IDI7CkBAIC00MjYsMTIgKzQyNywxNSBAQCBz
dGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZW5jb2RlU2Vzc2lvbkhpc3RvcnkoY29u
c3QgQmFja0ZvcndhcmRMaXN0U3RhdAogICAgICAgICBhdXRvIHRpdGxlID0gaXRlbS5wYWdlU3Rh
dGUudGl0bGUuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICAgICAgYXV0byBvcmlnaW5hbFVSTCA9IGl0
ZW0ucGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlLm9yaWdpbmFsVVJMU3RyaW5nLmNyZWF0ZUNGU3Ry
aW5nKCk7CiAgICAgICAgIGF1dG8gZGF0YSA9IGVuY29kZVNlc3Npb25IaXN0b3J5RW50cnlEYXRh
KGl0ZW0ucGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlKTsKKyAgICAgICAgYXV0byBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5VmFsdWUgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oaXRlbS5wYWdl
U3RhdGUuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgICAgIGF1dG8gc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDY0VHlwZSwgJnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3lWYWx1ZSkpOwogCiAgICAgICAgIGF1dG8gZW50cnlEaWN0aW9uYXJ5ID0gY3JlYXRlRGlj
dGlvbmFyeSh7CiAgICAgICAgICAgICB7IHNlc3Npb25IaXN0b3J5RW50cnlVUkxLZXksIHVybC5n
ZXQoKSB9LAogICAgICAgICAgICAgeyBzZXNzaW9uSGlzdG9yeUVudHJ5VGl0bGVLZXksIHRpdGxl
LmdldCgpIH0sCiAgICAgICAgICAgICB7IHNlc3Npb25IaXN0b3J5RW50cnlPcmlnaW5hbFVSTEtl
eSwgb3JpZ2luYWxVUkwuZ2V0KCkgfSwKICAgICAgICAgICAgIHsgc2Vzc2lvbkhpc3RvcnlFbnRy
eURhdGFLZXksIGRhdGEuZ2V0KCkgfSwKKyAgICAgICAgICAgIHsgc2Vzc2lvbkhpc3RvcnlFbnRy
eVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lLZXksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kuZ2V0KCkgfSwKICAgICAgICAgfSk7CiAKICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVl
KGVudHJpZXMuZ2V0KCksIGVudHJ5RGljdGlvbmFyeS5nZXQoKSk7CkBAIC05NjUsMTAgKzk2OSwy
MCBAQCBzdGF0aWMgYm9vbCBkZWNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5KENGRGljdGlvbmFyeVJl
ZiBlbnRyeURpY3Rpb25hcnksIEJhY2tGb3J3YQogICAgIGlmICghaGlzdG9yeUVudHJ5RGF0YSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgYXV0byByYXdTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5ID0gZHluYW1pY19jZl9jYXN0PENGTnVtYmVyUmVmPihDRkRpY3Rpb25hcnlHZXRW
YWx1ZShlbnRyeURpY3Rpb25hcnksIHNlc3Npb25IaXN0b3J5RW50cnlTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5S2V5KSk7CisgICAgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OworICAgIGlmIChyYXdTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KSB7CisgICAgICAgIHVpbnQ2NF90IHZhbHVlOworICAgICAgICBD
Rk51bWJlckdldFZhbHVlKHJhd1Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIGtDRk51bWJl
clNJbnQ2NFR5cGUsICZ2YWx1ZSk7CisgICAgICAgIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5Pih2
YWx1ZSk7CisgICAgfSBlbHNlCisgICAgICAgIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kg
PSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvd0V4dGVy
bmFsU2NoZW1lczsKKwogICAgIGlmICghZGVjb2RlU2Vzc2lvbkhpc3RvcnlFbnRyeURhdGEoaGlz
dG9yeUVudHJ5RGF0YSwgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLnBhZ2VTdGF0ZS5tYWluRnJh
bWVTdGF0ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJhY2tGb3J3YXJkTGlzdEl0
ZW1TdGF0ZS5wYWdlU3RhdGUudGl0bGUgPSB0aXRsZTsKKyAgICBiYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUucGFnZVN0YXRlLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5OwogICAgIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZS5wYWdlU3Rh
dGUubWFpbkZyYW1lU3RhdGUudXJsU3RyaW5nID0gdXJsU3RyaW5nOwogICAgIGJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZS5wYWdlU3RhdGUubWFpbkZyYW1lU3RhdGUub3JpZ2luYWxVUkxTdHJpbmcg
PSBvcmlnaW5hbFVSTFN0cmluZzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5j
cHAKaW5kZXggNDUyMDYyMDAzZmRhZjZkODYyMTg4MDIyYTc1ZmYxZGRiZTgxODBkNy4uZDdmZTE5
YzQxOTIxNTExMGFlZjA4OGY3OGJmODBjNDcyNTA1NDVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25T
dGF0ZUNvbnZlcnNpb24uY3BwCkBAIC0xMTYsNiArMTE2LDcgQEAgUGFnZVN0YXRlIHRvUGFnZVN0
YXRlKGNvbnN0IFdlYkNvcmU6Okhpc3RvcnlJdGVtJiBoaXN0b3J5SXRlbSkKIAogICAgIHBhZ2VT
dGF0ZS50aXRsZSA9IGhpc3RvcnlJdGVtLnRpdGxlKCk7CiAgICAgcGFnZVN0YXRlLm1haW5GcmFt
ZVN0YXRlID0gdG9GcmFtZVN0YXRlKGhpc3RvcnlJdGVtKTsKKyAgICBwYWdlU3RhdGUuc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IGhpc3RvcnlJdGVtLnNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3koKTsKIAogICAgIHJldHVybiBwYWdlU3RhdGU7CiB9CkBAIC0xODgsNiArMTg5LDcg
QEAgc3RhdGljIHZvaWQgYXBwbHlGcmFtZVN0YXRlKEhpc3RvcnlJdGVtJiBoaXN0b3J5SXRlbSwg
Y29uc3QgRnJhbWVTdGF0ZSYgZnJhbWVTdGEKIFJlZjxIaXN0b3J5SXRlbT4gdG9IaXN0b3J5SXRl
bShjb25zdCBQYWdlU3RhdGUmIHBhZ2VTdGF0ZSkKIHsKICAgICBSZWY8SGlzdG9yeUl0ZW0+IGhp
c3RvcnlJdGVtID0gSGlzdG9yeUl0ZW06OmNyZWF0ZShwYWdlU3RhdGUubWFpbkZyYW1lU3RhdGUu
dXJsU3RyaW5nLCBwYWdlU3RhdGUudGl0bGUpOworICAgIGhpc3RvcnlJdGVtLT5zZXRTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KHBhZ2VTdGF0ZS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5KTsKICAgICBhcHBseUZyYW1lU3RhdGUoaGlzdG9yeUl0ZW0sIHBhZ2VTdGF0ZS5tYWluRnJh
bWVTdGF0ZSk7CiAKICAgICByZXR1cm4gaGlzdG9yeUl0ZW07CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWUyZWRkYTQ0Nzg2M2UxMWVhYzc5OWRl
MTdjZDcwZTEwOTg3MmNlNC4uOTM0Y2UwOWZiYTYxNTFjNjViMDkxOGVjOGExZTk4ZmY3MTdmYmJi
OSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDE1LTA4LTA0ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNv
bT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMTg1MTExKTogQ2xpY2tpbmcgcGhvbmUgbnVtYmVy
cyBkb2Vzbid0IHByb21wdCB0byBjYWxsIHNvbWV0aW1lcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3Njc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yMTgyNzgxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSB0ZXN0IHRvIGVuc3VyZSB0aGF0IHdlIHJlc3RvcmUgdGhlICJzaG91bGQgb3Bl
biBleHRlcm5hbCBVUkxzIiBwb2xpY3kgb24KKyAgICAgICAgcGFnZSByZWxvYWQgYWZ0ZXIgdGhl
IHdlYiBjb250ZW50IHByb2Nlc3MgY3Jhc2hlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9zaG91bGQtb3Blbi1leHRlcm5hbC1zY2hlbWVzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1Nob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNJbk5ld1dpbmRvd0FjdGlvbnMubW06CisgICAgICAgIChURVNUKToK
KwogMjAxNS0wNy0zMSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtFRkxdIEZpeCBwaXhtYW4gYnVpbGQgb24gQVJNIHdpdGggR0NDIDQuOS4zCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGYyNWZhMDRmNzI3YjZhZTdjMGIyNzQ1NjFiYmRhYjk2OTJi
YzM5ZjcuLjZiNzVhMWQ1MzJiZGY3ODFhMDRjZmY5NDQ1NWJmMTQ1OTBhODAzZmIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yOTgsNiArMjk4LDcgQEAKIAkJQ0UzNTI0RjkxQjE0NDFDNDAw
MjhBN0M1IC8qIFRleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTM1MjRGMTFCMTQyQjhEMDAyOEE3
QzUgLyogVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCAqLzsgfTsKIAkJQ0UzNTI0
RkExQjE0NDM4OTAwMjhBN0M1IC8qIGlucHV0LWZvY3VzLWJsdXIuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTM1MjRGNTFCMTQyQkJC
MDAyOEE3QzUgLyogaW5wdXQtZm9jdXMtYmx1ci5odG1sICovOyB9OwogCQlDRUE2Q0YyODE5Q0NG
NjlEMDA2NEY1QTcgLyogb3Blbi1hbmQtY2xvc2Utd2luZG93Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VBNkNGMjcxOUNDRjY5RDAw
NjRGNUE3IC8qIG9wZW4tYW5kLWNsb3NlLXdpbmRvdy5odG1sICovOyB9OworCQlDRUJBQkQ0OTFC
NzE2ODdDMDA1MTIxMEEgLyogc2hvdWxkLW9wZW4tZXh0ZXJuYWwtc2NoZW1lcy5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQkFCRDQ4
MUI3MTY4N0MwMDUxMjEwQSAvKiBzaG91bGQtb3Blbi1leHRlcm5hbC1zY2hlbWVzLmh0bWwgKi87
IH07CiAJCUUxMjIwRENBMTU1QjI4QUEwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRo
aW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjIwREM5MTU1QjI4N0QwMDEzRTJGQyAvKiBNZW1v
cnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovOyB9OwogCQlF
MTk0RTFCRDE3N0U1M0M3MDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3Bv
bnNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTE5NEUxQkMxNzdFNTM0QTAwOUM0RDRFIC8qIFN0b3BMb2FkaW5nRnJvbURpZFJlY2Vp
dmVSZXNwb25zZS5odG1sICovOyB9OwogCQlFMTlEQjk3OTFCMzIxMzdDMDBEQjM4RDQgLyogTmF2
aWdhdG9yTGFuZ3VhZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMTlEQjk3ODFCMzIxMzdDMDBEQjM4RDQgLyogTmF2aWdhdG9yTGFuZ3VhZ2UubW0g
Ki87IH07CkBAIC00MDMsNiArNDA0LDcgQEAKIAkJCQk1MUU1QzcwMjE5MTlDM0IyMDBEOEIzRTEg
Lyogc2ltcGxlMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTUxRTVDNzAzMTkxOUMz
QjIwMEQ4QjNFMSAvKiBzaW1wbGUzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzAx
QTIzRjIxMjY2MTU2NzAwQzlFRDU1IC8qIHNwYWNlYmFyLXNjcm9sbGluZy5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAorCQkJCUNFQkFCRDQ5MUI3MTY4N0MwMDUxMjEwQSAvKiBzaG91bGQtb3Bl
bi1leHRlcm5hbC1zY2hlbWVzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRTE5NEUx
QkQxNzdFNTNDNzAwOUM0RDRFIC8qIFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNENTlGNTM1MTlFOTExMEQwMENGMTgzNSAv
KiB0ZXN0LW1zZS5tcDQgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTI0QkJDQTExOUUzMEM3
NzAwMkYxQUYxIC8qIHRlc3QubXA0IGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtNzI2LDYgKzcy
OCw3IEBACiAJCUNFMzUyNEY1MUIxNDJCQkIwMDI4QTdDNSAvKiBpbnB1dC1mb2N1cy1ibHVyLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiaW5wdXQtZm9jdXMtYmx1ci5odG1sIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VBNkNGMjIxOUNDRjVCRDAwNjRGNUE3IC8q
IE9wZW5BbmRDbG9zZVdpbmRvdy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IE9wZW5BbmRDbG9zZVdpbmRvdy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0VBNkNGMjcxOUNDRjY5RDAwNjRGNUE3IC8qIG9wZW4tYW5kLWNsb3NlLXdpbmRvdy5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gIm9wZW4tYW5kLWNsb3NlLXdpbmRvdy5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0VCQUJENDgxQjcxNjg3QzAwNTEyMTBBIC8qIHNob3VsZC1vcGVuLWV4
dGVybmFsLXNjaGVtZXMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJzaG91bGQtb3Blbi1leHRlcm5hbC1zY2hl
bWVzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTIyMEQ5RjE1NUIyNTQ4
MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlDYWNoZURp
c2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTEyMjBEQzkxNTVCMjg3RDAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdp
dGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTk0RTFCQTE3N0U1MTQ1MDA5QzRENEUgLyogU3Rv
cExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE2Myw2ICsxMTY2LDcgQEAKIAkJCQlCQzkw
OTc3ODEyNTU3MUFCMDAwODM3NTYgLyogc2ltcGxlLmh0bWwgKi8sCiAJCQkJNTFFNzgwMzYxOTE5
QUZGODAwMTgyOUEyIC8qIHNpbXBsZTIuaHRtbCAqLywKIAkJCQk1MUU3ODAzNzE5MTlBRkY4MDAx
ODI5QTIgLyogc2ltcGxlMy5odG1sICovLAorCQkJCUNFQkFCRDQ4MUI3MTY4N0MwMDUxMjEwQSAv
KiBzaG91bGQtb3Blbi1leHRlcm5hbC1zY2hlbWVzLmh0bWwgKi8sCiAJCQkJQzAyQjc4ODIxMjY2
MTU0MTAwMjZCRjBGIC8qIHNwYWNlYmFyLXNjcm9sbGluZy5odG1sICovLAogCQkJCUNENTlGNTMz
MTlFOTEwQkMwMENGMTgzNSAvKiB0ZXN0LW1zZS5tcDQgKi8sCiAJCQkJNTI0QkJDQTAxOUUzMEM2
MzAwMkYxQUYxIC8qIHRlc3QubXA0ICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL3Nob3VsZC1vcGVuLWV4dGVybmFsLXNjaGVtZXMuaHRtbCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9zaG91bGQtb3Blbi1leHRlcm5hbC1zY2hlbWVz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjk5ZTRkNjZhZDI2YzAwZjVjNmMzM2NjYTE1YzYyNzdlMzljYTJk
OAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9z
aG91bGQtb3Blbi1leHRlcm5hbC1zY2hlbWVzLmh0bWwKQEAgLTAsMCArMSwyMSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIG5hdmlnYXRlVG9U
ZWxVUkwoKQoreworICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICJ0ZWw6KzEgKDQwOCkgOTk2
LTEwMTAiOworfQorCitmdW5jdGlvbiBuYXZpZ2F0ZVRvVGVsVVJMSW5aZXJvVGltZXIoKQorewor
ICAgIHdpbmRvdy5zZXRUaW1lb3V0KG5hdmlnYXRlVG9UZWxVUkwsIDApOworfQorCitmdW5jdGlv
biBuYXZpZ2F0ZVRvVGVsVVJMSW5OZXN0ZWRaZXJvVGltZXIoKQoreworICAgIHdpbmRvdy5zZXRU
aW1lb3V0KG5hdmlnYXRlVG9UZWxVUkxJblplcm9UaW1lciwgMCk7Cit9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0MkNvY29hL1Nob3VsZE9wZW5FeHRlcm5hbFVSTHNJbk5ld1dpbmRvd0FjdGlvbnMubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9TaG91bGRPcGVuRXh0ZXJuYWxV
UkxzSW5OZXdXaW5kb3dBY3Rpb25zLm1tCmluZGV4IDIyNjRhNzQ0YjdmZGQxMjhjY2JjOTY3MmFl
MzgzZWFkMWQ0NjVmMmEuLmIyNDlkMGFkNzgyMWRmMmY2ZWMzMzVlYzkzMGVlMmQ4YmI2YjM0ZWMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1Nob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNJbk5ld1dpbmRvd0FjdGlvbnMubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvU2hvdWxkT3BlbkV4dGVybmFsVVJMc0luTmV3V2lu
ZG93QWN0aW9ucy5tbQpAQCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaD4KKyNp
bXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAKICNpZiBXS19BUElfRU5BQkxFRApAQCAtMjA2LDYgKzIwNyw0OCBAQCBURVNUKFdlYktp
dDIsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNJblRhcmdldGVkTGluaykKICAgICBhY3Rpb24gPSBu
dWxscHRyOwogfQogCitURVNUKFdlYktpdDIsIFJlc3RvcmVTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5QWZ0ZXJDcmFzaCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7Cisg
ICAgYXV0byB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVu
dFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJh
Y2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpZRVNdKTsKKyAgICBbW3dpbmRvdyBj
b250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKKyAgICBhdXRvIGNvbnRyb2xs
ZXIgPSBhZG9wdE5TKFtbU2hvdWxkT3BlbkV4dGVybmFsVVJMc0luTmV3V2luZG93QWN0aW9uc0Nv
bnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdh
dGU6Y29udHJvbGxlci5nZXQoKV07CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpjb250cm9s
bGVyLmdldCgpXTsKKworICAgIGZpbmlzaGVkTmF2aWdhdGlvbiA9IGZhbHNlOworICAgIE5TVVJM
UmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNob3VsZC1vcGVuLWV4dGVybmFsLXNjaGVt
ZXMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkTmF2aWdhdGlvbik7CisgICAgZmluaXNoZWRO
YXZpZ2F0aW9uID0gZmFsc2U7CisKKyAgICAvLyBCZWZvcmUgY3Jhc2gKKyAgICBkZWNpZGVkUG9s
aWN5ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAibmF2aWdhdGVU
b1RlbFVSTEluTmVzdGVkWmVyb1RpbWVyKCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07IC8vIE5v
bi11c2VyIGluaXRpYXRlZCBuYXZpZ2F0aW9uIGJlY2F1c2UgaXQgaXMgcGVyZm9ybWVkIGluIGEg
bmVzdGVkIHRpbWVyIGNhbGxiYWNrLgorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGVj
aWRlZFBvbGljeSk7CisgICAgZGVjaWRlZFBvbGljeSA9IGZhbHNlOworCisgICAgQVNTRVJUX1RS
VUUoW2FjdGlvbiBfc2hvdWxkT3BlbkV4dGVybmFsU2NoZW1lc10pOworICAgIEFTU0VSVF9GQUxT
RShbYWN0aW9uIF9zaG91bGRPcGVuQXBwTGlua3NdKTsKKworICAgIC8vIENyYXNoCisgICAgW3dl
YlZpZXcgX2tpbGxXZWJDb250ZW50UHJvY2Vzc0FuZFJlc2V0U3RhdGVdOworICAgIFt3ZWJWaWV3
IHJlbG9hZF07CisKKyAgICBmaW5pc2hlZE5hdmlnYXRpb24gPSBmYWxzZTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkTmF2aWdhdGlvbik7CisgICAgZmluaXNoZWROYXZp
Z2F0aW9uID0gZmFsc2U7CisKKyAgICAvLyBBZnRlciBjcmFzaAorICAgIGRlY2lkZWRQb2xpY3kg
PSBmYWxzZTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJuYXZpZ2F0ZVRvVGVs
VVJMSW5OZXN0ZWRaZXJvVGltZXIoKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsgLy8gTm9uLXVz
ZXIgaW5pdGlhdGVkIG5hdmlnYXRpb24gYmVjYXVzZSBpdCBpcyBwZXJmb3JtZWQgaW4gYSBuZXN0
ZWQgdGltZXIgY2FsbGJhY2suCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkZWNpZGVk
UG9saWN5KTsKKyAgICBkZWNpZGVkUG9saWN5ID0gZmFsc2U7CisKKyAgICBBU1NFUlRfVFJVRShb
YWN0aW9uIF9zaG91bGRPcGVuRXh0ZXJuYWxTY2hlbWVzXSk7CisgICAgQVNTRVJUX0ZBTFNFKFth
Y3Rpb24gX3Nob3VsZE9wZW5BcHBMaW5rc10pOworfTsKKwogI2VuZGlmCiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258267</attachid>
            <date>2015-08-04 22:07:44 -0700</date>
            <delta_ts>2015-08-04 22:09:27 -0700</delta_ts>
            <desc>Patch and unit test</desc>
            <filename>bug-147678-20150804220736.patch</filename>
            <type>text/plain</type>
            <size>26935</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3NjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2IxNzQwZjA4YjJlMGMx
OTQ5MjVjMzI5YjViODAwNDljYWE5MTMxYS4uMDNlMTE4NTdhZDRhMDhiYzNmNWY2MGM1ZGJmY2Y4
MTVjYTQ3YjFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE1LTA4LTA0ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMTg1
MTExKTogQ2xpY2tpbmcgcGhvbmUgbnVtYmVycyBkb2Vzbid0IHByb21wdCB0byBjYWxsIHNvbWV0
aW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3
Njc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTgyNzgxNT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBhIG5v
bi11c2VyLWluaXRpYXRlZCBuYXZpZ2F0aW9uIG9mIHRoZSBtYWluIGZyYW1lIHRvIGEgcGhvbmUg
bGluayAodGVsIFVSTCkKKyAgICAgICAgbWF5IGJlIGlnbm9yZWQuIFRoZSBuYXZpZ2F0aW9uIGlz
IGlnbm9yZWQgaWYgdGhlIHBhZ2Ugd2FzIHJlbG9hZGVkIGFzIGEgcmVzdWx0IG9mIGEgd2ViIGNv
bnRlbnQKKyAgICAgICAgcHJvY2VzcyBjcmFzaCwgaXRzIGxpZmV0aW1lIGV4Y2VlZGVkIHRoZSBi
YWNrLWZvcndhcmQgY2FjaGUgZXhwaXJhdGlvbiBpbnRlcnZhbCwgb3IgYSBwZXJzb24KKyAgICAg
ICAgcXVpdHMgYW5kIG9wZW5zIFNhZmFyaSBhZ2FpbiwgYW1vbmcgb3RoZXIgc2NlbmFyaW9zLgor
CisgICAgICAgICogaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
aXN0b3J5SXRlbTo6c2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06OnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kp
OiBBZGRlZC4KKyAgICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmg6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2Fk
RGlmZmVyZW50RG9jdW1lbnRJdGVtKTogQXBwbHkgdGhlICJzaG91bGQgb3BlbiBleHRlcm5hbCBV
UkxzIiBwb2xpY3kKKyAgICAgICAgZnJvbSB0aGUgaGlzdG9yeSBpdGVtLCBpZiBhcHBsaWNhYmxl
LiBBbHNvLCBiZSBtb3JlIGV4cGxpY2l0IHdoZW4gaW5zdGFudGlhdGluZyBhIE5hdmlnYXRpb25B
Y3Rpb24KKyAgICAgICAgc28gYXMgdG8gaGVscCBtYWtlIGl0IHN0cmFpZ2h0Zm9yd2FyZCB0byBy
ZWR1Y2UgdGhlIG51bWJlciBvZiBOYXZpZ2F0aW9uQWN0aW9uIGNvbnN0cnVjdG9ycyB3ZSBoYXZl
CisgICAgICAgIGluIHRoZSBmdXR1cmUuCisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpzYXZlRG9jdW1l
bnRTdGF0ZSk6IFNhdmUgdGhlICJzaG91bGQgb3BlbiBleHRlcm5hbCBVUkxzIiBwb2xpY3kgdG8K
KyAgICAgICAgdGhlIGhpc3RvcnkgaXRlbS4KKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250
cm9sbGVyOjpyZXN0b3JlRG9jdW1lbnRTdGF0ZSk6IEFwcGx5IHRoZSAic2hvdWxkIG9wZW4gZXh0
ZXJuYWwgVVJMcyIgcG9saWN5CisgICAgICAgIGZyb20gdGhlIGhpc3RvcnkgaXRlbSB0byB0aGUg
ZG9jdW1lbnQgbG9hZGVyLgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6Omlu
aXRpYWxpemVJdGVtKTogVXBkYXRlIHRoZSAic2hvdWxkIG9wZW4gZXh0ZXJuYWwgVVJMcyIgcG9s
aWN5IG9mCisgICAgICAgIHRoZSBoaXN0b3J5IGl0ZW0gdG8gcmVmbGVjdCB0aGUgcG9saWN5IG9m
IHRoZSBkb2N1bWVudCBsb2FkZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IGZyYW1lLgor
CiAyMDE1LTA3LTMxICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAg
IENSQVNIIGF0IFdlYkNvcmU6OlRhc2tEaXNwYXRjaGVyPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ+Ojpwb3N0VGFzayArIDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzc1NTBiMGMyZGNmZjY0MzY4
ZDAyNDA3MWMxYWUyYTIzNGYyYjA0Ni4uYTkzYjJlNTI4OWE0ZjcxNjBiYjg1ZWIyNmJkMjE2MWU0
MGYyOTJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE1LTA4LTA0ICBEYW5pZWwg
QmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMTg1MTEx
KTogQ2xpY2tpbmcgcGhvbmUgbnVtYmVycyBkb2Vzbid0IHByb21wdCB0byBjYWxsIHNvbWV0aW1l
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3Njc4
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTgyNzgxNT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZWFjaCBXZWJLaXQgdG8gc2F2ZSBhbmQgcmVz
dG9yZSB0aGUgInNob3VsZCBvcGVuIGV4dGVybmFsIFVSTHMiIHBvbGljeS4KKworICAgICAgICAq
IFNoYXJlZC9TZXNzaW9uU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0Ojppc1ZhbGlkRW51bSk6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQYWdlU3RhdGU6OmVuY29kZSk6IE1vZGlmaWVkIHRv
IGVuY29kZSB0aGUgInNob3VsZCBvcGVuIGV4dGVybmFsIFVSTHMiIHBvbGljeS4KKyAgICAgICAg
KFdlYktpdDo6UGFnZVN0YXRlOjpkZWNvZGUpOiBNb2RpZmllZCB0byBkZWNvZGUgdGhlICJzaG91
bGQgb3BlbiBleHRlcm5hbCBVUkxzIiBwb2xpY3kuCisgICAgICAgICogU2hhcmVkL1Nlc3Npb25T
dGF0ZS5oOiBBZGRlZCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHRvIFBhZ2VTdGF0ZSAo
ZGVmYXVsdHMgdG8gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxk
Tm90QWxsb3cpLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX2tpbGxXZWJDb250ZW50UHJvY2Vzc0FuZFJlc2V0U3RhdGVd
KTogQWRkZWQ7IHVzZWQgaW4gdGhlIHVuaXQgdGVzdCBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJDb2NvYS9TaG91bGRPcGVuRXh0ZXJuYWxVUkxzSW5OZXdXaW5kb3dBY3Rpb25zLm1tLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOiBEZWNsYXJlIC1b
V0tXZWJWaWV3IF9raWxsV2ViQ29udGVudFByb2Nlc3NBbmRSZXNldFN0YXRlXS4KKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHA6IERlZmluZWQgY29u
c3RhbnQgc2Vzc2lvbkhpc3RvcnlFbnRyeVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lLZXku
CisgICAgICAgIChXZWJLaXQ6OmVuY29kZVNlc3Npb25IaXN0b3J5KTogTW9kaWZpZWQgdG8gZW5j
b2RlIHRoZSAic2hvdWxkIG9wZW4gZXh0ZXJuYWwgVVJMcyIgcG9saWN5LgorICAgICAgICAoV2Vi
S2l0OjpkZWNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5KTogTW9kaWZpZWQgdG8gZGVjb2RlIHRoZSAi
c2hvdWxkIG9wZW4gZXh0ZXJuYWwgVVJMcyIgcG9saWN5LgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OnRvUGFnZVN0YXRlKTogQ29weSAic2hvdWxkIG9wZW4gZXh0ZXJuYWwgVVJMcyIgcG9saWN5
IGZyb20gc3BlY2lmaWVkIGhpc3RvcnkgaXRlbS4KKyAgICAgICAgKFdlYktpdDo6dG9IaXN0b3J5
SXRlbSk6IEFwcGx5ICJzaG91bGQgb3BlbiBleHRlcm5hbCBVUkxzIiBwb2xpY3kgZnJvbSBQYWdl
U3RhdGUgdG8gSGlzdG9yeUl0ZW0uCisKIDIwMTUtMDctMzEgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIE5QQVBJIGNvZGUgY3Jhc2hl
cyBvbiBXYXlsYW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJ
dGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCmluZGV4IDhh
YjVlODZjNDQ2MTI4NDYyZmY1NTUwMDc0OWNmZmM2YTIxZTNiYWMuLmExOTAyZDM2NDRjMDAyZDVk
ODExZjJmYzA1NjI5YmRjOWU1YWM2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0
ZW0uY3BwCkBAIC0zNTEsNiArMzUxLDE2IEBAIHZvaWQgSGlzdG9yeUl0ZW06OmNsZWFyRG9jdW1l
bnRTdGF0ZSgpCiAgICAgbV9kb2N1bWVudFN0YXRlLmNsZWFyKCk7CiB9CiAKK3ZvaWQgSGlzdG9y
eUl0ZW06OnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSBwb2xpY3kpCit7CisgICAgbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
ID0gcG9saWN5OworfQorCitTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IEhpc3RvcnlJdGVt
OjpzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OworfQorCiBib29sIEhpc3RvcnlJdGVtOjppc1Rh
cmdldEl0ZW0oKSBjb25zdAogewogICAgIHJldHVybiBtX2lzVGFyZ2V0SXRlbTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAppbmRleCAzYWFjYzJhOWM1YzQ2MDhkMjdmN2E0ODg2Njlm
OWU5NjBkMWJiNWRjLi4wOWNmNWVlN2U0NGYwZTcxOWNkYjc1NmJkYzIzYjJiYjBiODBjMDQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjZGVm
aW5lIEhpc3RvcnlJdGVtX2gKIAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIkludFJl
Y3QuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKQEAgLTExNyw2ICsxMTgs
OSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREb2N1bWVudFN0YXRlKGNv
bnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAgICAgdm9pZCBjbGVhckRvY3VtZW50U3RhdGUoKTsKIAor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSBjb25z
dDsKKwogICAgIHZvaWQgc2V0VVJMKGNvbnN0IFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0VVJMU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0T3JpZ2luYWxVUkxTdHJpbmcoY29uc3QgU3RyaW5nJik7CkBAIC0yMzEsNiArMjM1LDggQEAg
cHJpdmF0ZToKICAgICBJbnRQb2ludCBtX3Njcm9sbFBvaW50OwogICAgIGZsb2F0IG1fcGFnZVNj
YWxlRmFjdG9yOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fZG9jdW1lbnRTdGF0ZTsKKworICAgIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
IHsgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cgfTsKICAgICAK
ICAgICBIaXN0b3J5SXRlbVZlY3RvciBtX2NoaWxkcmVuOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMmRhZjQwNDVkNTdhZDBiNzQ3MzcyZjUyMDkxYjBhODAw
MGRhNmY5Mi4uNjExYWE0OGE0OWI0MWU3NjIzYmU3MTMxZjYxMmFjOWIyZGNlMzdmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zMjI4LDcgKzMyMjgsMTEgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRl
bSwgRnJhbWVMb2FkVHlwZSBsb2EKIAogICAgIGlmICghaXRlbS5yZWZlcnJlcigpLmlzTnVsbCgp
KQogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihpdGVtLnJlZmVycmVyKCkpOwotICAg
IAorCisgICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5ID0gc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkobV9mcmFtZSwg
aXRlbS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkpOworICAgIGJvb2wgaXNGb3JtU3Vi
bWlzc2lvbiA9IGZhbHNlOworICAgIEV2ZW50KiBldmVudCA9IG51bGxwdHI7CisKICAgICAvLyBJ
ZiB0aGlzIHdhcyBhIHJlcG9zdCB0aGF0IGZhaWxlZCB0aGUgcGFnZSBjYWNoZSwgd2UgbWlnaHQg
dHJ5IHRvIHJlcG9zdCB0aGUgZm9ybS4KICAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbjsKICAg
ICBpZiAoZm9ybURhdGEpIHsKQEAgLTMyNTQsMTAgKzMyNTgsMTAgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6bG9hZERpZmZlcmVudERvY3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2Fk
VHlwZSBsb2EKICAgICAgICAgCiAgICAgICAgIGlmIChjYWNoZUxvYWRQb2xpY3kgPT0gTWF5QXR0
ZW1wdENhY2hlT25seUxvYWRGb3JGb3JtU3VibWlzc2lvbkl0ZW0pIHsKICAgICAgICAgICAgIHJl
cXVlc3Quc2V0Q2FjaGVQb2xpY3koUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQpOwotICAgICAgICAg
ICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBsb2FkVHlwZSwgZmFsc2UpOwor
ICAgICAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBsb2FkVHlwZSwg
aXNGb3JtU3VibWlzc2lvbiwgZXZlbnQsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZXR1
cm5DYWNoZURhdGFFbHNlTG9hZCk7Ci0gICAgICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0
aW9uKHJlcXVlc3QsIE5hdmlnYXRpb25UeXBlOjpGb3JtUmVzdWJtaXR0ZWQpOworICAgICAgICAg
ICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZTo6Rm9y
bVJlc3VibWl0dGVkLCBldmVudCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBzd2l0Y2ggKGxvYWRUeXBlKSB7CkBAIC0zMjgy
LDcgKzMyODYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVt
KEhpc3RvcnlJdGVtJiBpdGVtLCBGcmFtZUxvYWRUeXBlIGxvYQogCiAgICAgICAgIFJlc291cmNl
UmVxdWVzdCByZXF1ZXN0Rm9yT3JpZ2luYWxVUkwocmVxdWVzdCk7CiAgICAgICAgIHJlcXVlc3RG
b3JPcmlnaW5hbFVSTC5zZXRVUkwoaXRlbU9yaWdpbmFsVVJMKTsKLSAgICAgICAgYWN0aW9uID0g
TmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0Rm9yT3JpZ2luYWxVUkwsIGxvYWRUeXBlLCBmYWxzZSk7
CisgICAgICAgIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdEZvck9yaWdpbmFsVVJM
LCBsb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQsIHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kpOwogICAgIH0KIAogICAgIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0
LCBhY3Rpb24sIExvY2tIaXN0b3J5OjpObywgbG9hZFR5cGUsIDAsIEFsbG93TmF2aWdhdGlvblRv
SW52YWxpZFVSTDo6WWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0
b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xs
ZXIuY3BwCmluZGV4IGJlNWMwNzQwZTY3OTQzOGFkMzBhYzBkN2ExM2RkNGMxNmUwYzU5MGEuLjEy
ZmQ1NjViMjFmM2VjMTI3OGU1N2VmYzVjOGJhYjQzMTBlMDk2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAtMTkxLDYgKzE5MSw5IEBAIHZvaWQg
SGlzdG9yeUNvbnRyb2xsZXI6OnNhdmVEb2N1bWVudFN0YXRlKCkKICAgICBBU1NFUlQobV9mcmFt
ZS5kb2N1bWVudCgpKTsKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSAqbV9mcmFtZS5kb2N1bWVu
dCgpOwogICAgIGlmIChpdGVtLT5pc0N1cnJlbnREb2N1bWVudChkb2N1bWVudCkgJiYgZG9jdW1l
bnQuaGFzTGl2aW5nUmVuZGVyVHJlZSgpKSB7CisgICAgICAgIGlmIChEb2N1bWVudExvYWRlciog
ZG9jdW1lbnRMb2FkZXIgPSBkb2N1bWVudC5sb2FkZXIoKSkKKyAgICAgICAgICAgIGl0ZW0tPnNl
dFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koZG9jdW1lbnRMb2FkZXItPnNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpKTsKKwogICAgICAgICBMT0coTG9hZGluZywg
IldlYkNvcmVMb2FkaW5nICVzOiBzYXZpbmcgZm9ybSBzdGF0ZSB0byAlcCIsIG1fZnJhbWUudHJl
ZSgpLnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpdGVtKTsKICAgICAgICAg
aXRlbS0+c2V0RG9jdW1lbnRTdGF0ZShkb2N1bWVudC5mb3JtRWxlbWVudHNTdGF0ZSgpKTsKICAg
ICB9CkBAIC0yMzAsNiArMjMzLDggQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVzdG9yZURv
Y3VtZW50U3RhdGUoKQogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkt
PmlzQ2xpZW50UmVkaXJlY3QoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgbV9mcmFtZS5sb2Fk
ZXIoKS5kb2N1bWVudExvYWRlcigpLT5zZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KG1f
Y3VycmVudEl0ZW0tPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7CisKICAgICBMT0co
TG9hZGluZywgIldlYkNvcmVMb2FkaW5nICVzOiByZXN0b3JpbmcgZm9ybSBzdGF0ZSBmcm9tICVw
IiwgbV9mcmFtZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1f
Y3VycmVudEl0ZW0uZ2V0KCkpOwogICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2V0U3RhdGVGb3JO
ZXdGb3JtRWxlbWVudHMobV9jdXJyZW50SXRlbS0+ZG9jdW1lbnRTdGF0ZSgpKTsKIH0KQEAgLTY0
OCw2ICs2NTMsOCBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjppbml0aWFsaXplSXRlbShIaXN0
b3J5SXRlbSYgaXRlbSkKICAgICBpZiAoIXVucmVhY2hhYmxlVVJMLmlzRW1wdHkoKSB8fCBkb2N1
bWVudExvYWRlci0+cmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID49IDQwMCkKICAgICAgICAg
aXRlbS5zZXRMYXN0VmlzaXRXYXNGYWlsdXJlKHRydWUpOwogCisgICAgaXRlbS5zZXRTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KGRvY3VtZW50TG9hZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5VG9Qcm9wYWdhdGUoKSk7CisKICAgICAvLyBTYXZlIGZvcm0gc3RhdGUgaWYgdGhp
cyBpcyBhIFBPU1QKICAgICBpdGVtLnNldEZvcm1JbmZvRnJvbVJlcXVlc3QoZG9jdW1lbnRMb2Fk
ZXItPnJlcXVlc3QoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vz
c2lvblN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwCmlu
ZGV4IDE2OGFiZjc5Mzk3NzI4MTkyYTE0ODIzMGEwNDg1ZmYxM2NhMTE2MDUuLmRjMDRlMjBlYTk2
MjZhZjU3NWI2ODFjM2U5MWI2ZTExZGI2ZjJhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNz
aW9uU3RhdGUuY3BwCkBAIC0zMCw2ICszMCwxNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
Ym9vbCBpc1ZhbGlkRW51bShXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHBv
bGljeSkKK3sKKyAgICBzd2l0Y2ggKHBvbGljeSkgeworICAgIGNhc2UgV2ViQ29yZTo6U2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3c6CisgICAgY2FzZSBXZWJDb3Jl
OjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvdzoKKyAgICBjYXNlIFdl
YkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93RXh0ZXJuYWxT
Y2hlbWVzOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiB2b2lkIEhUVFBCb2R5OjpFbGVtZW50OjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHR5cGUpOwpAQCAtMTcw
LDYgKzE4MSw3IEBAIHZvaWQgUGFnZVN0YXRlOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCB0aXRsZTsKICAgICBlbmNvZGVyIDw8
IG1haW5GcmFtZVN0YXRlOworICAgIGVuY29kZXIuZW5jb2RlRW51bShzaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5KTsKIH0KIAogYm9vbCBQYWdlU3RhdGU6OmRlY29kZShJUEM6OkFyZ3VtZW50
RGVjb2RlciYgZGVjb2RlciwgUGFnZVN0YXRlJiByZXN1bHQpCkBAIC0xNzgsNiArMTkwLDggQEAg
Ym9vbCBQYWdlU3RhdGU6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUGFn
ZVN0YXRlJiByZXN1bHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5tYWluRnJhbWVTdGF0ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSkgfHwgIWlzVmFsaWRFbnVtKHJlc3VsdC5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKaW5kZXggZDRkNmEyYmY0MmI5OTk2NmRmNWNlODYwYWM1
ZDc0Yjk4ZmU5YTQ2Zi4uNzM1YTljMzJlZmRlYjY1MWNmNGNhZjkzMDgzOTQ2ODBlYWIzMjkwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uU3RhdGUuaApAQCAtMzEsNiArMzEsNyBAQAogI2Vu
ZGlmCiAKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC00NCw2ICs0
NSw4IEBAIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2Jv
b2wgaXNWYWxpZEVudW0oV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisK
IHN0cnVjdCBIVFRQQm9keSB7CiAgICAgc3RydWN0IEVsZW1lbnQgewogICAgICAgICB2b2lkIGVu
Y29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0OwpAQCAtMTE1LDYgKzExOCw3IEBAIHN0
cnVjdCBQYWdlU3RhdGUgewogCiAgICAgU3RyaW5nIHRpdGxlOwogICAgIEZyYW1lU3RhdGUgbWFp
bkZyYW1lU3RhdGU7CisgICAgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBz
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHsgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cgfTsKIH07CiAKIHN0cnVjdCBCYWNrRm9yd2FyZExp
c3RJdGVtU3RhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQppbmRleCAzMTYzMjJlMDMyODg2YmU5MDhjNWM2OWQ0ZTVmYTU2YTY1NGQ2ZGM0
Li43ODg2MjVlZGQyN2E2MTkwMTRjMDVmZDk4YWNmZjA2MDA5Yzg0NTE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjAxOCw2ICsy
MDE4LDExIEBAIHN0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50IGNvbnN0cmFpbkNvbnRlbnRPZmZz
ZXQoV2ViQ29yZTo6RmxvYXRQb2ludCBjb250ZW50T2ZmCiAgICAgX3BhZ2UtPnByb2Nlc3MoKS50
ZXJtaW5hdGUoKTsKIH0KIAorLSAodm9pZClfa2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5kUmVzZXRT
dGF0ZQoreworICAgIF9wYWdlLT50ZXJtaW5hdGVQcm9jZXNzKCk7Cit9CisKICNpZiBQTEFURk9S
TShJT1MpCiBzdGF0aWMgV2ViQ29yZTo6RmxvYXRTaXplIGFjdGl2ZU1pbmltdW1MYXlvdXRTaXpl
KFdLV2ViVmlldyAqd2ViVmlldywgY29uc3QgQ0dSZWN0JiBib3VuZHMpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmlu
ZGV4IDI1NTFjNjNmMTgyY2JiZWQxYmRlYTM0M2QyMjYxOGY0YWE2OTRhOTUuLjE5MWUyODY4MTBi
MzBmZmUyNzhlNDQ2ZTMzMGI2MjRlMmZhZmE2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0xNzgsNiArMTc4
LDggQEAgV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLU2hvdWxkT3BlbkV4dGVybmFsVVJM
c0tleSBXS19BVkFJTEFCTEUoV0tfTUFDX1RCQSwKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0
ZXI9X3NldE92ZXJyaWRlRGV2aWNlU2NhbGVGYWN0b3I6KSBDR0Zsb2F0IF9vdmVycmlkZURldmlj
ZVNjYWxlRmFjdG9yIFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBOQSk7CiAjZW5kaWYKIAorLSAo
dm9pZClfa2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5kUmVzZXRTdGF0ZTsKKwogLSAodm9pZClfZ2V0
TWFpblJlc291cmNlRGF0YVdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICos
IE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKV9nZXRXZWJBcmNoaXZlRGF0
YVdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikpY29t
cGxldGlvbkhhbmRsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcAppbmRleCAxNjRhY2JkMGY0NDY0MmM4
ZDllOGRkNDFkMmI0ODliOGZmN2FlYTZjLi5kY2Q2MzNhMDkxZjI2YWMwMjUxMWM0NzI5NDc1YmJh
ODAwYTg3NTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0xlZ2Fj
eVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCkBAIC01NCw2ICs1NCw3IEBAIHN0YXRpYyBj
b25zdCBDRlN0cmluZ1JlZiBzZXNzaW9uSGlzdG9yeUVudHJ5VVJMS2V5ID0gQ0ZTVFIoIlNlc3Np
b25IaXN0b3J5RW50cnlVCiBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYgc2Vzc2lvbkhpc3RvcnlF
bnRyeVRpdGxlS2V5ID0gQ0ZTVFIoIlNlc3Npb25IaXN0b3J5RW50cnlUaXRsZSIpOwogc3RhdGlj
IGNvbnN0IENGU3RyaW5nUmVmIHNlc3Npb25IaXN0b3J5RW50cnlPcmlnaW5hbFVSTEtleSA9IENG
U1RSKCJTZXNzaW9uSGlzdG9yeUVudHJ5T3JpZ2luYWxVUkwiKTsKIHN0YXRpYyBjb25zdCBDRlN0
cmluZ1JlZiBzZXNzaW9uSGlzdG9yeUVudHJ5RGF0YUtleSA9IENGU1RSKCJTZXNzaW9uSGlzdG9y
eUVudHJ5RGF0YSIpOworc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIHNlc3Npb25IaXN0b3J5RW50
cnlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5S2V5ID0gQ0ZTVFIoIlNlc3Npb25IaXN0b3J5
RW50cnlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5S2V5Iik7CiAKIC8vIFNlc3Npb24gaGlz
dG9yeSBlbnRyeSBkYXRhLgogY29uc3QgdWludDMyX3Qgc2Vzc2lvbkhpc3RvcnlFbnRyeURhdGFW
ZXJzaW9uID0gMjsKQEAgLTQyNiwxMiArNDI3LDE1IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0
aW9uYXJ5UmVmPiBlbmNvZGVTZXNzaW9uSGlzdG9yeShjb25zdCBCYWNrRm9yd2FyZExpc3RTdGF0
CiAgICAgICAgIGF1dG8gdGl0bGUgPSBpdGVtLnBhZ2VTdGF0ZS50aXRsZS5jcmVhdGVDRlN0cmlu
ZygpOwogICAgICAgICBhdXRvIG9yaWdpbmFsVVJMID0gaXRlbS5wYWdlU3RhdGUubWFpbkZyYW1l
U3RhdGUub3JpZ2luYWxVUkxTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICAgICAgYXV0byBk
YXRhID0gZW5jb2RlU2Vzc2lvbkhpc3RvcnlFbnRyeURhdGEoaXRlbS5wYWdlU3RhdGUubWFpbkZy
YW1lU3RhdGUpOworICAgICAgICBhdXRvIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lWYWx1
ZSA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihpdGVtLnBhZ2VTdGF0ZS5zaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5KTsKKyAgICAgICAgYXV0byBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
ID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJT
SW50NjRUeXBlLCAmc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVZhbHVlKSk7CiAKICAgICAg
ICAgYXV0byBlbnRyeURpY3Rpb25hcnkgPSBjcmVhdGVEaWN0aW9uYXJ5KHsKICAgICAgICAgICAg
IHsgc2Vzc2lvbkhpc3RvcnlFbnRyeVVSTEtleSwgdXJsLmdldCgpIH0sCiAgICAgICAgICAgICB7
IHNlc3Npb25IaXN0b3J5RW50cnlUaXRsZUtleSwgdGl0bGUuZ2V0KCkgfSwKICAgICAgICAgICAg
IHsgc2Vzc2lvbkhpc3RvcnlFbnRyeU9yaWdpbmFsVVJMS2V5LCBvcmlnaW5hbFVSTC5nZXQoKSB9
LAogICAgICAgICAgICAgeyBzZXNzaW9uSGlzdG9yeUVudHJ5RGF0YUtleSwgZGF0YS5nZXQoKSB9
LAorICAgICAgICAgICAgeyBzZXNzaW9uSGlzdG9yeUVudHJ5U2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeUtleSwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeS5nZXQoKSB9LAogICAgICAg
ICB9KTsKIAogICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoZW50cmllcy5nZXQoKSwgZW50cnlE
aWN0aW9uYXJ5LmdldCgpKTsKQEAgLTk2NSwxMCArOTY5LDIwIEBAIHN0YXRpYyBib29sIGRlY29k
ZVNlc3Npb25IaXN0b3J5RW50cnkoQ0ZEaWN0aW9uYXJ5UmVmIGVudHJ5RGljdGlvbmFyeSwgQmFj
a0ZvcndhCiAgICAgaWYgKCFoaXN0b3J5RW50cnlEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKKyAgICBhdXRvIHJhd1Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBkeW5hbWljX2Nm
X2Nhc3Q8Q0ZOdW1iZXJSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGVudHJ5RGljdGlvbmFyeSwg
c2Vzc2lvbkhpc3RvcnlFbnRyeVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lLZXkpKTsKKyAg
ICBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3k7CisgICAgaWYgKHJhd1Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpIHsK
KyAgICAgICAgdWludDY0X3QgdmFsdWU7CisgICAgICAgIENGTnVtYmVyR2V0VmFsdWUocmF3U2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwga0NGTnVtYmVyU0ludDY0VHlwZSwgJnZhbHVlKTsK
KyAgICAgICAgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IHN0YXRpY19jYXN0PFdlYkNv
cmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k+KHZhbHVlKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93RXh0ZXJuYWxTY2hlbWVzOworCiAgICAgaWYg
KCFkZWNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YShoaXN0b3J5RW50cnlEYXRhLCBiYWNrRm9y
d2FyZExpc3RJdGVtU3RhdGUucGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLnBhZ2VTdGF0ZS50aXRs
ZSA9IHRpdGxlOworICAgIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZS5wYWdlU3RhdGUuc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7CiAg
ICAgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLnBhZ2VTdGF0ZS5tYWluRnJhbWVTdGF0ZS51cmxT
dHJpbmcgPSB1cmxTdHJpbmc7CiAgICAgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLnBhZ2VTdGF0
ZS5tYWluRnJhbWVTdGF0ZS5vcmlnaW5hbFVSTFN0cmluZyA9IG9yaWdpbmFsVVJMU3RyaW5nOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nl
c3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAppbmRleCA0NTIwNjIwMDNmZGFm
NmQ4NjIxODgwMjJhNzVmZjFkZGJlODE4MGQ3Li5kN2ZlMTljNDE5MjE1MTEwYWVmMDg4Zjc4YmY4
MGM0NzI1MDU0NWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKQEAg
LTExNiw2ICsxMTYsNyBAQCBQYWdlU3RhdGUgdG9QYWdlU3RhdGUoY29uc3QgV2ViQ29yZTo6SGlz
dG9yeUl0ZW0mIGhpc3RvcnlJdGVtKQogCiAgICAgcGFnZVN0YXRlLnRpdGxlID0gaGlzdG9yeUl0
ZW0udGl0bGUoKTsKICAgICBwYWdlU3RhdGUubWFpbkZyYW1lU3RhdGUgPSB0b0ZyYW1lU3RhdGUo
aGlzdG9yeUl0ZW0pOworICAgIHBhZ2VTdGF0ZS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
ID0gaGlzdG9yeUl0ZW0uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpOwogCiAgICAgcmV0
dXJuIHBhZ2VTdGF0ZTsKIH0KQEAgLTE4OCw2ICsxODksNyBAQCBzdGF0aWMgdm9pZCBhcHBseUZy
YW1lU3RhdGUoSGlzdG9yeUl0ZW0mIGhpc3RvcnlJdGVtLCBjb25zdCBGcmFtZVN0YXRlJiBmcmFt
ZVN0YQogUmVmPEhpc3RvcnlJdGVtPiB0b0hpc3RvcnlJdGVtKGNvbnN0IFBhZ2VTdGF0ZSYgcGFn
ZVN0YXRlKQogewogICAgIFJlZjxIaXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW0gPSBIaXN0b3J5SXRl
bTo6Y3JlYXRlKHBhZ2VTdGF0ZS5tYWluRnJhbWVTdGF0ZS51cmxTdHJpbmcsIHBhZ2VTdGF0ZS50
aXRsZSk7CisgICAgaGlzdG9yeUl0ZW0tPnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ko
cGFnZVN0YXRlLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogICAgIGFwcGx5RnJhbWVT
dGF0ZShoaXN0b3J5SXRlbSwgcGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlKTsKIAogICAgIHJldHVy
biBoaXN0b3J5SXRlbTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA5ZTJlZGRhNDQ3ODYzZTExZWFjNzk5ZGUxN2NkNzBlMTA5ODcyY2U0Li45MzRj
ZTA5ZmJhNjE1MWM2NWIwOTE4ZWM4YTFlOThmZjcxN2ZiYmI5IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTUtMDgt
MDQgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJ
T04gKHIxODUxMTEpOiBDbGlja2luZyBwaG9uZSBudW1iZXJzIGRvZXNuJ3QgcHJvbXB0IHRvIGNh
bGwgc29tZXRpbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDc2NzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIxODI3ODE1PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHRlc3QgdG8gZW5z
dXJlIHRoYXQgd2UgcmVzdG9yZSB0aGUgInNob3VsZCBvcGVuIGV4dGVybmFsIFVSTHMiIHBvbGlj
eSBvbgorICAgICAgICBwYWdlIHJlbG9hZCBhZnRlciB0aGUgd2ViIGNvbnRlbnQgcHJvY2VzcyBj
cmFzaGVzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L3Nob3VsZC1vcGVuLWV4dGVybmFsLXNjaGVtZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvU2hvdWxkT3BlbkV4dGVybmFsVVJMc0luTmV3
V2luZG93QWN0aW9ucy5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDE1LTA3LTMxICBDc2FiYSBP
c3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0VGTF0gRml4IHBpeG1h
biBidWlsZCBvbiBBUk0gd2l0aCBHQ0MgNC45LjMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZjI1ZmEwNGY3MjdiNmFlN2MwYjI3NDU2MWJiZGFiOTY5MmJjMzlmNy4uNmI3NWExZDUzMmJkZjc4
MWEwNGNmZjk0NDU1YmYxNDU5MGE4MDNmYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5
OCw2ICsyOTgsNyBAQAogCQlDRTM1MjRGOTFCMTQ0MUM0MDAyOEE3QzUgLyogVGV4dEZpZWxkRGlk
QmVnaW5BbmRFbmRFZGl0aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFMzUyNEYxMUIxNDJCOEQwMDI4QTdDNSAvKiBUZXh0RmllbGREaWRCZWdp
bkFuZEVuZEVkaXRpbmcuY3BwICovOyB9OwogCQlDRTM1MjRGQTFCMTQ0Mzg5MDAyOEE3QzUgLyog
aW5wdXQtZm9jdXMtYmx1ci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENFMzUyNEY1MUIxNDJCQkIwMDI4QTdDNSAvKiBpbnB1dC1mb2N1
cy1ibHVyLmh0bWwgKi87IH07CiAJCUNFQTZDRjI4MTlDQ0Y2OUQwMDY0RjVBNyAvKiBvcGVuLWFu
ZC1jbG9zZS13aW5kb3cuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRUE2Q0YyNzE5Q0NGNjlEMDA2NEY1QTcgLyogb3Blbi1hbmQtY2xv
c2Utd2luZG93Lmh0bWwgKi87IH07CisJCUNFQkFCRDQ5MUI3MTY4N0MwMDUxMjEwQSAvKiBzaG91
bGQtb3Blbi1leHRlcm5hbC1zY2hlbWVzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VCQUJENDgxQjcxNjg3QzAwNTEyMTBBIC8qIHNo
b3VsZC1vcGVuLWV4dGVybmFsLXNjaGVtZXMuaHRtbCAqLzsgfTsKIAkJRTEyMjBEQ0ExNTVCMjhB
QTAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRl
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTEyMjBEQzkxNTVCMjg3RDAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJl
c291cmNlTG9hZERlbGVnYXRlLmh0bWwgKi87IH07CiAJCUUxOTRFMUJEMTc3RTUzQzcwMDlDNEQ0
RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTk0RTFCQzE3N0U1MzRB
MDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgKi87IH07
CiAJCUUxOURCOTc5MUIzMjEzN0MwMERCMzhENCAvKiBOYXZpZ2F0b3JMYW5ndWFnZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOURCOTc4MUIzMjEz
N0MwMERCMzhENCAvKiBOYXZpZ2F0b3JMYW5ndWFnZS5tbSAqLzsgfTsKQEAgLTQwMyw2ICs0MDQs
NyBAQAogCQkJCTUxRTVDNzAyMTkxOUMzQjIwMEQ4QjNFMSAvKiBzaW1wbGUyLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkJNTFFNUM3MDMxOTE5QzNCMjAwRDhCM0UxIC8qIHNpbXBsZTMu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDMDFBMjNGMjEyNjYxNTY3MDBDOUVENTUg
Lyogc3BhY2ViYXItc2Nyb2xsaW5nLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJQ0VC
QUJENDkxQjcxNjg3QzAwNTEyMTBBIC8qIHNob3VsZC1vcGVuLWV4dGVybmFsLXNjaGVtZXMuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlFMTk0RTFCRDE3N0U1M0M3MDA5QzRENEUgLyog
U3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJQ0Q1OUY1MzUxOUU5MTEwRDAwQ0YxODM1IC8qIHRlc3QtbXNlLm1wNCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQk1MjRCQkNBMTE5RTMwQzc3MDAyRjFBRjEgLyogdGVzdC5tcDQg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC03MjYsNiArNzI4LDcgQEAKIAkJQ0UzNTI0RjUxQjE0
MkJCQjAwMjhBN0M1IC8qIGlucHV0LWZvY3VzLWJsdXIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9ICJpbnB1dC1mb2N1cy1ibHVyLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRUE2Q0YyMjE5Q0NGNUJEMDA2NEY1QTcgLyogT3BlbkFuZENsb3NlV2luZG93Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gT3BlbkFuZENsb3NlV2lu
ZG93Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUE2Q0YyNzE5Q0NGNjlEMDA2
NEY1QTcgLyogb3Blbi1hbmQtY2xvc2Utd2luZG93Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAib3Blbi1hbmQt
Y2xvc2Utd2luZG93Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRUJBQkQ0
ODFCNzE2ODdDMDA1MTIxMEEgLyogc2hvdWxkLW9wZW4tZXh0ZXJuYWwtc2NoZW1lcy5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gInNob3VsZC1vcGVuLWV4dGVybmFsLXNjaGVtZXMuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxMjIwRDlGMTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlDYWNo
ZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9h
ZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTIyMERDOTE1NUIy
ODdEMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdh
dGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IE1lbW9yeUNhY2hlRGlzYWJsZVdp
dGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUxOTRFMUJBMTc3RTUxNDUwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZl
UmVzcG9uc2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdG9w
TG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMTYzLDYgKzExNjYsNyBAQAogCQkJCUJDOTA5Nzc4MTI1NTcxQUIwMDA4Mzc1NiAv
KiBzaW1wbGUuaHRtbCAqLywKIAkJCQk1MUU3ODAzNjE5MTlBRkY4MDAxODI5QTIgLyogc2ltcGxl
Mi5odG1sICovLAogCQkJCTUxRTc4MDM3MTkxOUFGRjgwMDE4MjlBMiAvKiBzaW1wbGUzLmh0bWwg
Ki8sCisJCQkJQ0VCQUJENDgxQjcxNjg3QzAwNTEyMTBBIC8qIHNob3VsZC1vcGVuLWV4dGVybmFs
LXNjaGVtZXMuaHRtbCAqLywKIAkJCQlDMDJCNzg4MjEyNjYxNTQxMDAyNkJGMEYgLyogc3BhY2Vi
YXItc2Nyb2xsaW5nLmh0bWwgKi8sCiAJCQkJQ0Q1OUY1MzMxOUU5MTBCQzAwQ0YxODM1IC8qIHRl
c3QtbXNlLm1wNCAqLywKIAkJCQk1MjRCQkNBMDE5RTMwQzYzMDAyRjFBRjEgLyogdGVzdC5tcDQg
Ki8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvc2hvdWxk
LW9wZW4tZXh0ZXJuYWwtc2NoZW1lcy5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL3Nob3VsZC1vcGVuLWV4dGVybmFsLXNjaGVtZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTll
NGQ2NmFkMjZjMDBmNWM2YzMzY2NhMTVjNjI3N2UzOWNhMmQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3Nob3VsZC1vcGVuLWV4dGVybmFsLXNj
aGVtZXMuaHRtbApAQCAtMCwwICsxLDIxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gbmF2aWdhdGVUb1RlbFVSTCgpCit7CisgICAgIHdpbmRv
dy5sb2NhdGlvbi5ocmVmID0gInRlbDorMSAoNDA4KSA5OTYtMTAxMCI7Cit9CisKK2Z1bmN0aW9u
IG5hdmlnYXRlVG9UZWxVUkxJblplcm9UaW1lcigpCit7CisgICAgd2luZG93LnNldFRpbWVvdXQo
bmF2aWdhdGVUb1RlbFVSTCwgMCk7Cit9CisKK2Z1bmN0aW9uIG5hdmlnYXRlVG9UZWxVUkxJbk5l
c3RlZFplcm9UaW1lcigpCit7CisgICAgd2luZG93LnNldFRpbWVvdXQobmF2aWdhdGVUb1RlbFVS
TEluWmVyb1RpbWVyLCAwKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvU2hvdWxkT3BlbkV4
dGVybmFsVVJMc0luTmV3V2luZG93QWN0aW9ucy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0MkNvY29hL1Nob3VsZE9wZW5FeHRlcm5hbFVSTHNJbk5ld1dpbmRvd0FjdGlvbnMu
bW0KaW5kZXggMjI2NGE3NDRiN2ZkZDEyOGNjYmM5NjcyYWUzODNlYWQxZDQ2NWYyYS4uYjI0OWQw
YWQ3ODIxZGYyZjZlYzMzNWVjOTMwZWUyZDhiYjZiMzRlYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvU2hvdWxkT3BlbkV4dGVybmFsVVJMc0luTmV3
V2luZG93QWN0aW9ucy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJD
b2NvYS9TaG91bGRPcGVuRXh0ZXJuYWxVUkxzSW5OZXdXaW5kb3dBY3Rpb25zLm1tCkBAIC0yOSw2
ICsyOSw3IEBACiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxXZWJL
aXQvV0tOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmll
d1ByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFdLX0FQSV9FTkFC
TEVECkBAIC0yMDYsNiArMjA3LDQ4IEBAIFRFU1QoV2ViS2l0MiwgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc0luVGFyZ2V0ZWRMaW5rKQogICAgIGFjdGlvbiA9IG51bGxwdHI7CiB9CiAKK1RFU1QoV2Vi
S2l0MiwgUmVzdG9yZVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lBZnRlckNyYXNoKQorewor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBhdXRvIHdpbmRvdyA9IGFkb3B0
TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0g
c3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1
ZmZlcmVkIGRlZmVyOllFU10pOworICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3
OndlYlZpZXcuZ2V0KCldOworICAgIGF1dG8gY29udHJvbGxlciA9IGFkb3B0TlMoW1tTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzSW5OZXdXaW5kb3dBY3Rpb25zQ29udHJvbGxlciBhbGxvY10gaW5pdF0p
OworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpjb250cm9sbGVyLmdldCgpXTsK
KyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmNvbnRyb2xsZXIuZ2V0KCldOworCisgICAgZmlu
aXNoZWROYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJl
c291cmNlOkAic2hvdWxkLW9wZW4tZXh0ZXJuYWwtc2NoZW1lcyIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZmluaXNoZWROYXZpZ2F0aW9uKTsKKyAgICBmaW5pc2hlZE5hdmlnYXRpb24gPSBmYWxzZTsKKwor
ICAgIC8vIEJlZm9yZSBjcmFzaAorICAgIGRlY2lkZWRQb2xpY3kgPSBmYWxzZTsKKyAgICBbd2Vi
VmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJuYXZpZ2F0ZVRvVGVsVVJMSW5OZXN0ZWRaZXJvVGlt
ZXIoKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsgLy8gTm9uLXVzZXIgaW5pdGlhdGVkIG5hdmln
YXRpb24gYmVjYXVzZSBpdCBpcyBwZXJmb3JtZWQgaW4gYSBuZXN0ZWQgdGltZXIgY2FsbGJhY2su
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkZWNpZGVkUG9saWN5KTsKKyAgICBkZWNp
ZGVkUG9saWN5ID0gZmFsc2U7CisKKyAgICBBU1NFUlRfVFJVRShbYWN0aW9uIF9zaG91bGRPcGVu
RXh0ZXJuYWxTY2hlbWVzXSk7CisgICAgQVNTRVJUX0ZBTFNFKFthY3Rpb24gX3Nob3VsZE9wZW5B
cHBMaW5rc10pOworCisgICAgLy8gQ3Jhc2gKKyAgICBbd2ViVmlldyBfa2lsbFdlYkNvbnRlbnRQ
cm9jZXNzQW5kUmVzZXRTdGF0ZV07CisgICAgW3dlYlZpZXcgcmVsb2FkXTsKKworICAgIGZpbmlz
aGVkTmF2aWdhdGlvbiA9IGZhbHNlOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmlu
aXNoZWROYXZpZ2F0aW9uKTsKKyAgICBmaW5pc2hlZE5hdmlnYXRpb24gPSBmYWxzZTsKKworICAg
IC8vIEFmdGVyIGNyYXNoCisgICAgZGVjaWRlZFBvbGljeSA9IGZhbHNlOworICAgIFt3ZWJWaWV3
IGV2YWx1YXRlSmF2YVNjcmlwdDpAIm5hdmlnYXRlVG9UZWxVUkxJbk5lc3RlZFplcm9UaW1lcigp
IiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOyAvLyBOb24tdXNlciBpbml0aWF0ZWQgbmF2aWdhdGlv
biBiZWNhdXNlIGl0IGlzIHBlcmZvcm1lZCBpbiBhIG5lc3RlZCB0aW1lciBjYWxsYmFjay4KKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRlY2lkZWRQb2xpY3kpOworICAgIGRlY2lkZWRQ
b2xpY3kgPSBmYWxzZTsKKworICAgIEFTU0VSVF9UUlVFKFthY3Rpb24gX3Nob3VsZE9wZW5FeHRl
cm5hbFNjaGVtZXNdKTsKKyAgICBBU1NFUlRfRkFMU0UoW2FjdGlvbiBfc2hvdWxkT3BlbkFwcExp
bmtzXSk7Cit9OworCiAjZW5kaWYKIAogI2VuZGlmCg==
</data>
<flag name="review"
          id="283440"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>