<?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>147578</bug_id>
          
          <creation_ts>2015-08-03 11:43:30 -0700</creation_ts>
          <short_desc>Web Inspector: Add Visual editors for CSS properties with comma separated values</short_desc>
          <delta_ts>2015-08-14 13:05:35 -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>Web Inspector</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</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>147576</dependson>
    
    <dependson>147579</dependson>
          <blocked>147563</blocked>
    
    <blocked>147570</blocked>
    
    <blocked>147623</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>agomez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1114274</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-03 11:43:30 -0700</bug_when>
    <thetext>Add tree outline style list editors for CSS properties with comma separated values.  Will be use in the new Visual style details panel in the CSS sidebar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114281</commentid>
    <comment_count>1</comment_count>
      <attachid>258094</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-03 11:48:07 -0700</bug_when>
    <thetext>Created attachment 258094
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115223</commentid>
    <comment_count>2</comment_count>
      <attachid>258332</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-05 18:27:35 -0700</bug_when>
    <thetext>Created attachment 258332
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115666</commentid>
    <comment_count>3</comment_count>
      <attachid>258462</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-06 23:22:36 -0700</bug_when>
    <thetext>Created attachment 258462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116900</commentid>
    <comment_count>4</comment_count>
      <attachid>258462</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-08-11 23:16:32 -0700</bug_when>
    <thetext>Comment on attachment 258462
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Images/Minus.svg:2
&gt; +&lt;!-- Copyright Â© 2014 Apple Inc. All rights reserved. --&gt;

2015

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:124
&gt; +    _onTreeItemSelect(item, selectedByUser)

No on prefix. Just _treeElementSelected. Also why item and not treeElement? It would tell you more what it is.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:137
&gt; +        let newItem = this._addCommaSeparatedKeyword(null, this._commaSeparatedKeywords.selectedTreeElementIndex);

newTreeElement?

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:152
&gt; +        for (let treeItem of this._commaSeparatedKeywords.children) {

treeElement

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:167
&gt; +        if (indexIsSet) {
&gt; +            this._commaSeparatedKeywords.insertChild(valueElement, indexIsSet ? index + !this._insertNewItemsBeforeSelected : 0);
&gt; +        } else

Nit: No need for the braces.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:175
&gt; +        if (!treeElement)

See!

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:185
&gt; +    _createNewListItem(value)

_createNewTreeElement

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleFontFamilyListEditor.js:92
&gt; +    _itemEditorKeyDown(event)

_treeElementKeyDown

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleFontFamilyListEditor.js:136
&gt; +        let treeItem = this._commaSeparatedKeywords.selectedTreeElement;

treeElement

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleFontFamilyTreeItem.js:26
&gt; +WebInspector.VisualStyleFontFamilyTreeItem = class VisualStyleFontFamilyTreeItem extends WebInspector.GeneralTreeElement

VisualStyleFontFamilyTreeElement. Classes should always end in a common suffix as what they subclass.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleFontFamilyTreeItem.js:34
&gt; +        this._keywordEditor.placeholder = &quot;(&quot; + WebInspector.UIString(&quot;modify the boxes below to add a value&quot;) + &quot;)&quot;;

The () should be part of the UIString. I am also not sure the () are needed. Sentence case with a period might be best. Is a placeholder even needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116908</commentid>
    <comment_count>5</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-11 23:45:50 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleFontFamilyTreeItem.js:34
&gt; &gt; +        this._keywordEditor.placeholder = &quot;(&quot; + WebInspector.UIString(&quot;modify the boxes below to add a value&quot;) + &quot;)&quot;;
&gt; 
&gt; The () should be part of the UIString. I am also not sure the () are needed.
&gt; Sentence case with a period might be best. Is a placeholder even needed?

Not having a placeholder made the empty rows appear very odd when the list is empty, as it would appear as a blue row with nothing in it.  I added the parenthesis to make it clear that the text was not meant to be the actual value and more like a hint, but I can remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116914</commentid>
    <comment_count>6</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-08-12 00:00:42 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; &gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleFontFamilyTreeItem.js:34
&gt; &gt; &gt; +        this._keywordEditor.placeholder = &quot;(&quot; + WebInspector.UIString(&quot;modify the boxes below to add a value&quot;) + &quot;)&quot;;
&gt; &gt; 
&gt; &gt; The () should be part of the UIString. I am also not sure the () are needed.
&gt; &gt; Sentence case with a period might be best. Is a placeholder even needed?
&gt; 
&gt; Not having a placeholder made the empty rows appear very odd when the list
&gt; is empty, as it would appear as a blue row with nothing in it.  I added the
&gt; parenthesis to make it clear that the text was not meant to be the actual
&gt; value and more like a hint, but I can remove it.

Okay, I think the parenthesis is fine. It should just be localized. Not all locales use the same parenthesis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117602</commentid>
    <comment_count>7</comment_count>
      <attachid>258991</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-14 00:19:30 -0700</bug_when>
    <thetext>Created attachment 258991
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117604</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-08-14 00:20:04 -0700</bug_when>
    <thetext>&lt;rdar://problem/22283812&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117670</commentid>
    <comment_count>9</comment_count>
      <attachid>258991</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-08-14 11:00:50 -0700</bug_when>
    <thetext>Comment on attachment 258991
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.css:115
&gt; +    filter: opacity(0.7);

opacity: 0.7;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117702</commentid>
    <comment_count>10</comment_count>
      <attachid>259019</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-14 12:13:33 -0700</bug_when>
    <thetext>Created attachment 259019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117723</commentid>
    <comment_count>11</comment_count>
      <attachid>259019</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-14 13:05:30 -0700</bug_when>
    <thetext>Comment on attachment 259019
Patch

Clearing flags on attachment: 259019

Committed r188483: &lt;http://trac.webkit.org/changeset/188483&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117724</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-14 13:05:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258094</attachid>
            <date>2015-08-03 11:48:07 -0700</date>
            <delta_ts>2015-08-05 18:27:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147578-20150803114801.patch</filename>
            <type>text/plain</type>
            <size>35549</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGQzYzhiODQyZTNjZGQ1ODc0N2E4MzFmN2M0MmM2
OTUyZTMzNzA0OWEuLmVmNzJjYWUxNjk0YTI1Njc3YTdmNmQyYmNiNWRlODkzYjQyZTEyMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE1LTA4LTAzICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgVmlzdWFsIGVkaXRvcnMgZm9yIENTUyBwcm9wZXJ0aWVzIHdpdGggY29tbWEgc2VwYXJhdGVk
IHZhbHVlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ3NTc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0ltYWdlcy9NaW51cy5zdmc6IEFkZGVkLgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVHJl
ZU91dGxpbmUucHJvdG90eXBlLmdldCBzZWxlY3RlZFRyZWVFbGVtZW50SW5kZXgpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLmNzczogQWRkZWQuCisg
ICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQt
a2V5d29yZC1lZGl0b3IpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWlu
ZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS12YWx1ZS1jb250YWluZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250
YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3
b3JkLWxpc3QpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29t
bWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1
ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3Qg
PiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0pOgorICAgICAgICAo
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQt
ZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFs
LXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1h
LXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW06bnRoLWNoaWxkKG9kZCkpOgorICAgICAgICAoLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9y
ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxl
LWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFy
YXRlZC1rZXl3b3JkLWl0ZW0uc2VsZWN0ZWQpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFy
YXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3Jk
LWl0ZW0gPiA6bWF0Y2hlcyhidXR0b24sIGltZykpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNl
cGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3
b3JkLWl0ZW0gPiAudGl0bGVzKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5
d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtLnZp
c3VhbC1zdHlsZS1mb250LWZhbWlseS1saXN0LWl0ZW0uc2VsZWN0ZWQ6bm90KC5lZGl0b3ItaGlk
ZGVuKSA+IC50aXRsZXMgPiAqKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5
d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtLnZp
c3VhbC1zdHlsZS1mb250LWZhbWlseS1saXN0LWl0ZW0gPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNl
cGFyYXRlZC1rZXl3b3JkLWl0ZW0tZWRpdG9yKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwt
c3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBh
cmF0ZWQta2V5d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29y
ZC1pdGVtLnZpc3VhbC1zdHlsZS1mb250LWZhbWlseS1saXN0LWl0ZW0uZWRpdG9yLWhpZGRlbiA+
IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbS1lZGl0b3IpOgorICAg
ICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtl
eXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAu
dmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxl
LWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0gPiAudGl0bGVzID4gLnN1YnRpdGxlKToKKyAg
ICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1r
ZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4g
LnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1saXN0ID4gLnZpc3VhbC1zdHls
ZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtOm5vdCgubm8tdmFsdWUpID4gLnRpdGxlcyA+
IC5zdWJ0aXRsZSk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5j
b21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZh
bHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtY29u
dHJvbHMpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEt
c2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1j
b250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWNvbnRyb2xz
ID4gZGl2KToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1h
LXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUt
Y29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1jb250cm9s
cyA+IC52aXN1YWwtc3R5bGUtcmVtb3ZlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkKToKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3Jk
RWRpdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1h
U2VwYXJhdGVkS2V5d29yZEVkaXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IucHJvdG90eXBlLnNldCBzZWxlY3RlZFRyZWVF
bGVtZW50VmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBh
cmF0ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlwZS5nZXQgdmFsdWUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlwZS5z
ZXQgdmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0
ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlwZS5nZXQgc3ludGhlc2l6ZWRWYWx1ZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IucHJv
dG90eXBlLl9vblRyZWVJdGVtU2VsZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5wcm90b3R5cGUuX3RyZWVJdGVtSXNFbXB0
eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdv
cmRFZGl0b3IucHJvdG90eXBlLl9hZGRFbXB0eUNvbW1hU2VwYXJhdGVkS2V5d29yZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3Iu
cHJvdG90eXBlLl9yZW1vdmVTZWxlY3RlZENvbW1hU2VwYXJhdGVkS2V5d29yZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IucHJv
dG90eXBlLl9yZW1vdmVFbXB0eUNvbW1hU2VwYXJhdGVkS2V5d29yZHMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlw
ZS5fYWRkQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5wcm90b3R5cGUuX3JlbW92ZUNvbW1h
U2VwYXJhdGVkS2V5d29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21t
YVNlcGFyYXRlZEtleXdvcmRFZGl0b3IucHJvdG90eXBlLl9jcmVhdGVOZXdMaXN0SXRlbSk6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRp
dG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1p
bHlMaXN0RWRpdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1p
bHlMaXN0RWRpdG9yLnByb3RvdHlwZS5jb21wbGV0aW9uU3VnZ2VzdGlvbnNPbkl0ZW1DcmVhdGVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9y
LnByb3RvdHlwZS5nZXQgaGFzQ29tcGxldGlvbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlRm9udEZhbWlseUxpc3RFZGl0b3IucHJvdG90eXBlLnNldCBjb21wbGV0aW9ucyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvci5w
cm90b3R5cGUuX21vZGlmeUNvbW1hU2VwYXJhdGVkS2V5d29yZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvci5wcm90b3R5cGUuX2FkZENvbW1h
U2VwYXJhdGVkS2V5d29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250
RmFtaWx5TGlzdEVkaXRvci5wcm90b3R5cGUuX2FkZEVtcHR5Q29tbWFTZXBhcmF0ZWRLZXl3b3Jk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9y
LnByb3RvdHlwZS5fY29tcGxldGlvbkNsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlRm9udEZhbWlseUxpc3RFZGl0b3IucHJvdG90eXBlLl9pdGVtRWRpdG9yS2V5RG93
bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRv
ci5wcm90b3R5cGUuX2l0ZW1FZGl0b3JLZXl3b3JkQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvci5wcm90b3R5cGUuX2hpZGVDb21w
bGV0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlz
dEVkaXRvci5wcm90b3R5cGUuX2NyZWF0ZU5ld0xpc3RJdGVtKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RJdGVtLmpzOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0SXRlbSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEl0ZW0ucHJvdG90eXBl
LmVkaXRvckJvdW5kcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFt
aWx5TGlzdEl0ZW0ucHJvdG90eXBlLnVwZGF0ZU1haW5UaXRsZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEl0ZW0ucHJvdG90eXBlLnNob3dLZXl3b3Jk
RWRpdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0
SXRlbS5wcm90b3R5cGUuaGlkZUtleXdvcmRFZGl0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RJdGVtLnByb3RvdHlwZS5nZXQga2V5d29yZEVkaXRv
ckhpZGRlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlz
dEl0ZW0ucHJvdG90eXBlLm9uYXR0YWNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZUZvbnRGYW1pbHlMaXN0SXRlbS5wcm90b3R5cGUub25kZXNlbGVjdCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEl0ZW0ucHJvdG90eXBlLl9rZXl3
b3JkRWRpdG9yS2V5RG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250
RmFtaWx5TGlzdEl0ZW0ucHJvdG90eXBlLl9rZXl3b3JkRWRpdG9yS2V5VXApOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RJdGVtLnByb3RvdHlwZS5fa2V5
d29yZEVkaXRvckJsdXJyZWQpOgorCiAyMDE1LTA4LTAyICBNYXR0IEJha2VyICA8bWF0dGJha2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBVbm5hbWVzcGFjZWQgRm9ybWF0
dGVyIGNsYXNzZXMgYnJlYWsgQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9NaW51cy5zdmcg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvTWludXMuc3ZnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY5ZTU3NmVkZDZkY2FjMjZjODI5ZTk1MzllNmQ4ZDUwZDUyOTJhZDgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMv
TWludXMuc3ZnCkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
dXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IMKpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLiAtLT4KKzxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMyAxMyI+CisgICAgPGxpbmUgY2xhc3M9InN0cm9rZWQi
IGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIHgxPSIxLjUiIHkxPSI2LjUiIHgyPSIxMS41IiB5
Mj0iNi41Ii8+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKaW5kZXggZDVkMDdjNTk2ZDRjYTI2ZTkz
MjllNWEyZGFhMmUxODc3NmVlYTk4My4uMGE4MmMxMzc2OTcyNzYyYTgyYzUwMjQwMDkwMTIwZmIz
Njc2NTllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVHJlZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKQEAgLTUwNCw2ICs1MDQsMTkgQEAgV2ViSW5zcGVj
dG9yLlRyZWVPdXRsaW5lID0gY2xhc3MgVHJlZU91dGxpbmUgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
T2JqZWN0CiAgICAgewogICAgICAgICAvLyB0aGlzIGlzIHRoZSByb290LCBkbyBub3RoaW5nCiAg
ICAgfQorCisgICAgZ2V0IHNlbGVjdGVkVHJlZUVsZW1lbnRJbmRleCgpCisgICAgeworICAgICAg
ICBpZiAoIXRoaXMuaGFzQ2hpbGRyZW4gfHwgIXRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hp
bGRyZW4ubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmNoaWxkcmVuW2ldID09
PSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGk7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogfTsKIAogV2ViSW5zcGVj
dG9yLlRyZWVPdXRsaW5lLl9rbm93blRyZWVFbGVtZW50TmV4dElkZW50aWZpZXIgPSAxOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFs
U3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuY3NzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRF
ZGl0b3IuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjZmY5OGMzZGU4YzY4MDk0MzcwMWE4ODMwNjMyMTE5MWM5
YTI2ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5jc3MKQEAg
LTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRh
aW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgeworICAgIG1hcmdpbi1ib3R0b206
IDVweDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJh
dGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWlu
ZXIgeworICAgIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JleTsKKyAgICBvdmVyZmxvdzogYXV0
bzsKKyAgICBmb250LXNpemU6IDExcHg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5
d29yZC1saXN0IHsKKyAgICBtaW4taGVpZ2h0OiA0MnB4OworICAgIG1heC1oZWlnaHQ6IDcycHg7
CisgICAgbWFyZ2luOiAwOworICAgIHBhZGRpbmc6IDA7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
cmdiKDI0MiwgMjQyLCAyNDIpOworICAgIG92ZXJmbG93OiBhdXRvOworICAgIG91dGxpbmU6IG5v
bmU7CisgICAgbGlzdC1zdHlsZS10eXBlOiBub25lOworfQorCisudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJh
dGVkLWtleXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQt
aXRlbSB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHdpZHRoOiAxMDAlOworICAgIGhl
aWdodDogMTNweDsKKyAgICBsaW5lLWhlaWdodDogMTNweDsKKyAgICBvdmVyZmxvdzogaGlkZGVu
OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQt
a2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+
IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5
bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbTpudGgtY2hpbGQob2RkKSB7CisgICAgYmFj
a2dyb3VuZC1jb2xvcjogd2hpdGU7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFp
bmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVy
dHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29y
ZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtLnNlbGVj
dGVkIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMzQsIDEzMSwgMjQ2KSAhaW1wb3J0YW50
OworICAgIGNvbG9yOiB3aGl0ZTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWlu
ZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3Jk
LWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0gPiA6bWF0
Y2hlcyhidXR0b24sIGltZykgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy52aXN1YWwtc3R5
bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52
aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21t
YS1zZXBhcmF0ZWQta2V5d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQt
a2V5d29yZC1pdGVtID4gLnRpdGxlcyB7CisgICAgcGFkZGluZy1sZWZ0OiAzcHg7Cit9CisKKy52
aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVk
aXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1z
dHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1z
ZXBhcmF0ZWQta2V5d29yZC1pdGVtLnZpc3VhbC1zdHlsZS1mb250LWZhbWlseS1saXN0LWl0ZW0u
c2VsZWN0ZWQ6bm90KC5lZGl0b3ItaGlkZGVuKSA+IC50aXRsZXMgPiAqIHsKKyAgICBjb2xvcjog
dHJhbnNwYXJlbnQ7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1h
LXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUt
Y29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1saXN0ID4g
LnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtLnZpc3VhbC1zdHlsZS1m
b250LWZhbWlseS1saXN0LWl0ZW0gPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3
b3JkLWl0ZW0tZWRpdG9yIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOwor
ICAgIHJpZ2h0OiAzcHg7CisgICAgYm90dG9tOiAwOworICAgIGxlZnQ6IDNweDsKKyAgICBtYXJn
aW46IDA7CisgICAgcGFkZGluZzogMDsKKyAgICBsaW5lLWhlaWdodDogMTNweDsKKyAgICBib3Jk
ZXI6IG5vbmU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgZm9udC1m
YW1pbHk6IGluaGVyaXQ7CisgICAgY29sb3I6IHdoaXRlOworICAgIHotaW5kZXg6IDE7Cit9CisK
Ky52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3Jk
LWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3Vh
bC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21t
YS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtLnZpc3VhbC1zdHlsZS1mb250LWZhbWlseS1saXN0LWl0
ZW0uZWRpdG9yLWhpZGRlbiA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQt
aXRlbS1lZGl0b3IgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwt
c3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBh
cmF0ZWQta2V5d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29y
ZC1pdGVtID4gLnRpdGxlcyA+IC5zdWJ0aXRsZSB7CisgICAgZm9udC1zaXplOiA5cHg7CisgICAg
Y29sb3I6IGxpZ2h0Z3JleTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIu
Y29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12
YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxp
c3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW06bm90KC5uby12
YWx1ZSkgPiAudGl0bGVzID4gLnN1YnRpdGxlIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1l
ZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwt
c3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtY29udHJvbHMgeworICAgIGRpc3BsYXk6IGZs
ZXg7CisgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGxpZ2h0Z3JleTsKK30KKworLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNv
bW1hLXNlcGFyYXRlZC1rZXl3b3JkLWNvbnRyb2xzID4gZGl2IHsKKyAgICB3aWR0aDogMjBweDsK
KyAgICBoZWlnaHQ6IDE5cHg7CisgICAgcGFkZGluZzogNHB4OworICAgIGJvcmRlci1yaWdodDog
MXB4IHNvbGlkIGxpZ2h0Z3JleTsKKyAgICBvcGFjaXR5OiAwLjc7Cit9CisKKy52aXN1YWwtc3R5
bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52
aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21t
YS1zZXBhcmF0ZWQta2V5d29yZC1jb250cm9scyA+IC52aXN1YWwtc3R5bGUtcmVtb3ZlLWNvbW1h
LXNlcGFyYXRlZC1rZXl3b3JkIHsKKyAgICBvcmRlcjogMjsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBh
cmF0ZWRLZXl3b3JkRWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjJjMTI4MDA1NGJlODdhYTVmNmQxNmQxMGUyYWUwODMxMjMxMDBmYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3Vh
bFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLmpzCkBAIC0wLDAgKzEsMTk2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3Jk
RWRpdG9yID0gY2xhc3MgVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvcgoreworICAgIGNvbnN0
cnVjdG9yKHByb3BlcnR5TmFtZXMsIHRleHQsIGluc2VydE5ld0l0ZW1zQmVmb3JlU2VsZWN0ZWQs
IGxheW91dFJldmVyc2VkKQorICAgIHsKKyAgICAgICAgc3VwZXIocHJvcGVydHlOYW1lcywgdGV4
dCwgbnVsbCwgbnVsbCwgImNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciIsIGxheW91dFJl
dmVyc2VkKTsKKworICAgICAgICB0aGlzLl9pbnNlcnROZXdJdGVtc0JlZm9yZVNlbGVjdGVkID0g
aW5zZXJ0TmV3SXRlbXNCZWZvcmVTZWxlY3RlZCB8fCBmYWxzZTsKKworICAgICAgICB2YXIgbGlz
dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOworICAgICAgICBsaXN0RWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQt
bGlzdCIpOworICAgICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZChsaXN0RWxl
bWVudCk7CisKKyAgICAgICAgdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3JkcyA9IG5ldyBXZWJJ
bnNwZWN0b3IuVHJlZU91dGxpbmUobGlzdEVsZW1lbnQpOworICAgICAgICB0aGlzLl9jb21tYVNl
cGFyYXRlZEtleXdvcmRzLm9uc2VsZWN0ID0gdGhpcy5fb25UcmVlSXRlbVNlbGVjdC5iaW5kKHRo
aXMpOworCisgICAgICAgIHZhciBjb250cm9sQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgICAgIGNvbnRyb2xDb250YWluZXIuY2xhc3NMaXN0LmFkZCgidmlz
dWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWNvbnRyb2xzIik7CisgICAgICAgIHRo
aXMuX2NvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKGNvbnRyb2xDb250YWluZXIpOworCisgICAg
ICAgIHdyYXBwZWRTVkdEb2N1bWVudCgiSW1hZ2VzL1BsdXMuc3ZnIiwgInZpc3VhbC1zdHlsZS1h
ZGQtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsaWNr
IHRvIGFkZCBhIG5ldyBpdGVtLiIpLCBmdW5jdGlvbih3cmFwcGVyKSB7CisgICAgICAgICAgICB3
cmFwcGVyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fYWRkRW1wdHlDb21tYVNlcGFy
YXRlZEtleXdvcmQuYmluZCh0aGlzKSk7CisgICAgICAgICAgICBjb250cm9sQ29udGFpbmVyLmFw
cGVuZENoaWxkKHdyYXBwZXIpOworICAgICAgICB9LmJpbmQodGhpcykpOworCisgICAgICAgIHdy
YXBwZWRTVkdEb2N1bWVudCgiSW1hZ2VzL01pbnVzLnN2ZyIsICJ2aXN1YWwtc3R5bGUtcmVtb3Zl
LWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDbGljayB0
byByZW1vdmUgdGhlIHNlbGVjdGVkIGl0ZW0uIiksIGZ1bmN0aW9uKHdyYXBwZXIpIHsKKyAgICAg
ICAgICAgIHdyYXBwZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9yZW1vdmVTZWxl
Y3RlZENvbW1hU2VwYXJhdGVkS2V5d29yZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIGNvbnRy
b2xDb250YWluZXIuYXBwZW5kQ2hpbGQod3JhcHBlcik7CisgICAgICAgIH0uYmluZCh0aGlzKSk7
CisKKyAgICAgICAgdGhpcy5fdmFsdWVSZWdFeHAgPSAvKFxiLitcYikvOworICAgIH0KKworICAg
IC8vIFB1YmxpYworCisgICAgc2V0IHNlbGVjdGVkVHJlZUVsZW1lbnRWYWx1ZSh0ZXh0KQorICAg
IHsKKyAgICAgICAgdmFyIHNlbGVjdGVkVHJlZUVsZW1lbnQgPSB0aGlzLl9jb21tYVNlcGFyYXRl
ZEtleXdvcmRzLnNlbGVjdGVkVHJlZUVsZW1lbnQ7CisgICAgICAgIGlmICghc2VsZWN0ZWRUcmVl
RWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBzZWxlY3RlZFRyZWVFbGVt
ZW50LmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgibm8tdmFsdWUiLCAhdGV4dCB8fCAhdGV4dC5s
ZW5ndGgpOworICAgICAgICBzZWxlY3RlZFRyZWVFbGVtZW50Lm1haW5UaXRsZSA9IHRleHQ7Cisg
ICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgfQorCisgICAgZ2V0IHZhbHVlKCkK
KyAgICB7CisgICAgICAgIGlmICghdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5oYXNDaGls
ZHJlbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgdmFsdWUgPSAiIjsKKwor
ICAgICAgICBmb3IgKHZhciB0cmVlSXRlbSBvZiB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRz
LmNoaWxkcmVuKSB7CisgICAgICAgICAgICBpZiAodGhpcy5fdHJlZUl0ZW1Jc0VtcHR5KHRyZWVJ
dGVtKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKHZhbHVl
Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICB2YWx1ZSArPSAiLCAiOworCisgICAgICAgICAgICB2
YXIgdGV4dCA9IHRyZWVJdGVtLm1haW5UaXRsZTsKKworICAgICAgICAgICAgaWYgKHR5cGVvZiB0
aGlzLl9tb2RpZnlDb21tYVNlcGFyYXRlZEtleXdvcmQgPT09ICJmdW5jdGlvbiIpCisgICAgICAg
ICAgICAgICAgdGV4dCA9IHRoaXMuX21vZGlmeUNvbW1hU2VwYXJhdGVkS2V5d29yZCh0ZXh0KTsK
KworICAgICAgICAgICAgdmFsdWUgKz0gdGV4dDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biB2YWx1ZTsKKyAgICB9CisKKyAgICBzZXQgdmFsdWUoY29tbWFTZXBhcmF0ZWRWYWx1ZSkKKyAg
ICB7CisgICAgICAgIGlmIChjb21tYVNlcGFyYXRlZFZhbHVlICYmIGNvbW1hU2VwYXJhdGVkVmFs
dWUgPT09IHRoaXMudmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5f
Y29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5yZW1vdmVDaGlsZHJlbigpOworCisgICAgICAgIGlmICgh
Y29tbWFTZXBhcmF0ZWRWYWx1ZSB8fCAhY29tbWFTZXBhcmF0ZWRWYWx1ZS5sZW5ndGgpIHsKKyAg
ICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5FdmVudC5Ob1JlbWFpbmluZ1RyZWVJ
dGVtcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgdmFs
dWVzID0gY29tbWFTZXBhcmF0ZWRWYWx1ZS5zcGxpdCgvXHMqLFxzKig/IVteXChdKlwpKS8pOwor
ICAgICAgICBmb3IgKHZhciB2YWx1ZSBvZiB2YWx1ZXMpCisgICAgICAgICAgICB0aGlzLl9hZGRD
b21tYVNlcGFyYXRlZEtleXdvcmQodmFsdWUpOworCisgICAgICAgIHRoaXMuX2NvbW1hU2VwYXJh
dGVkS2V5d29yZHMuY2hpbGRyZW5bMF0uc2VsZWN0KHRydWUpOworICAgIH0KKworICAgIGdldCBz
eW50aGVzaXplZFZhbHVlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnZhbHVlOworICAg
IH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9vblRyZWVJdGVtU2VsZWN0KGl0ZW0sIHNlbGVj
dGVkQnlVc2VyKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVtb3ZlRW1wdHlDb21tYVNlcGFyYXRl
ZEtleXdvcmRzKCk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5FdmVudC5UcmVl
SXRlbVNlbGVjdGVkLCB7dGV4dDogaXRlbS5tYWluVGl0bGV9KTsKKyAgICB9CisKKyAgICBfdHJl
ZUl0ZW1Jc0VtcHR5KGl0ZW0pCisgICAgeworICAgICAgICByZXR1cm4gIWl0ZW0uX21haW5UaXRs
ZSB8fCAhaXRlbS5fbWFpblRpdGxlLmxlbmd0aDsKKyAgICB9CisKKyAgICBfYWRkRW1wdHlDb21t
YVNlcGFyYXRlZEtleXdvcmQoKQorICAgIHsKKyAgICAgICAgdmFyIG5ld0l0ZW0gPSB0aGlzLl9h
ZGRDb21tYVNlcGFyYXRlZEtleXdvcmQobnVsbCwgdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jk
cy5zZWxlY3RlZFRyZWVFbGVtZW50SW5kZXgpOworICAgICAgICBuZXdJdGVtLnN1YnRpdGxlID0g
IigiICsgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJtb2RpZnkgdGhlIGJveGVzIGJlbG93IHRvIGFk
ZCBhIHZhbHVlIikgKyAiKSI7CisgICAgICAgIG5ld0l0ZW0uZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJuby12YWx1ZSIpOworICAgICAgICBuZXdJdGVtLnNlbGVjdCh0cnVlLCB0cnVlKTsKKyAgICAg
ICAgcmV0dXJuIG5ld0l0ZW07CisgICAgfQorCisgICAgX3JlbW92ZVNlbGVjdGVkQ29tbWFTZXBh
cmF0ZWRLZXl3b3JkKCkKKyAgICB7CisgICAgICAgIHZhciBzZWxlY3RlZFRyZWVFbGVtZW50ID0g
dGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5zZWxlY3RlZFRyZWVFbGVtZW50OworICAgICAg
ICB0aGlzLl9yZW1vdmVDb21tYVNlcGFyYXRlZEtleXdvcmQoc2VsZWN0ZWRUcmVlRWxlbWVudCk7
CisgICAgfQorCisgICAgX3JlbW92ZUVtcHR5Q29tbWFTZXBhcmF0ZWRLZXl3b3JkcygpCisgICAg
eworICAgICAgICBmb3IgKHZhciB0cmVlSXRlbSBvZiB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdv
cmRzLmNoaWxkcmVuKSB7CisgICAgICAgICAgICBpZiAoIXRoaXMuX3RyZWVJdGVtSXNFbXB0eSh0
cmVlSXRlbSkgfHwgdHJlZUl0ZW0uc2VsZWN0ZWQpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIHRyZWVJdGVtLmRlc2VsZWN0KCk7CisgICAgICAgICAgICB0aGlzLl9y
ZW1vdmVDb21tYVNlcGFyYXRlZEtleXdvcmQodHJlZUl0ZW0pOworICAgICAgICB9CisgICAgfQor
CisgICAgX2FkZENvbW1hU2VwYXJhdGVkS2V5d29yZCh2YWx1ZSwgaW5kZXgpCisgICAgeworICAg
ICAgICB2YXIgdmFsdWVFbGVtZW50ID0gdGhpcy5fY3JlYXRlTmV3TGlzdEl0ZW0odmFsdWUpOwor
CisgICAgICAgIHZhciBpbmRleElzU2V0ID0gIWlzTmFOKGluZGV4KTsKKyAgICAgICAgaWYgKGlu
ZGV4SXNTZXQpIHsKKyAgICAgICAgICAgIHRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29yZHMuaW5z
ZXJ0Q2hpbGQodmFsdWVFbGVtZW50LCBpbmRleElzU2V0ID8gaW5kZXggKyAhdGhpcy5faW5zZXJ0
TmV3SXRlbXNCZWZvcmVTZWxlY3RlZCA6IDApOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IHRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29yZHMuYXBwZW5kQ2hpbGQodmFsdWVFbGVtZW50KTsK
KworICAgICAgICByZXR1cm4gdmFsdWVFbGVtZW50OworICAgIH0KKworICAgIF9yZW1vdmVDb21t
YVNlcGFyYXRlZEtleXdvcmQodHJlZUVsZW1lbnQpCisgICAgeworICAgICAgICBpZiAoIXRyZWVF
bGVtZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2NvbW1hU2VwYXJh
dGVkS2V5d29yZHMucmVtb3ZlQ2hpbGQodHJlZUVsZW1lbnQpOworCisgICAgICAgIGlmICghdGhp
cy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5jaGlsZHJlbi5sZW5ndGgpCisgICAgICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21t
YVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuRXZlbnQuTm9SZW1haW5pbmdUcmVlSXRlbXMpOworCisg
ICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgfQorCisgICAgX2NyZWF0ZU5ld0xp
c3RJdGVtKHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuR2Vu
ZXJhbFRyZWVFbGVtZW50KFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5
d29yZEVkaXRvci5MaXN0SXRlbUNsYXNzTmFtZSwgdmFsdWUpOworICAgIH0KK307CisKK1dlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5MaXN0SXRlbUNs
YXNzTmFtZSA9ICJ2aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbSI7CisK
K1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5FdmVu
dCA9IHsKKyAgICBUcmVlSXRlbVNlbGVjdGVkOiAidmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRl
ZC1rZXl3b3JkLWVkaXRvci10cmVlLWl0ZW0tc2VsZWN0ZWQiLAorICAgIE5vUmVtYWluaW5nVHJl
ZUl0ZW1zOiAidmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvci1uby1y
ZW1haW5pbmctdHJlZS1pdGVtcyIKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RFZGl0b3IuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUZv
bnRGYW1pbHlMaXN0RWRpdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3Mzk4YjEwYTRiNDQ1NTRjNGYzOWJi
YmYwNTY0ZjdiZjVmOTViNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9yLmpz
CkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
Rm9udEZhbWlseUxpc3RFZGl0b3IgPSBjbGFzcyBWaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRp
dG9yIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3Jk
RWRpdG9yCit7CisgICAgY29uc3RydWN0b3IocHJvcGVydHlOYW1lcywgdGV4dCwgbGF5b3V0UmV2
ZXJzZWQpCisgICAgeworICAgICAgICBzdXBlcihwcm9wZXJ0eU5hbWVzLCB0ZXh0LCB0cnVlLCBs
YXlvdXRSZXZlcnNlZCk7CisKKyAgICAgICAgdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5l
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHRoaXMuX2hpZGVDb21wbGV0aW9ucy5i
aW5kKHRoaXMpKTsKKworICAgICAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlciA9IG5ldyBX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21wbGV0aW9uc0NvbnRyb2xsZXIodGhpcyk7CisgICAg
ICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlQ29tcGxldGlvbnNDb250cm9sbGVyLkV2ZW50LkNvbXBsZXRpb25TZWxl
Y3RlZCwgdGhpcy5fY29tcGxldGlvbkNsaWNrZWQsIHRoaXMpOworCisgICAgICAgIHRoaXMuX3dy
YXBXaXRoUXVvdGVzUmVnRXhwID0gL15bYS16QS1aXC1dKyQvOworICAgICAgICB0aGlzLl9yZW1v
dmVXcmFwcGVkUXVvdGVzUmVnRXhwID0gL1tcIlwnXS9nOworICAgIH0KKworICAgIC8vIFB1Ymxp
YworCisgICAgY29tcGxldGlvblN1Z2dlc3Rpb25zT25JdGVtQ3JlYXRlZChlbGVtZW50LCBpdGVt
KQorICAgIHsKKyAgICAgICAgZWxlbWVudC5zdHlsZS5mb250RmFtaWx5ID0gaXRlbTsKKyAgICB9
CisKKyAgICBnZXQgaGFzQ29tcGxldGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X2NvbXBsZXRpb25Db250cm9sbGVyLmhhc0NvbXBsZXRpb25zOworICAgIH0KKworICAgIHNldCBj
b21wbGV0aW9ucyhjb21wbGV0aW9ucykKKyAgICB7CisgICAgICAgIHRoaXMuX2NvbXBsZXRpb25D
b250cm9sbGVyLmNvbXBsZXRpb25zID0gY29tcGxldGlvbnM7CisgICAgfQorCisgICAgLy8gUHJp
dmF0ZQorCisgICAgX21vZGlmeUNvbW1hU2VwYXJhdGVkS2V5d29yZCh0ZXh0KQorICAgIHsKKyAg
ICAgICAgaWYgKCF0aGlzLl93cmFwV2l0aFF1b3Rlc1JlZ0V4cC50ZXN0KHRleHQpKQorICAgICAg
ICAgICAgdGV4dCA9ICJcIiIgKyB0ZXh0ICsgIlwiIjsKKworICAgICAgICByZXR1cm4gdGV4dDsK
KyAgICB9CisKKyAgICBfYWRkQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKHZhbHVlLCBpbmRleCkKKyAg
ICB7CisgICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFj
ZSh0aGlzLl9yZW1vdmVXcmFwcGVkUXVvdGVzUmVnRXhwLCAiIik7CisKKyAgICAgICAgdmFyIHZh
bHVlRWxlbWVudCA9IHN1cGVyLl9hZGRDb21tYVNlcGFyYXRlZEtleXdvcmQodmFsdWUsIGluZGV4
KTsKKyAgICAgICAgdmFsdWVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlRm9udEZhbWlseUxpc3RJdGVtLkV2ZW50LkVkaXRvcktleURvd24sIHRoaXMuX2l0
ZW1FZGl0b3JLZXlEb3duLCB0aGlzKTsKKyAgICAgICAgdmFsdWVFbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RJdGVtLkV2ZW50Lktl
eXdvcmRDaGFuZ2VkLCB0aGlzLl9pdGVtRWRpdG9yS2V5d29yZENoYW5nZWQsIHRoaXMpOworICAg
ICAgICB2YWx1ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVGb250RmFtaWx5TGlzdEl0ZW0uRXZlbnQuRWRpdG9yQmx1cnJlZCwgdGhpcy5faGlkZUNvbXBs
ZXRpb25zLCB0aGlzKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlRWxlbWVudDsKKyAgICB9CisKKyAg
ICBfYWRkRW1wdHlDb21tYVNlcGFyYXRlZEtleXdvcmQoKQorICAgIHsKKyAgICAgICAgdmFyIG5l
d0l0ZW0gPSBzdXBlci5fYWRkRW1wdHlDb21tYVNlcGFyYXRlZEtleXdvcmQoKTsKKyAgICAgICAg
bmV3SXRlbS5zaG93S2V5d29yZEVkaXRvcigpOworICAgIH0KKworICAgIF9jb21wbGV0aW9uQ2xp
Y2tlZChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMudmFsdWUgPSBldmVudC5kYXRhLnRleHQ7
CisgICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgfQorCisgICAgX2l0ZW1FZGl0
b3JLZXlEb3duKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9jb21wbGV0aW9uQ29u
dHJvbGxlci52aXNpYmxlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBrZXkg
PSBldmVudCAmJiBldmVudC5kYXRhICYmIGV2ZW50LmRhdGEua2V5OworICAgICAgICBpZiAoIWtl
eSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoa2V5ID09PSAiRW50ZXIiIHx8
IGtleSA9PT0gIlRhYiIpIHsKKyAgICAgICAgICAgIHZhciBzZWxlY3RlZFRyZWVFbGVtZW50ID0g
dGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5zZWxlY3RlZFRyZWVFbGVtZW50OworICAgICAg
ICAgICAgaWYgKCFzZWxlY3RlZFRyZWVFbGVtZW50KQorICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgc2VsZWN0ZWRUcmVlRWxlbWVudC51cGRhdGVNYWluVGl0bGUodGhpcy5f
Y29tcGxldGlvbkNvbnRyb2xsZXIuY3VycmVudENvbXBsZXRpb24pOworICAgICAgICAgICAgdGhp
cy5fY29tcGxldGlvbkNvbnRyb2xsZXIuaGlkZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKGtleSA9PT0gIkVzY2FwZSIpIHsKKyAgICAgICAgICAgIHRo
aXMuX2hpZGVDb21wbGV0aW9ucygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGtleSA9PT0gIlVwIikgeworICAgICAgICAgICAgdGhpcy5fY29tcGxldGlv
bkNvbnRyb2xsZXIucHJldmlvdXMoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChrZXkgPT09ICJEb3duIikgeworICAgICAgICAgICAgdGhpcy5fY29tcGxl
dGlvbkNvbnRyb2xsZXIubmV4dCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgfQorCisgICAgX2l0ZW1FZGl0b3JLZXl3b3JkQ2hhbmdlZCgpCisgICAgeworICAgICAgICBp
ZiAoIXRoaXMuaGFzQ29tcGxldGlvbnMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dmFyIHJlc3VsdCA9IHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgICAgIGlmICghcmVzdWx0
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciB0cmVlSXRlbSA9IHRoaXMuX2Nv
bW1hU2VwYXJhdGVkS2V5d29yZHMuc2VsZWN0ZWRUcmVlRWxlbWVudDsKKyAgICAgICAgaWYgKCF0
cmVlSXRlbSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodGhpcy5fY29tcGxl
dGlvbkNvbnRyb2xsZXIudXBkYXRlKHRyZWVJdGVtLm1haW5UaXRsZSkpIHsKKyAgICAgICAgICAg
IHZhciBib3VuZHMgPSB0cmVlSXRlbS5lZGl0b3JCb3VuZHMoMik7CisgICAgICAgICAgICBpZiAo
IWJvdW5kcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHRoaXMuX2Nv
bXBsZXRpb25Db250cm9sbGVyLnNob3coYm91bmRzKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IF9oaWRlQ29tcGxldGlvbnMoKQorICAgIHsKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbkNvbnRy
b2xsZXIuaGlkZSgpOworICAgIH0KKworICAgIF9jcmVhdGVOZXdMaXN0SXRlbSh2YWx1ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWls
eUxpc3RJdGVtKHZhbHVlKTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEl0ZW0u
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHls
ZUZvbnRGYW1pbHlMaXN0SXRlbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjFiMzc2MjU0NjI4YTllMzE4YjZk
MzAxY2ZkZTdhNzU4NWQwMjE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEl0ZW0uanMK
QEAgLTAsMCArMSwxNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVG
b250RmFtaWx5TGlzdEl0ZW0gPSBjbGFzcyBWaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0SXRlbSBl
eHRlbmRzIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQKK3sKKyAgICBjb25zdHJ1Y3Rv
cih0ZXh0KQorICAgIHsKKyAgICAgICAgc3VwZXIoW1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNv
bW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5MaXN0SXRlbUNsYXNzTmFtZSwgInZpc3VhbC1zdHls
ZS1mb250LWZhbWlseS1saXN0LWl0ZW0iXSwgdGV4dCk7CisKKyAgICAgICAgdGhpcy5fa2V5d29y
ZEVkaXRvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAgICAgIHRoaXMu
X2tleXdvcmRFZGl0b3IuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRl
ZC1rZXl3b3JkLWl0ZW0tZWRpdG9yIik7CisgICAgICAgIHRoaXMuX2tleXdvcmRFZGl0b3IucGxh
Y2Vob2xkZXIgPSAiKCIgKyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIm1vZGlmeSB0aGUgYm94ZXMg
YmVsb3cgdG8gYWRkIGEgdmFsdWUiKSArICIpIjsKKyAgICAgICAgdGhpcy5fa2V5d29yZEVkaXRv
ci5zcGVsbGNoZWNrID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2tleXdvcmRFZGl0b3IuYWRkRXZl
bnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2tleXdvcmRFZGl0b3JLZXlEb3duLmJpbmQodGhp
cykpOworICAgICAgICB0aGlzLl9rZXl3b3JkRWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoImtleXVw
IiwgdGhpcy5fa2V5d29yZEVkaXRvcktleVVwLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9r
ZXl3b3JkRWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlzLl9rZXl3b3JkRWRpdG9y
Qmx1cnJlZC5iaW5kKHRoaXMpKTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGVkaXRv
ckJvdW5kcyhwYWRkaW5nKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMua2V5d29yZEVkaXRvckhp
ZGRlbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgYm91bmRzID0gV2ViSW5z
cGVjdG9yLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KHRoaXMuX2tleXdvcmRFZGl0b3IuZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCkpOworICAgICAgICByZXR1cm4gYm91bmRzLnBhZChwYWRkaW5nIHx8
IDApOworICAgIH0KKworICAgIHVwZGF0ZU1haW5UaXRsZSh0ZXh0KQorICAgIHsKKyAgICAgICAg
dGhpcy5tYWluVGl0bGUgPSB0aGlzLl9saXN0SXRlbU5vZGUuc3R5bGUuZm9udEZhbWlseSA9IHRo
aXMuX2tleXdvcmRFZGl0b3IudmFsdWUgPSB0ZXh0OworCisgICAgICAgIHZhciBoYXNUZXh0ID0g
dGV4dCAmJiB0ZXh0Lmxlbmd0aDsKKyAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlz
dC50b2dnbGUoIm5vLXZhbHVlIiwgIWhhc1RleHQpOworICAgICAgICBpZiAoIWhhc1RleHQpCisg
ICAgICAgICAgICB0aGlzLnN1YnRpdGxlID0gdGhpcy5fa2V5d29yZEVkaXRvci5wbGFjZWhvbGRl
cjsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEl0ZW0uRXZlbnQuS2V5d29yZENoYW5nZWQpOworICAg
IH0KKworICAgIHNob3dLZXl3b3JkRWRpdG9yKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5r
ZXl3b3JkRWRpdG9ySGlkZGVuKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMu
c3VidGl0bGUgPSAiIjsKKyAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5yZW1v
dmUoImVkaXRvci1oaWRkZW4iKTsKKyAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLnNjcm9sbElu
dG9WaWV3SWZOZWVkZWQoKTsKKworICAgICAgICB0aGlzLl9rZXl3b3JkRWRpdG9yLnZhbHVlID0g
dGhpcy5fbWFpblRpdGxlOworICAgICAgICB0aGlzLl9rZXl3b3JkRWRpdG9yLnNlbGVjdCgpOwor
ICAgIH0KKworICAgIGhpZGVLZXl3b3JkRWRpdG9yKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlz
LmtleXdvcmRFZGl0b3JIaWRkZW4pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhp
cy51cGRhdGVNYWluVGl0bGUodGhpcy5fa2V5d29yZEVkaXRvci52YWx1ZSk7CisgICAgICAgIHRo
aXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRkKCJlZGl0b3ItaGlkZGVuIik7CisgICAgfQor
CisgICAgZ2V0IGtleXdvcmRFZGl0b3JIaWRkZW4oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuY29udGFpbnMoImVkaXRvci1oaWRkZW4iKTsKKyAg
ICB9CisKKyAgICAvLyBPdmVycmlkZXMgZnJvbSBUcmVlRWxlbWVudCAoUHJpdmF0ZSkKKworICAg
IG9uYXR0YWNoKCkKKyAgICB7CisgICAgICAgIHN1cGVyLm9uYXR0YWNoKCk7CisKKyAgICAgICAg
dGhpcy5fbGlzdEl0ZW1Ob2RlLnN0eWxlLmZvbnRGYW1pbHkgPSB0aGlzLl9tYWluVGl0bGU7Cisg
ICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRkKCJlZGl0b3ItaGlkZGVuIik7
CisgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hcHBlbmRDaGlsZCh0aGlzLl9rZXl3b3JkRWRp
dG9yKTsKKyAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNr
IiwgdGhpcy5zaG93S2V5d29yZEVkaXRvci5iaW5kKHRoaXMpKTsKKyAgICB9CisKKyAgICBvbmRl
c2VsZWN0KCkKKyAgICB7CisgICAgICAgIHRoaXMuaGlkZUtleXdvcmRFZGl0b3IoKTsKKyAgICB9
CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfa2V5d29yZEVkaXRvcktleURvd24oZXZlbnQpCisg
ICAgeworICAgICAgICBpZiAodGhpcy5rZXl3b3JkRWRpdG9ySGlkZGVuKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHZhciBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTsKKyAgICAgICAg
aWYgKGtleUNvZGUgPT09IDEzKSB7CisgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xh
c3NMaXN0LmFkZCgiZWRpdG9yLWhpZGRlbiIpOworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RJdGVt
LkV2ZW50LkVkaXRvcktleURvd24sIHtrZXk6ICJFbnRlciJ9KTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChrZXlDb2RlID09PSAyNykgeworICAgICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
Rm9udEZhbWlseUxpc3RJdGVtLkV2ZW50LkVkaXRvcktleURvd24sIHtrZXk6ICJFc2NhcGUifSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoZXZlbnQua2V5
Q29kZSA9PT0gOSkgeworICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAg
ICAgICAgIHRoaXMuX2RvbnRGaXJlS2V5VXAgPSB0cnVlOworICAgICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseUxp
c3RJdGVtLkV2ZW50LkVkaXRvcktleURvd24sIHtrZXk6ICJUYWIifSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIga2V5ID0gZXZlbnQua2V5SWRlbnRpZmll
cjsKKyAgICAgICAgaWYgKGtleSA9PT0gIlVwIiB8fCBrZXkgPT09ICJEb3duIikgeworICAgICAg
ICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIHRoaXMuX2RvbnRGaXJl
S2V5VXAgPSB0cnVlOworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RJdGVtLkV2ZW50LkVkaXRvcktl
eURvd24sIHtrZXl9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZv
bnRGYW1pbHlMaXN0SXRlbS5FdmVudC5FZGl0b3JLZXlEb3duKTsKKyAgICB9CisKKyAgICBfa2V5
d29yZEVkaXRvcktleVVwKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmtleXdvcmRFZGl0b3JI
aWRkZW4gfHwgdGhpcy5fZG9udEZpcmVLZXlVcCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB0aGlzLnVwZGF0ZU1haW5UaXRsZSh0aGlzLl9rZXl3b3JkRWRpdG9yLnZhbHVlKTsKKyAg
ICB9CisKKyAgICBfa2V5d29yZEVkaXRvckJsdXJyZWQoKQorICAgIHsKKyAgICAgICAgdGhpcy5o
aWRlS2V5d29yZEVkaXRvcigpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEl0ZW0uRXZlbnQuRWRpdG9y
Qmx1cnJlZCk7CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWls
eUxpc3RJdGVtLkV2ZW50ID0geworICAgIEtleXdvcmRDaGFuZ2VkOiAidmlzdWFsLXN0eWxlLWNv
bW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0ta2V5d29yZC1jaGFuZ2VkIiwKKyAgICBFZGl0b3JL
ZXlEb3duOiAidmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0tZWRpdG9y
LWtleS1kb3duIiwKKyAgICBFZGl0b3JCbHVycmVkOiAidmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFy
YXRlZC1rZXl3b3JkLWl0ZW0tZWRpdG9yLWJsdXJyZWQiCit9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258332</attachid>
            <date>2015-08-05 18:27:35 -0700</date>
            <delta_ts>2015-08-06 23:22:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147578-20150805182727.patch</filename>
            <type>text/plain</type>
            <size>35562</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGMxZjQwNGQ3ZGIzN2NiOTJiZDY0YmU5NTAzYmU0
OGUyMDAwNWVkZGMuLjZkNjcwNTgxZjA4NDFiNTViMTIwY2QzNjlmYjE3NmYxMjNjYjA4MmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE1LTA4LTA1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgVmlzdWFsIGVkaXRvcnMgZm9yIENTUyBwcm9wZXJ0aWVzIHdpdGggY29tbWEgc2VwYXJhdGVk
IHZhbHVlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ3NTc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0ltYWdlcy9NaW51cy5zdmc6IEFkZGVkLgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVHJl
ZU91dGxpbmUucHJvdG90eXBlLmdldCBzZWxlY3RlZFRyZWVFbGVtZW50SW5kZXgpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLmNzczogQWRkZWQuCisg
ICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQt
a2V5d29yZC1lZGl0b3IpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWlu
ZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS12YWx1ZS1jb250YWluZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250
YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3
b3JkLWxpc3QpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29t
bWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1
ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3Qg
PiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0pOgorICAgICAgICAo
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQt
ZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFs
LXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1h
LXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW06bnRoLWNoaWxkKG9kZCkpOgorICAgICAgICAoLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9y
ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxl
LWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFy
YXRlZC1rZXl3b3JkLWl0ZW0uc2VsZWN0ZWQpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFy
YXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3Jk
LWl0ZW0gPiA6bWF0Y2hlcyhidXR0b24sIGltZykpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNl
cGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3
b3JkLWl0ZW0gPiAudGl0bGVzKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5
d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtLnZp
c3VhbC1zdHlsZS1mb250LWZhbWlseS1saXN0LWl0ZW0uc2VsZWN0ZWQ6bm90KC5lZGl0b3ItaGlk
ZGVuKSA+IC50aXRsZXMgPiAqKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5
d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtLnZp
c3VhbC1zdHlsZS1mb250LWZhbWlseS1saXN0LWl0ZW0gPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNl
cGFyYXRlZC1rZXl3b3JkLWl0ZW0tZWRpdG9yKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwt
c3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBh
cmF0ZWQta2V5d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29y
ZC1pdGVtLnZpc3VhbC1zdHlsZS1mb250LWZhbWlseS1saXN0LWl0ZW0uZWRpdG9yLWhpZGRlbiA+
IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbS1lZGl0b3IpOgorICAg
ICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtl
eXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAu
dmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxl
LWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0gPiAudGl0bGVzID4gLnN1YnRpdGxlKToKKyAg
ICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1r
ZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4g
LnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1saXN0ID4gLnZpc3VhbC1zdHls
ZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtOm5vdCgubm8tdmFsdWUpID4gLnRpdGxlcyA+
IC5zdWJ0aXRsZSk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5j
b21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZh
bHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtY29u
dHJvbHMpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEt
c2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1j
b250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWNvbnRyb2xz
ID4gZGl2KToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1h
LXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUt
Y29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1jb250cm9s
cyA+IC52aXN1YWwtc3R5bGUtcmVtb3ZlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkKToKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3Jk
RWRpdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1h
U2VwYXJhdGVkS2V5d29yZEVkaXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IucHJvdG90eXBlLnNldCBzZWxlY3RlZFRyZWVF
bGVtZW50VmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBh
cmF0ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlwZS5nZXQgdmFsdWUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlwZS5z
ZXQgdmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0
ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlwZS5nZXQgc3ludGhlc2l6ZWRWYWx1ZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IucHJv
dG90eXBlLl9vblRyZWVJdGVtU2VsZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5wcm90b3R5cGUuX3RyZWVJdGVtSXNFbXB0
eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdv
cmRFZGl0b3IucHJvdG90eXBlLl9hZGRFbXB0eUNvbW1hU2VwYXJhdGVkS2V5d29yZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3Iu
cHJvdG90eXBlLl9yZW1vdmVTZWxlY3RlZENvbW1hU2VwYXJhdGVkS2V5d29yZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IucHJv
dG90eXBlLl9yZW1vdmVFbXB0eUNvbW1hU2VwYXJhdGVkS2V5d29yZHMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlw
ZS5fYWRkQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5wcm90b3R5cGUuX3JlbW92ZUNvbW1h
U2VwYXJhdGVkS2V5d29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21t
YVNlcGFyYXRlZEtleXdvcmRFZGl0b3IucHJvdG90eXBlLl9jcmVhdGVOZXdMaXN0SXRlbSk6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRp
dG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1p
bHlMaXN0RWRpdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1p
bHlMaXN0RWRpdG9yLnByb3RvdHlwZS5jb21wbGV0aW9uU3VnZ2VzdGlvbnNPbkl0ZW1DcmVhdGVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9y
LnByb3RvdHlwZS5nZXQgaGFzQ29tcGxldGlvbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlRm9udEZhbWlseUxpc3RFZGl0b3IucHJvdG90eXBlLnNldCBjb21wbGV0aW9ucyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvci5w
cm90b3R5cGUuX21vZGlmeUNvbW1hU2VwYXJhdGVkS2V5d29yZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvci5wcm90b3R5cGUuX2FkZENvbW1h
U2VwYXJhdGVkS2V5d29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250
RmFtaWx5TGlzdEVkaXRvci5wcm90b3R5cGUuX2FkZEVtcHR5Q29tbWFTZXBhcmF0ZWRLZXl3b3Jk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9y
LnByb3RvdHlwZS5fY29tcGxldGlvbkNsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlRm9udEZhbWlseUxpc3RFZGl0b3IucHJvdG90eXBlLl9pdGVtRWRpdG9yS2V5RG93
bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRv
ci5wcm90b3R5cGUuX2l0ZW1FZGl0b3JLZXl3b3JkQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvci5wcm90b3R5cGUuX2hpZGVDb21w
bGV0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlz
dEVkaXRvci5wcm90b3R5cGUuX2NyZWF0ZU5ld0xpc3RJdGVtKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RJdGVtLmpzOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0SXRlbSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEl0ZW0ucHJvdG90eXBl
LmVkaXRvckJvdW5kcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFt
aWx5TGlzdEl0ZW0ucHJvdG90eXBlLnVwZGF0ZU1haW5UaXRsZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEl0ZW0ucHJvdG90eXBlLnNob3dLZXl3b3Jk
RWRpdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0
SXRlbS5wcm90b3R5cGUuaGlkZUtleXdvcmRFZGl0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RJdGVtLnByb3RvdHlwZS5nZXQga2V5d29yZEVkaXRv
ckhpZGRlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlz
dEl0ZW0ucHJvdG90eXBlLm9uYXR0YWNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZUZvbnRGYW1pbHlMaXN0SXRlbS5wcm90b3R5cGUub25kZXNlbGVjdCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEl0ZW0ucHJvdG90eXBlLl9rZXl3
b3JkRWRpdG9yS2V5RG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250
RmFtaWx5TGlzdEl0ZW0ucHJvdG90eXBlLl9rZXl3b3JkRWRpdG9yS2V5VXApOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RJdGVtLnByb3RvdHlwZS5fa2V5
d29yZEVkaXRvckJsdXJyZWQpOgorCiAyMDE1LTA4LTA1ICBNYXR0IEJha2VyICA8bWF0dGJha2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSRUdSRVNTSU9OIChyMTg3OTAw
KTogQnJlYWtwb2ludCBjb250ZXh0IG1lbnUgaXMgYnJva2VuIGluIERlYnVnZ2VyIHRhYgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL01pbnVz
LnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9NaW51cy5z
dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjllNTc2ZWRkNmRjYWMyNmM4MjllOTUzOWU2ZDhkNTBkNTI5MmFkOAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0lt
YWdlcy9NaW51cy5zdmcKQEAgLTAsMCArMSw1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEzIDEzIj4KKyAgICA8bGluZSBjbGFzcz0ic3Ry
b2tlZCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgeDE9IjEuNSIgeTE9IjYuNSIgeDI9IjEx
LjUiIHkyPSI2LjUiLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcwppbmRleCBkNWQwN2M1OTZkNGNh
MjZlOTMyOWU1YTJkYWEyZTE4Nzc2ZWVhOTgzLi4wYTgyYzEzNzY5NzI3NjJhODJjNTAyNDAwOTAx
MjBmYjM2NzY1OWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcwpAQCAtNTA0LDYgKzUwNCwxOSBAQCBXZWJJ
bnNwZWN0b3IuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5PYmplY3QKICAgICB7CiAgICAgICAgIC8vIHRoaXMgaXMgdGhlIHJvb3QsIGRvIG5vdGhp
bmcKICAgICB9CisKKyAgICBnZXQgc2VsZWN0ZWRUcmVlRWxlbWVudEluZGV4KCkKKyAgICB7Cisg
ICAgICAgIGlmICghdGhpcy5oYXNDaGlsZHJlbiB8fCAhdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhp
cy5jaGlsZHJlbi5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKHRoaXMuY2hpbGRyZW5b
aV0gPT09IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
aTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiB9OwogCiBXZWJJ
bnNwZWN0b3IuVHJlZU91dGxpbmUuX2tub3duVHJlZUVsZW1lbnROZXh0SWRlbnRpZmllciA9IDE7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9W
aXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5jc3MgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5
d29yZEVkaXRvci5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWQyMjAwNzAxZjk5NjFjYTI5MzIzMjE2NzU0ZjM0
MWQwNDc4NjM0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLmNz
cwpAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHkt
Y29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciB7CisgICAgbWFyZ2luLWJv
dHRvbTogNXB4OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1z
ZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNv
bnRhaW5lciB7CisgICAgYm9yZGVyOiAxcHggc29saWQgbGlnaHRncmV5OworICAgIG92ZXJmbG93
OiBhdXRvOworICAgIGZvbnQtc2l6ZTogMTFweDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRl
ZC1rZXl3b3JkLWxpc3QgeworICAgIG1pbi1oZWlnaHQ6IDUxcHg7CisgICAgbWF4LWhlaWdodDog
OTRweDsKKyAgICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKKyAgICBiYWNrZ3JvdW5kLWNv
bG9yOiByZ2IoMjQyLCAyNDIsIDI0Mik7CisgICAgb3ZlcmZsb3c6IGF1dG87CisgICAgb3V0bGlu
ZTogbm9uZTsKKyAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7Cit9CisKKy52aXN1YWwtc3R5bGUt
cHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1
YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1z
ZXBhcmF0ZWQta2V5d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5
d29yZC1pdGVtIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgd2lkdGg6IDEwMCU7Cisg
ICAgaGVpZ2h0OiAxN3B4OworICAgIGxpbmUtaGVpZ2h0OiAxN3B4OworICAgIG92ZXJmbG93OiBo
aWRkZW47Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFy
YXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFp
bmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1saXN0ID4gLnZpc3Vh
bC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtOm50aC1jaGlsZChvZGQpIHsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1j
b250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1r
ZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0u
c2VsZWN0ZWQgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigzNCwgMTMxLCAyNDYpICFpbXBv
cnRhbnQ7CisgICAgY29sb3I6IHdoaXRlOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNv
bnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtl
eXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbSA+
IDptYXRjaGVzKGJ1dHRvbiwgaW1nKSB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9y
ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxl
LWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFy
YXRlZC1rZXl3b3JkLWl0ZW0gPiAudGl0bGVzIHsKKyAgICBwYWRkaW5nLWxlZnQ6IDNweDsKK30K
KworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdv
cmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlz
dWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNv
bW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0udmlzdWFsLXN0eWxlLWZvbnQtZmFtaWx5LWxpc3Qt
aXRlbS5zZWxlY3RlZDpub3QoLmVkaXRvci1oaWRkZW4pID4gLnRpdGxlcyA+ICogeworICAgIGNv
bG9yOiB0cmFuc3BhcmVudDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIu
Y29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12
YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxp
c3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0udmlzdWFsLXN0
eWxlLWZvbnQtZmFtaWx5LWxpc3QtaXRlbSA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVk
LWtleXdvcmQtaXRlbS1lZGl0b3IgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6
IDA7CisgICAgcmlnaHQ6IDNweDsKKyAgICBib3R0b206IDA7CisgICAgbGVmdDogM3B4OworICAg
IG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAwOworICAgIGxpbmUtaGVpZ2h0OiAxM3B4OworICAg
IGJvcmRlcjogbm9uZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICBm
b250LWZhbWlseTogaW5oZXJpdDsKKyAgICBjb2xvcjogd2hpdGU7CisgICAgei1pbmRleDogMTsK
K30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtl
eXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAu
dmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxl
LWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0udmlzdWFsLXN0eWxlLWZvbnQtZmFtaWx5LWxp
c3QtaXRlbS5lZGl0b3ItaGlkZGVuID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5
d29yZC1pdGVtLWVkaXRvciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1h
LXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1r
ZXl3b3JkLWl0ZW0gPiAudGl0bGVzID4gLnN1YnRpdGxlIHsKKyAgICBmb250LXNpemU6IDlweDsK
KyAgICBjb2xvcjogbGlnaHRncmV5OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRh
aW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdv
cmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbTpub3Qo
Lm5vLXZhbHVlKSA+IC50aXRsZXMgPiAuc3VidGl0bGUgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9
CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3
b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZp
c3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1jb250cm9scyB7CisgICAgZGlzcGxh
eTogZmxleDsKKyAgICBib3JkZXItdG9wOiAxcHggc29saWQgbGlnaHRncmV5OworfQorCisudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0
b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5
bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtY29udHJvbHMgPiBkaXYgeworICAgIHdpZHRoOiAy
MHB4OworICAgIGhlaWdodDogMTlweDsKKyAgICBwYWRkaW5nOiA0cHg7CisgICAgYm9yZGVyLXJp
Z2h0OiAxcHggc29saWQgbGlnaHRncmV5OworICAgIG9wYWNpdHk6IDAuNzsKK30KKworLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9y
ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxl
LWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWNvbnRyb2xzID4gLnZpc3VhbC1zdHlsZS1yZW1vdmUt
Y29tbWEtc2VwYXJhdGVkLWtleXdvcmQgeworICAgIG9yZGVyOiAyOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVDb21t
YVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45MmUwZWNlYjg5ZDdmZWUyYmYzZWVkYjg3MjdhNTZjNDg2NGNkM2RhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuanMKQEAgLTAsMCArMSwxOTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtl
eXdvcmRFZGl0b3IgPSBjbGFzcyBWaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRv
ciBleHRlbmRzIFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yCit7CisgICAg
Y29uc3RydWN0b3IocHJvcGVydHlOYW1lcywgdGV4dCwgaW5zZXJ0TmV3SXRlbXNCZWZvcmVTZWxl
Y3RlZCwgbGF5b3V0UmV2ZXJzZWQpCisgICAgeworICAgICAgICBzdXBlcihwcm9wZXJ0eU5hbWVz
LCB0ZXh0LCBudWxsLCBudWxsLCAiY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yIiwgbGF5
b3V0UmV2ZXJzZWQpOworCisgICAgICAgIHRoaXMuX2luc2VydE5ld0l0ZW1zQmVmb3JlU2VsZWN0
ZWQgPSBpbnNlcnROZXdJdGVtc0JlZm9yZVNlbGVjdGVkIHx8IGZhbHNlOworCisgICAgICAgIHZh
ciBsaXN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7CisgICAgICAgIGxp
c3RFbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5
d29yZC1saXN0Iik7CisgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKGxp
c3RFbGVtZW50KTsKKworICAgICAgICB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzID0gbmV3
IFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZShsaXN0RWxlbWVudCk7CisgICAgICAgIHRoaXMuX2Nv
bW1hU2VwYXJhdGVkS2V5d29yZHMub25zZWxlY3QgPSB0aGlzLl9vblRyZWVJdGVtU2VsZWN0LmJp
bmQodGhpcyk7CisKKyAgICAgICAgdmFyIGNvbnRyb2xDb250YWluZXIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgY29udHJvbENvbnRhaW5lci5jbGFzc0xpc3QuYWRk
KCJ2aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtY29udHJvbHMiKTsKKyAgICAg
ICAgdGhpcy5fY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoY29udHJvbENvbnRhaW5lcik7CisK
KyAgICAgICAgd3JhcHBlZFNWR0RvY3VtZW50KCJJbWFnZXMvUGx1cy5zdmciLCAidmlzdWFsLXN0
eWxlLWFkZC1jb21tYS1zZXBhcmF0ZWQta2V5d29yZCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
Q2xpY2sgdG8gYWRkIGEgbmV3IGl0ZW0uIiksIGZ1bmN0aW9uKHdyYXBwZXIpIHsKKyAgICAgICAg
ICAgIHdyYXBwZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9hZGRFbXB0eUNvbW1h
U2VwYXJhdGVkS2V5d29yZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIGNvbnRyb2xDb250YWlu
ZXIuYXBwZW5kQ2hpbGQod3JhcHBlcik7CisgICAgICAgIH0uYmluZCh0aGlzKSk7CisKKyAgICAg
ICAgd3JhcHBlZFNWR0RvY3VtZW50KCJJbWFnZXMvTWludXMuc3ZnIiwgInZpc3VhbC1zdHlsZS1y
ZW1vdmUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNs
aWNrIHRvIHJlbW92ZSB0aGUgc2VsZWN0ZWQgaXRlbS4iKSwgZnVuY3Rpb24od3JhcHBlcikgewor
ICAgICAgICAgICAgd3JhcHBlci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3JlbW92
ZVNlbGVjdGVkQ29tbWFTZXBhcmF0ZWRLZXl3b3JkLmJpbmQodGhpcykpOworICAgICAgICAgICAg
Y29udHJvbENvbnRhaW5lci5hcHBlbmRDaGlsZCh3cmFwcGVyKTsKKyAgICAgICAgfS5iaW5kKHRo
aXMpKTsKKworICAgICAgICB0aGlzLl92YWx1ZVJlZ0V4cCA9IC8oXGIuK1xiKS87CisgICAgfQor
CisgICAgLy8gUHVibGljCisKKyAgICBzZXQgc2VsZWN0ZWRUcmVlRWxlbWVudFZhbHVlKHRleHQp
CisgICAgeworICAgICAgICB2YXIgc2VsZWN0ZWRUcmVlRWxlbWVudCA9IHRoaXMuX2NvbW1hU2Vw
YXJhdGVkS2V5d29yZHMuc2VsZWN0ZWRUcmVlRWxlbWVudDsKKyAgICAgICAgaWYgKCFzZWxlY3Rl
ZFRyZWVFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHNlbGVjdGVkVHJl
ZUVsZW1lbnQuZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJuby12YWx1ZSIsICF0ZXh0IHx8ICF0
ZXh0Lmxlbmd0aCk7CisgICAgICAgIHNlbGVjdGVkVHJlZUVsZW1lbnQubWFpblRpdGxlID0gdGV4
dDsKKyAgICAgICAgdGhpcy5fdmFsdWVEaWRDaGFuZ2UoKTsKKyAgICB9CisKKyAgICBnZXQgdmFs
dWUoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLmhh
c0NoaWxkcmVuKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciB2YWx1ZSA9ICIi
OworCisgICAgICAgIGZvciAodmFyIHRyZWVJdGVtIG9mIHRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5
d29yZHMuY2hpbGRyZW4pIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl90cmVlSXRlbUlzRW1wdHko
dHJlZUl0ZW0pKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAo
dmFsdWUubGVuZ3RoKQorICAgICAgICAgICAgICAgIHZhbHVlICs9ICIsICI7CisKKyAgICAgICAg
ICAgIHZhciB0ZXh0ID0gdHJlZUl0ZW0ubWFpblRpdGxlOworCisgICAgICAgICAgICBpZiAodHlw
ZW9mIHRoaXMuX21vZGlmeUNvbW1hU2VwYXJhdGVkS2V5d29yZCA9PT0gImZ1bmN0aW9uIikKKyAg
ICAgICAgICAgICAgICB0ZXh0ID0gdGhpcy5fbW9kaWZ5Q29tbWFTZXBhcmF0ZWRLZXl3b3JkKHRl
eHQpOworCisgICAgICAgICAgICB2YWx1ZSArPSB0ZXh0OworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIHZhbHVlOworICAgIH0KKworICAgIHNldCB2YWx1ZShjb21tYVNlcGFyYXRlZFZhbHVl
KQorICAgIHsKKyAgICAgICAgaWYgKGNvbW1hU2VwYXJhdGVkVmFsdWUgJiYgY29tbWFTZXBhcmF0
ZWRWYWx1ZSA9PT0gdGhpcy52YWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0
aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLnJlbW92ZUNoaWxkcmVuKCk7CisKKyAgICAgICAg
aWYgKCFjb21tYVNlcGFyYXRlZFZhbHVlIHx8ICFjb21tYVNlcGFyYXRlZFZhbHVlLmxlbmd0aCkg
eworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLkV2ZW50Lk5vUmVtYWluaW5n
VHJlZUl0ZW1zKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZh
ciB2YWx1ZXMgPSBjb21tYVNlcGFyYXRlZFZhbHVlLnNwbGl0KC9ccyosXHMqKD8hW15cKF0qXCkp
Lyk7CisgICAgICAgIGZvciAodmFyIHZhbHVlIG9mIHZhbHVlcykKKyAgICAgICAgICAgIHRoaXMu
X2FkZENvbW1hU2VwYXJhdGVkS2V5d29yZCh2YWx1ZSk7CisKKyAgICAgICAgdGhpcy5fY29tbWFT
ZXBhcmF0ZWRLZXl3b3Jkcy5jaGlsZHJlblswXS5zZWxlY3QodHJ1ZSk7CisgICAgfQorCisgICAg
Z2V0IHN5bnRoZXNpemVkVmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUg
fHwgbnVsbDsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfb25UcmVlSXRlbVNlbGVj
dChpdGVtLCBzZWxlY3RlZEJ5VXNlcikKKyAgICB7CisgICAgICAgIHRoaXMuX3JlbW92ZUVtcHR5
Q29tbWFTZXBhcmF0ZWRLZXl3b3JkcygpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0
b3IuRXZlbnQuVHJlZUl0ZW1TZWxlY3RlZCwge3RleHQ6IGl0ZW0ubWFpblRpdGxlfSk7CisgICAg
fQorCisgICAgX3RyZWVJdGVtSXNFbXB0eShpdGVtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICFp
dGVtLl9tYWluVGl0bGUgfHwgIWl0ZW0uX21haW5UaXRsZS5sZW5ndGg7CisgICAgfQorCisgICAg
X2FkZEVtcHR5Q29tbWFTZXBhcmF0ZWRLZXl3b3JkKCkKKyAgICB7CisgICAgICAgIHZhciBuZXdJ
dGVtID0gdGhpcy5fYWRkQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKG51bGwsIHRoaXMuX2NvbW1hU2Vw
YXJhdGVkS2V5d29yZHMuc2VsZWN0ZWRUcmVlRWxlbWVudEluZGV4KTsKKyAgICAgICAgbmV3SXRl
bS5zdWJ0aXRsZSA9ICIoIiArIFdlYkluc3BlY3Rvci5VSVN0cmluZygibW9kaWZ5IHRoZSBib3hl
cyBiZWxvdyB0byBhZGQgYSB2YWx1ZSIpICsgIikiOworICAgICAgICBuZXdJdGVtLmVsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgibm8tdmFsdWUiKTsKKyAgICAgICAgbmV3SXRlbS5zZWxlY3QodHJ1ZSwg
dHJ1ZSk7CisgICAgICAgIHJldHVybiBuZXdJdGVtOworICAgIH0KKworICAgIF9yZW1vdmVTZWxl
Y3RlZENvbW1hU2VwYXJhdGVkS2V5d29yZCgpCisgICAgeworICAgICAgICB2YXIgc2VsZWN0ZWRU
cmVlRWxlbWVudCA9IHRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29yZHMuc2VsZWN0ZWRUcmVlRWxl
bWVudDsKKyAgICAgICAgdGhpcy5fcmVtb3ZlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKHNlbGVjdGVk
VHJlZUVsZW1lbnQpOworICAgIH0KKworICAgIF9yZW1vdmVFbXB0eUNvbW1hU2VwYXJhdGVkS2V5
d29yZHMoKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgdHJlZUl0ZW0gb2YgdGhpcy5fY29tbWFT
ZXBhcmF0ZWRLZXl3b3Jkcy5jaGlsZHJlbikgeworICAgICAgICAgICAgaWYgKCF0aGlzLl90cmVl
SXRlbUlzRW1wdHkodHJlZUl0ZW0pIHx8IHRyZWVJdGVtLnNlbGVjdGVkKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICB0cmVlSXRlbS5kZXNlbGVjdCgpOworICAgICAg
ICAgICAgdGhpcy5fcmVtb3ZlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKHRyZWVJdGVtKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIF9hZGRDb21tYVNlcGFyYXRlZEtleXdvcmQodmFsdWUsIGluZGV4
KQorICAgIHsKKyAgICAgICAgdmFyIHZhbHVlRWxlbWVudCA9IHRoaXMuX2NyZWF0ZU5ld0xpc3RJ
dGVtKHZhbHVlKTsKKworICAgICAgICB2YXIgaW5kZXhJc1NldCA9ICFpc05hTihpbmRleCk7Cisg
ICAgICAgIGlmIChpbmRleElzU2V0KSB7CisgICAgICAgICAgICB0aGlzLl9jb21tYVNlcGFyYXRl
ZEtleXdvcmRzLmluc2VydENoaWxkKHZhbHVlRWxlbWVudCwgaW5kZXhJc1NldCA/IGluZGV4ICsg
IXRoaXMuX2luc2VydE5ld0l0ZW1zQmVmb3JlU2VsZWN0ZWQgOiAwKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLmFwcGVuZENoaWxkKHZh
bHVlRWxlbWVudCk7CisKKyAgICAgICAgcmV0dXJuIHZhbHVlRWxlbWVudDsKKyAgICB9CisKKyAg
ICBfcmVtb3ZlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKHRyZWVFbGVtZW50KQorICAgIHsKKyAgICAg
ICAgaWYgKCF0cmVlRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlz
Ll9jb21tYVNlcGFyYXRlZEtleXdvcmRzLnJlbW92ZUNoaWxkKHRyZWVFbGVtZW50KTsKKworICAg
ICAgICBpZiAoIXRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29yZHMuY2hpbGRyZW4ubGVuZ3RoKQor
ICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLkV2ZW50Lk5vUmVtYWluaW5nVHJl
ZUl0ZW1zKTsKKworICAgICAgICB0aGlzLl92YWx1ZURpZENoYW5nZSgpOworICAgIH0KKworICAg
IF9jcmVhdGVOZXdMaXN0SXRlbSh2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2Vi
SW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21t
YVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuTGlzdEl0ZW1DbGFzc05hbWUsIHZhbHVlKTsKKyAgICB9
Cit9OworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0
b3IuTGlzdEl0ZW1DbGFzc05hbWUgPSAidmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3
b3JkLWl0ZW0iOworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdv
cmRFZGl0b3IuRXZlbnQgPSB7CisgICAgVHJlZUl0ZW1TZWxlY3RlZDogInZpc3VhbC1zdHlsZS1j
b21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3ItdHJlZS1pdGVtLXNlbGVjdGVkIiwKKyAgICBO
b1JlbWFpbmluZ1RyZWVJdGVtczogInZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29y
ZC1lZGl0b3Itbm8tcmVtYWluaW5nLXRyZWUtaXRlbXMiCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUZvbnRGYW1pbHlM
aXN0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzM5OGIxMGE0
YjQ0NTU0YzRmMzliYmJmMDU2NGY3YmY1Zjk1YjY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVGb250RmFtaWx5
TGlzdEVkaXRvci5qcwpAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9yID0gY2xhc3MgVmlzdWFsU3R5bGVGb250
RmFtaWx5TGlzdEVkaXRvciBleHRlbmRzIFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2Vw
YXJhdGVkS2V5d29yZEVkaXRvcgoreworICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5TmFtZXMsIHRl
eHQsIGxheW91dFJldmVyc2VkKQorICAgIHsKKyAgICAgICAgc3VwZXIocHJvcGVydHlOYW1lcywg
dGV4dCwgdHJ1ZSwgbGF5b3V0UmV2ZXJzZWQpOworCisgICAgICAgIHRoaXMuX2NvbW1hU2VwYXJh
dGVkS2V5d29yZHMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLl9oaWRl
Q29tcGxldGlvbnMuYmluZCh0aGlzKSk7CisKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbkNvbnRy
b2xsZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tcGxldGlvbnNDb250cm9sbGVy
KHRoaXMpOworICAgICAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbXBsZXRpb25zQ29udHJvbGxlci5FdmVudC5D
b21wbGV0aW9uU2VsZWN0ZWQsIHRoaXMuX2NvbXBsZXRpb25DbGlja2VkLCB0aGlzKTsKKworICAg
ICAgICB0aGlzLl93cmFwV2l0aFF1b3Rlc1JlZ0V4cCA9IC9eW2EtekEtWlwtXSskLzsKKyAgICAg
ICAgdGhpcy5fcmVtb3ZlV3JhcHBlZFF1b3Rlc1JlZ0V4cCA9IC9bXCJcJ10vZzsKKyAgICB9CisK
KyAgICAvLyBQdWJsaWMKKworICAgIGNvbXBsZXRpb25TdWdnZXN0aW9uc09uSXRlbUNyZWF0ZWQo
ZWxlbWVudCwgaXRlbSkKKyAgICB7CisgICAgICAgIGVsZW1lbnQuc3R5bGUuZm9udEZhbWlseSA9
IGl0ZW07CisgICAgfQorCisgICAgZ2V0IGhhc0NvbXBsZXRpb25zKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci5oYXNDb21wbGV0aW9uczsKKyAgICB9
CisKKyAgICBzZXQgY29tcGxldGlvbnMoY29tcGxldGlvbnMpCisgICAgeworICAgICAgICB0aGlz
Ll9jb21wbGV0aW9uQ29udHJvbGxlci5jb21wbGV0aW9ucyA9IGNvbXBsZXRpb25zOworICAgIH0K
KworICAgIC8vIFByaXZhdGUKKworICAgIF9tb2RpZnlDb21tYVNlcGFyYXRlZEtleXdvcmQodGV4
dCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fd3JhcFdpdGhRdW90ZXNSZWdFeHAudGVzdCh0
ZXh0KSkKKyAgICAgICAgICAgIHRleHQgPSAiXCIiICsgdGV4dCArICJcIiI7CisKKyAgICAgICAg
cmV0dXJuIHRleHQ7CisgICAgfQorCisgICAgX2FkZENvbW1hU2VwYXJhdGVkS2V5d29yZCh2YWx1
ZSwgaW5kZXgpCisgICAgeworICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICB2YWx1ZSA9
IHZhbHVlLnJlcGxhY2UodGhpcy5fcmVtb3ZlV3JhcHBlZFF1b3Rlc1JlZ0V4cCwgIiIpOworCisg
ICAgICAgIHZhciB2YWx1ZUVsZW1lbnQgPSBzdXBlci5fYWRkQ29tbWFTZXBhcmF0ZWRLZXl3b3Jk
KHZhbHVlLCBpbmRleCk7CisgICAgICAgIHZhbHVlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0SXRlbS5FdmVudC5FZGl0b3JLZXlE
b3duLCB0aGlzLl9pdGVtRWRpdG9yS2V5RG93biwgdGhpcyk7CisgICAgICAgIHZhbHVlRWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0
SXRlbS5FdmVudC5LZXl3b3JkQ2hhbmdlZCwgdGhpcy5faXRlbUVkaXRvcktleXdvcmRDaGFuZ2Vk
LCB0aGlzKTsKKyAgICAgICAgdmFsdWVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RJdGVtLkV2ZW50LkVkaXRvckJsdXJyZWQsIHRo
aXMuX2hpZGVDb21wbGV0aW9ucywgdGhpcyk7CisgICAgICAgIHJldHVybiB2YWx1ZUVsZW1lbnQ7
CisgICAgfQorCisgICAgX2FkZEVtcHR5Q29tbWFTZXBhcmF0ZWRLZXl3b3JkKCkKKyAgICB7Cisg
ICAgICAgIHZhciBuZXdJdGVtID0gc3VwZXIuX2FkZEVtcHR5Q29tbWFTZXBhcmF0ZWRLZXl3b3Jk
KCk7CisgICAgICAgIG5ld0l0ZW0uc2hvd0tleXdvcmRFZGl0b3IoKTsKKyAgICB9CisKKyAgICBf
Y29tcGxldGlvbkNsaWNrZWQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLnZhbHVlID0gZXZl
bnQuZGF0YS50ZXh0OworICAgICAgICB0aGlzLl92YWx1ZURpZENoYW5nZSgpOworICAgIH0KKwor
ICAgIF9pdGVtRWRpdG9yS2V5RG93bihldmVudCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5f
Y29tcGxldGlvbkNvbnRyb2xsZXIudmlzaWJsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB2YXIga2V5ID0gZXZlbnQgJiYgZXZlbnQuZGF0YSAmJiBldmVudC5kYXRhLmtleTsKKyAg
ICAgICAgaWYgKCFrZXkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGtleSA9
PT0gIkVudGVyIiB8fCBrZXkgPT09ICJUYWIiKSB7CisgICAgICAgICAgICB2YXIgc2VsZWN0ZWRU
cmVlRWxlbWVudCA9IHRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29yZHMuc2VsZWN0ZWRUcmVlRWxl
bWVudDsKKyAgICAgICAgICAgIGlmICghc2VsZWN0ZWRUcmVlRWxlbWVudCkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHNlbGVjdGVkVHJlZUVsZW1lbnQudXBkYXRlTWFp
blRpdGxlKHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLmN1cnJlbnRDb21wbGV0aW9uKTsKKyAg
ICAgICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLmhpZGUoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChrZXkgPT09ICJFc2NhcGUiKSB7Cisg
ICAgICAgICAgICB0aGlzLl9oaWRlQ29tcGxldGlvbnMoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChrZXkgPT09ICJVcCIpIHsKKyAgICAgICAgICAgIHRo
aXMuX2NvbXBsZXRpb25Db250cm9sbGVyLnByZXZpb3VzKCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBpZiAoa2V5ID09PSAiRG93biIpIHsKKyAgICAgICAgICAg
IHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLm5leHQoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgIH0KKworICAgIF9pdGVtRWRpdG9yS2V5d29yZENoYW5nZWQoKQorICAg
IHsKKyAgICAgICAgaWYgKCF0aGlzLmhhc0NvbXBsZXRpb25zKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl92YWx1ZURpZENoYW5nZSgpOworICAgICAg
ICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgdHJlZUl0
ZW0gPSB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLnNlbGVjdGVkVHJlZUVsZW1lbnQ7Cisg
ICAgICAgIGlmICghdHJlZUl0ZW0pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYg
KHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLnVwZGF0ZSh0cmVlSXRlbS5tYWluVGl0bGUpKSB7
CisgICAgICAgICAgICB2YXIgYm91bmRzID0gdHJlZUl0ZW0uZWRpdG9yQm91bmRzKDIpOworICAg
ICAgICAgICAgaWYgKCFib3VuZHMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci5zaG93KGJvdW5kcyk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBfaGlkZUNvbXBsZXRpb25zKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2Nv
bXBsZXRpb25Db250cm9sbGVyLmhpZGUoKTsKKyAgICB9CisKKyAgICBfY3JlYXRlTmV3TGlzdEl0
ZW0odmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZUZvbnRGYW1pbHlMaXN0SXRlbSh2YWx1ZSk7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRm9udEZh
bWlseUxpc3RJdGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEl0ZW0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDYxYjM3NjI1
NDYyOGE5ZTMxOGI2ZDMwMWNmZGU3YTc1ODVkMDIxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRm9udEZhbWls
eUxpc3RJdGVtLmpzCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RJdGVtID0gY2xhc3MgVmlzdWFsU3R5bGVGb250RmFt
aWx5TGlzdEl0ZW0gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50Cit7Cisg
ICAgY29uc3RydWN0b3IodGV4dCkKKyAgICB7CisgICAgICAgIHN1cGVyKFtXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuTGlzdEl0ZW1DbGFzc05hbWUs
ICJ2aXN1YWwtc3R5bGUtZm9udC1mYW1pbHktbGlzdC1pdGVtIl0sIHRleHQpOworCisgICAgICAg
IHRoaXMuX2tleXdvcmRFZGl0b3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwor
ICAgICAgICB0aGlzLl9rZXl3b3JkRWRpdG9yLmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1j
b21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtLWVkaXRvciIpOworICAgICAgICB0aGlzLl9rZXl3
b3JkRWRpdG9yLnBsYWNlaG9sZGVyID0gIigiICsgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJtb2Rp
ZnkgdGhlIGJveGVzIGJlbG93IHRvIGFkZCBhIHZhbHVlIikgKyAiKSI7CisgICAgICAgIHRoaXMu
X2tleXdvcmRFZGl0b3Iuc3BlbGxjaGVjayA9IGZhbHNlOworICAgICAgICB0aGlzLl9rZXl3b3Jk
RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9rZXl3b3JkRWRpdG9yS2V5
RG93bi5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fa2V5d29yZEVkaXRvci5hZGRFdmVudExp
c3RlbmVyKCJrZXl1cCIsIHRoaXMuX2tleXdvcmRFZGl0b3JLZXlVcC5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgdGhpcy5fa2V5d29yZEVkaXRvci5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwgdGhpcy5f
a2V5d29yZEVkaXRvckJsdXJyZWQuYmluZCh0aGlzKSk7CisgICAgfQorCisgICAgLy8gUHVibGlj
CisKKyAgICBlZGl0b3JCb3VuZHMocGFkZGluZykKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmtl
eXdvcmRFZGl0b3JIaWRkZW4pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIGJv
dW5kcyA9IFdlYkluc3BlY3Rvci5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdCh0aGlzLl9rZXl3b3Jk
RWRpdG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsKKyAgICAgICAgcmV0dXJuIGJvdW5kcy5w
YWQocGFkZGluZyB8fCAwKTsKKyAgICB9CisKKyAgICB1cGRhdGVNYWluVGl0bGUodGV4dCkKKyAg
ICB7CisgICAgICAgIHRoaXMubWFpblRpdGxlID0gdGhpcy5fbGlzdEl0ZW1Ob2RlLnN0eWxlLmZv
bnRGYW1pbHkgPSB0aGlzLl9rZXl3b3JkRWRpdG9yLnZhbHVlID0gdGV4dDsKKworICAgICAgICB2
YXIgaGFzVGV4dCA9IHRleHQgJiYgdGV4dC5sZW5ndGg7CisgICAgICAgIHRoaXMuX2xpc3RJdGVt
Tm9kZS5jbGFzc0xpc3QudG9nZ2xlKCJuby12YWx1ZSIsICFoYXNUZXh0KTsKKyAgICAgICAgaWYg
KCFoYXNUZXh0KQorICAgICAgICAgICAgdGhpcy5zdWJ0aXRsZSA9IHRoaXMuX2tleXdvcmRFZGl0
b3IucGxhY2Vob2xkZXI7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RJdGVtLkV2ZW50LktleXdvcmRD
aGFuZ2VkKTsKKyAgICB9CisKKyAgICBzaG93S2V5d29yZEVkaXRvcigpCisgICAgeworICAgICAg
ICBpZiAoIXRoaXMua2V5d29yZEVkaXRvckhpZGRlbikKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICB0aGlzLnN1YnRpdGxlID0gIiI7CisgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5j
bGFzc0xpc3QucmVtb3ZlKCJlZGl0b3ItaGlkZGVuIik7CisgICAgICAgIHRoaXMuX2xpc3RJdGVt
Tm9kZS5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKCk7CisKKyAgICAgICAgdGhpcy5fa2V5d29yZEVk
aXRvci52YWx1ZSA9IHRoaXMuX21haW5UaXRsZTsKKyAgICAgICAgdGhpcy5fa2V5d29yZEVkaXRv
ci5zZWxlY3QoKTsKKyAgICB9CisKKyAgICBoaWRlS2V5d29yZEVkaXRvcigpCisgICAgeworICAg
ICAgICBpZiAodGhpcy5rZXl3b3JkRWRpdG9ySGlkZGVuKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHRoaXMudXBkYXRlTWFpblRpdGxlKHRoaXMuX2tleXdvcmRFZGl0b3IudmFsdWUp
OworICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LmFkZCgiZWRpdG9yLWhpZGRl
biIpOworICAgIH0KKworICAgIGdldCBrZXl3b3JkRWRpdG9ySGlkZGVuKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJlZGl0b3It
aGlkZGVuIik7CisgICAgfQorCisgICAgLy8gT3ZlcnJpZGVzIGZyb20gVHJlZUVsZW1lbnQgKFBy
aXZhdGUpCisKKyAgICBvbmF0dGFjaCgpCisgICAgeworICAgICAgICBzdXBlci5vbmF0dGFjaCgp
OworCisgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5zdHlsZS5mb250RmFtaWx5ID0gdGhpcy5f
bWFpblRpdGxlOworICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LmFkZCgiZWRp
dG9yLWhpZGRlbiIpOworICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuYXBwZW5kQ2hpbGQodGhp
cy5fa2V5d29yZEVkaXRvcik7CisgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVudExp
c3RlbmVyKCJjbGljayIsIHRoaXMuc2hvd0tleXdvcmRFZGl0b3IuYmluZCh0aGlzKSk7CisgICAg
fQorCisgICAgb25kZXNlbGVjdCgpCisgICAgeworICAgICAgICB0aGlzLmhpZGVLZXl3b3JkRWRp
dG9yKCk7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2tleXdvcmRFZGl0b3JLZXlE
b3duKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMua2V5d29yZEVkaXRvckhpZGRlbikK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIga2V5Q29kZSA9IGV2ZW50LmtleUNv
ZGU7CisgICAgICAgIGlmIChrZXlDb2RlID09PSAxMykgeworICAgICAgICAgICAgdGhpcy5fbGlz
dEl0ZW1Ob2RlLmNsYXNzTGlzdC5hZGQoImVkaXRvci1oaWRkZW4iKTsKKyAgICAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRG
YW1pbHlMaXN0SXRlbS5FdmVudC5FZGl0b3JLZXlEb3duLCB7a2V5OiAiRW50ZXIifSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoa2V5Q29kZSA9PT0gMjcp
IHsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0SXRlbS5FdmVudC5FZGl0b3JLZXlEb3duLCB7a2V5
OiAiRXNjYXBlIn0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGV2ZW50LmtleUNvZGUgPT09IDkpIHsKKyAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZh
dWx0KCk7CisgICAgICAgICAgICB0aGlzLl9kb250RmlyZUtleVVwID0gdHJ1ZTsKKyAgICAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZUZvbnRGYW1pbHlMaXN0SXRlbS5FdmVudC5FZGl0b3JLZXlEb3duLCB7a2V5OiAiVGFiIn0pOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGtleSA9IGV2ZW50
LmtleUlkZW50aWZpZXI7CisgICAgICAgIGlmIChrZXkgPT09ICJVcCIgfHwga2V5ID09PSAiRG93
biIpIHsKKyAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICB0
aGlzLl9kb250RmlyZUtleVVwID0gdHJ1ZTsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0SXRlbS5F
dmVudC5FZGl0b3JLZXlEb3duLCB7a2V5fSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEl0ZW0uRXZlbnQuRWRpdG9yS2V5RG93bik7CisgICAg
fQorCisgICAgX2tleXdvcmRFZGl0b3JLZXlVcCgpCisgICAgeworICAgICAgICBpZiAodGhpcy5r
ZXl3b3JkRWRpdG9ySGlkZGVuIHx8IHRoaXMuX2RvbnRGaXJlS2V5VXApCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgdGhpcy51cGRhdGVNYWluVGl0bGUodGhpcy5fa2V5d29yZEVkaXRv
ci52YWx1ZSk7CisgICAgfQorCisgICAgX2tleXdvcmRFZGl0b3JCbHVycmVkKCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuaGlkZUtleXdvcmRFZGl0b3IoKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RJdGVt
LkV2ZW50LkVkaXRvckJsdXJyZWQpOworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZUZvbnRGYW1pbHlMaXN0SXRlbS5FdmVudCA9IHsKKyAgICBLZXl3b3JkQ2hhbmdlZDogInZp
c3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtLWtleXdvcmQtY2hhbmdlZCIs
CisgICAgRWRpdG9yS2V5RG93bjogInZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29y
ZC1pdGVtLWVkaXRvci1rZXktZG93biIsCisgICAgRWRpdG9yQmx1cnJlZDogInZpc3VhbC1zdHls
ZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtLWVkaXRvci1ibHVycmVkIgorfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258462</attachid>
            <date>2015-08-06 23:22:36 -0700</date>
            <delta_ts>2015-08-14 00:19:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147578-20150806232226.patch</filename>
            <type>text/plain</type>
            <size>36069</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDE2YjI3ZTdiYzQyYTU0ZmMyMjRiZjMyODNhMDA5
MDg0ZmRkYzZkMGIuLmM5MTZmM2Y4ODJjMWJkYzRlNDE0ZjgwYzQ4MjdiYzg1ZjRlNGZhMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDE1LTA4LTA2ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgVmlzdWFsIGVkaXRvcnMgZm9yIENTUyBwcm9wZXJ0aWVzIHdpdGggY29tbWEgc2VwYXJhdGVk
IHZhbHVlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ3NTc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RGlzcGxheXMgY29tbWEgc2VwYXJhdGVkIENTUyBwcm9wZXJ0eSB2YWx1ZXMgYXMgYSB0cmVlIG91
dGxpbmUgbGlzdC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvSW1hZ2VzL01pbnVzLnN2Zzog
QWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZS5wcm90b3R5cGUuZ2V0IHNlbGVjdGVkVHJl
ZUVsZW1lbnRJbmRleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUpOgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5
d29yZEVkaXRvci5jc3M6IEFkZGVkLgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1j
b250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yKToKKyAgICAgICAgKC52aXN1
YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRv
ciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyKToKKyAgICAgICAgKC52
aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVk
aXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1z
dHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1saXN0KToKKyAgICAgICAgKC52aXN1YWwtc3R5
bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52
aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21t
YS1zZXBhcmF0ZWQta2V5d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQt
a2V5d29yZC1pdGVtKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVy
LmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
dmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1s
aXN0ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtOm50aC1jaGls
ZChvZGQpKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1h
LXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUt
Y29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1saXN0ID4g
LnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtLnNlbGVjdGVkKToKKyAg
ICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1r
ZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4g
LnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1saXN0ID4gLnZpc3VhbC1zdHls
ZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtID4gOm1hdGNoZXMoYnV0dG9uLCBpbWcpKToK
KyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRl
ZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVy
ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1saXN0ID4gLnZpc3VhbC1z
dHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtID4gLnRpdGxlcyk6CisgICAgICAgICgu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1l
ZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwt
c3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29tbWEt
c2VwYXJhdGVkLWtleXdvcmQtaXRlbS52aXN1YWwtc3R5bGUtZm9udC1mYW1pbHktbGlzdC1pdGVt
LnNlbGVjdGVkOm5vdCguZWRpdG9yLWhpZGRlbikgPiAudGl0bGVzID4gKik6CisgICAgICAgICgu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1l
ZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwt
c3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29tbWEt
c2VwYXJhdGVkLWtleXdvcmQtaXRlbS52aXN1YWwtc3R5bGUtZm9udC1mYW1pbHktbGlzdC1pdGVt
ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtLWVkaXRvcik6Cisg
ICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQt
a2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+
IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5
bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbS52aXN1YWwtc3R5bGUtZm9udC1mYW1pbHkt
bGlzdC1pdGVtLmVkaXRvci1oaWRkZW4gPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1r
ZXl3b3JkLWl0ZW0tZWRpdG9yKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5
d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtID4g
LnRpdGxlcyA+IC5zdWJ0aXRsZSk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNv
bnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtl
eXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbTpu
b3QoLm5vLXZhbHVlKSA+IC50aXRsZXMgPiAuc3VidGl0bGUpOgorICAgICAgICAoLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNv
bW1hLXNlcGFyYXRlZC1rZXl3b3JkLWNvbnRyb2xzKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUt
cHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1
YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1z
ZXBhcmF0ZWQta2V5d29yZC1jb250cm9scyA+IGRpdik6CisgICAgICAgICgudmlzdWFsLXN0eWxl
LXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlz
dWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEt
c2VwYXJhdGVkLWtleXdvcmQtY29udHJvbHMgPiAudmlzdWFsLXN0eWxlLXJlbW92ZS1jb21tYS1z
ZXBhcmF0ZWQta2V5d29yZCk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3Vh
bFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvcik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3Iu
cHJvdG90eXBlLnNldCBzZWxlY3RlZFRyZWVFbGVtZW50VmFsdWUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlwZS5n
ZXQgdmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0
ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlwZS5zZXQgdmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlwZS5nZXQg
c3ludGhlc2l6ZWRWYWx1ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21t
YVNlcGFyYXRlZEtleXdvcmRFZGl0b3IucHJvdG90eXBlLnBhcnNlVmFsdWUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLnByb3Rv
dHlwZS5fb25UcmVlSXRlbVNlbGVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IucHJvdG90eXBlLl90cmVlSXRlbUlzRW1wdHkp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3Jk
RWRpdG9yLnByb3RvdHlwZS5fYWRkRW1wdHlDb21tYVNlcGFyYXRlZEtleXdvcmQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLnBy
b3RvdHlwZS5fcmVtb3ZlU2VsZWN0ZWRDb21tYVNlcGFyYXRlZEtleXdvcmQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLnByb3Rv
dHlwZS5fcmVtb3ZlRW1wdHlDb21tYVNlcGFyYXRlZEtleXdvcmRzKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5wcm90b3R5cGUu
X2FkZENvbW1hU2VwYXJhdGVkS2V5d29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IucHJvdG90eXBlLl9yZW1vdmVDb21tYVNl
cGFyYXRlZEtleXdvcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFT
ZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlwZS5fY3JlYXRlTmV3TGlzdEl0ZW0pOgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRp
dG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1p
bHlMaXN0RWRpdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1p
bHlMaXN0RWRpdG9yLnByb3RvdHlwZS5jb21wbGV0aW9uU3VnZ2VzdGlvbnNPbkl0ZW1DcmVhdGVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9y
LnByb3RvdHlwZS5nZXQgaGFzQ29tcGxldGlvbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlRm9udEZhbWlseUxpc3RFZGl0b3IucHJvdG90eXBlLnNldCBjb21wbGV0aW9ucyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvci5w
cm90b3R5cGUuX21vZGlmeUNvbW1hU2VwYXJhdGVkS2V5d29yZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvci5wcm90b3R5cGUuX2FkZENvbW1h
U2VwYXJhdGVkS2V5d29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250
RmFtaWx5TGlzdEVkaXRvci5wcm90b3R5cGUuX2FkZEVtcHR5Q29tbWFTZXBhcmF0ZWRLZXl3b3Jk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9y
LnByb3RvdHlwZS5fY29tcGxldGlvbkNsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlRm9udEZhbWlseUxpc3RFZGl0b3IucHJvdG90eXBlLl9pdGVtRWRpdG9yS2V5RG93
bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRv
ci5wcm90b3R5cGUuX2l0ZW1FZGl0b3JLZXl3b3JkQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvci5wcm90b3R5cGUuX2hpZGVDb21w
bGV0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlz
dEVkaXRvci5wcm90b3R5cGUuX2NyZWF0ZU5ld0xpc3RJdGVtKToKKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdFRyZWVJdGVtLmpzOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlSXRlbSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUl0ZW0ucHJv
dG90eXBlLmVkaXRvckJvdW5kcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVG
b250RmFtaWx5VHJlZUl0ZW0ucHJvdG90eXBlLnVwZGF0ZU1haW5UaXRsZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUl0ZW0ucHJvdG90eXBlLnNob3dL
ZXl3b3JkRWRpdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1p
bHlUcmVlSXRlbS5wcm90b3R5cGUuaGlkZUtleXdvcmRFZGl0b3IpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVJdGVtLnByb3RvdHlwZS5nZXQga2V5d29y
ZEVkaXRvckhpZGRlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFt
aWx5VHJlZUl0ZW0ucHJvdG90eXBlLm9uYXR0YWNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlSXRlbS5wcm90b3R5cGUub25kZXNlbGVjdCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUl0ZW0ucHJvdG90eXBl
Ll9rZXl3b3JkRWRpdG9yS2V5RG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVGb250RmFtaWx5VHJlZUl0ZW0ucHJvdG90eXBlLl9rZXl3b3JkRWRpdG9yS2V5VXApOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVJdGVtLnByb3RvdHlw
ZS5fa2V5d29yZEVkaXRvckJsdXJyZWQpOgorCiAyMDE1LTA4LTA1ICBEZXZpbiBSb3Vzc28gIDxk
cm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBNb3ZlIHRoZSBNZXRy
aWNzIHN0eWxlIHNpZGViYXIgcGFuZWwgaW50byBDb21wdXRlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL01pbnVzLnN2ZyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9NaW51cy5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjllNTc2ZWRkNmRjYWMyNmM4MjllOTUzOWU2ZDhkNTBkNTI5MmFkOAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9NaW51cy5zdmcK
QEAgLTAsMCArMSw1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pgor
PCEtLSBDb3B5cmlnaHQgwqkgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0t
PgorPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
dmlld0JveD0iMCAwIDEzIDEzIj4KKyAgICA8bGluZSBjbGFzcz0ic3Ryb2tlZCIgZmlsbD0ibm9u
ZSIgc3Ryb2tlPSJibGFjayIgeDE9IjEuNSIgeTE9IjYuNSIgeDI9IjExLjUiIHkyPSI2LjUiLz4K
Kzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVHJlZU91dGxpbmUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UcmVlT3V0bGluZS5qcwppbmRleCBkNWQwN2M1OTZkNGNhMjZlOTMyOWU1YTJkYWEy
ZTE4Nzc2ZWVhOTgzLi4wYTgyYzEzNzY5NzI3NjJhODJjNTAyNDAwOTAxMjBmYjM2NzY1OWViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVl
T3V0bGluZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UcmVlT3V0bGluZS5qcwpAQCAtNTA0LDYgKzUwNCwxOSBAQCBXZWJJbnNwZWN0b3IuVHJlZU91
dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAg
ICB7CiAgICAgICAgIC8vIHRoaXMgaXMgdGhlIHJvb3QsIGRvIG5vdGhpbmcKICAgICB9CisKKyAg
ICBnZXQgc2VsZWN0ZWRUcmVlRWxlbWVudEluZGV4KCkKKyAgICB7CisgICAgICAgIGlmICghdGhp
cy5oYXNDaGlsZHJlbiB8fCAhdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50KQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5n
dGg7ICsraSkgeworICAgICAgICAgICAgaWYgKHRoaXMuY2hpbGRyZW5baV0gPT09IHRoaXMuc2Vs
ZWN0ZWRUcmVlRWxlbWVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiB9OwogCiBXZWJJbnNwZWN0b3IuVHJlZU91
dGxpbmUuX2tub3duVHJlZUVsZW1lbnROZXh0SWRlbnRpZmllciA9IDE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbW1h
U2VwYXJhdGVkS2V5d29yZEVkaXRvci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5jc3MK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDRlZjQxOGE2YTAzYTg1YWQwZGNhMzdhMzJkYWM5MTI1Zjg4OGQ4YwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLmNzcwpAQCAtMCwwICsxLDEy
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1h
LXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciB7CisgICAgbWFyZ2luLWJvdHRvbTogNXB4OworfQor
CisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29y
ZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciB7CisgICAg
Ym9yZGVyOiAxcHggc29saWQgaHNsKDAsIDAlLCA4MyUpOworICAgIG92ZXJmbG93OiBhdXRvOwor
ICAgIGZvbnQtc2l6ZTogMTFweDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWlu
ZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3Jk
LWxpc3QgeworICAgIG1pbi1oZWlnaHQ6IDUxcHg7CisgICAgbWF4LWhlaWdodDogOTRweDsKKyAg
ICBtYXJnaW46IDA7CisgICAgcGFkZGluZzogMDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2wo
MCwgMCUsIDk1JSk7CisgICAgb3ZlcmZsb3c6IGF1dG87CisgICAgb3V0bGluZTogbm9uZTsKKyAg
ICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5
d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtIHsK
KyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAx
N3B4OworICAgIGxpbmUtaGVpZ2h0OiAxN3B4OworICAgIG92ZXJmbG93OiBoaWRkZW47Cit9CisK
Ky52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3Jk
LWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3Vh
bC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21t
YS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtOm50aC1jaGlsZChvZGQpIHsKKyAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBoc2woMCwgMTAwJSwgMTAwJSk7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHkt
Y29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUt
cHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQt
a2V5d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVt
LnNlbGVjdGVkIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMjEzLCA5MiUsIDU1JSkgIWlt
cG9ydGFudDsKKyAgICBjb2xvcjogaHNsKDAsIDEwMCUsIDEwMCUpOworfQorCisudmlzdWFsLXN0
eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29t
bWEtc2VwYXJhdGVkLWtleXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVk
LWtleXdvcmQtaXRlbSA+IDptYXRjaGVzKGJ1dHRvbiwgaW1nKSB7CisgICAgZGlzcGxheTogbm9u
ZTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVk
LWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIg
PiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0
eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0gPiAudGl0bGVzIHsKKyAgICBwYWRkaW5n
LWxlZnQ6IDNweDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEt
c2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1j
b250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAu
dmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0udmlzdWFsLXN0eWxlLWZv
bnQtZmFtaWx5LWxpc3QtaXRlbS5zZWxlY3RlZDpub3QoLmVkaXRvci1oaWRkZW4pID4gLnRpdGxl
cyA+ICogeworICAgIGNvbG9yOiB0cmFuc3BhcmVudDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFy
YXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3Jk
LWl0ZW0udmlzdWFsLXN0eWxlLWZvbnQtZmFtaWx5LWxpc3QtaXRlbSA+IC52aXN1YWwtc3R5bGUt
Y29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbS1lZGl0b3IgeworICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKKyAgICB0b3A6IDA7CisgICAgcmlnaHQ6IDNweDsKKyAgICBib3R0b206IDA7CisgICAg
bGVmdDogM3B4OworICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAwOworICAgIGxpbmUtaGVp
Z2h0OiAxM3B4OworICAgIGJvcmRlcjogbm9uZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFu
c3BhcmVudDsKKyAgICBmb250LWZhbWlseTogaW5oZXJpdDsKKyAgICBjb2xvcjogaHNsKDAsIDEw
MCUsIDEwMCUpOworICAgIHotaW5kZXg6IDE7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHkt
Y29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUt
cHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQt
a2V5d29yZC1saXN0ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVt
LnZpc3VhbC1zdHlsZS1mb250LWZhbWlseS1saXN0LWl0ZW0uZWRpdG9yLWhpZGRlbiA+IC52aXN1
YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbS1lZGl0b3IgeworICAgIGRpc3Bs
YXk6IG5vbmU7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNl
cGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29u
dGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1saXN0ID4gLnZp
c3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtID4gLnRpdGxlcyA+IC5zdWJ0
aXRsZSB7CisgICAgZm9udC1zaXplOiA5cHg7CisgICAgY29sb3I6IGhzbCgwLCAwJSwgODMlKTsK
K30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtl
eXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAu
dmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxl
LWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW06bm90KC5uby12YWx1ZSkgPiAudGl0bGVzID4g
LnN1YnRpdGxlIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJh
dGVkLWtleXdvcmQtY29udHJvbHMgeworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgYm9yZGVyLXRv
cDogMXB4IHNvbGlkIGhzbCgwLCAwJSwgODMlKTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRl
ZC1rZXl3b3JkLWNvbnRyb2xzID4gZGl2IHsKKyAgICB3aWR0aDogMjBweDsKKyAgICBoZWlnaHQ6
IDE5cHg7CisgICAgcGFkZGluZzogNHB4OworICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIGhz
bCgwLCAwJSwgODMlKTsKKyAgICAtd2Via2l0LWZpbHRlcjogb3BhY2l0eSgwLjcpOworfQorCisu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1l
ZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwt
c3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtY29udHJvbHMgPiAudmlzdWFsLXN0eWxlLXJl
bW92ZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZCB7CisgICAgb3JkZXI6IDI7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHls
ZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9y
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmMzMzY0ZTZiODgzM2NiMWNhNmI1ODE5ZTlhNWZhZWE1ZDM2YmZhZWIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5qcwpAQCAtMCwwICsx
LDE5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJh
dGVkS2V5d29yZEVkaXRvciA9IGNsYXNzIFZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3Jk
RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IKK3sK
KyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eU5hbWVzLCB0ZXh0LCBpbnNlcnROZXdJdGVtc0JlZm9y
ZVNlbGVjdGVkLCBsYXlvdXRSZXZlcnNlZCkKKyAgICB7CisgICAgICAgIHN1cGVyKHByb3BlcnR5
TmFtZXMsIHRleHQsIG51bGwsIG51bGwsICJjb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3Ii
LCBsYXlvdXRSZXZlcnNlZCk7CisKKyAgICAgICAgdGhpcy5faW5zZXJ0TmV3SXRlbXNCZWZvcmVT
ZWxlY3RlZCA9IGluc2VydE5ld0l0ZW1zQmVmb3JlU2VsZWN0ZWQgfHwgZmFsc2U7CisKKyAgICAg
ICAgbGV0IGxpc3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKKyAgICAg
ICAgbGlzdEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRl
ZC1rZXl3b3JkLWxpc3QiKTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGls
ZChsaXN0RWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3JkcyA9
IG5ldyBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUobGlzdEVsZW1lbnQpOworICAgICAgICB0aGlz
Ll9jb21tYVNlcGFyYXRlZEtleXdvcmRzLm9uc2VsZWN0ID0gdGhpcy5fb25UcmVlSXRlbVNlbGVj
dC5iaW5kKHRoaXMpOworCisgICAgICAgIGxldCBjb250cm9sQ29udGFpbmVyID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGNvbnRyb2xDb250YWluZXIuY2xhc3NMaXN0
LmFkZCgidmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWNvbnRyb2xzIik7Cisg
ICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoY29udHJvbENvbnRhaW5lcik7
CisKKyAgICAgICAgd3JhcHBlZFNWR0RvY3VtZW50KCJJbWFnZXMvUGx1cy5zdmciLCAidmlzdWFs
LXN0eWxlLWFkZC1jb21tYS1zZXBhcmF0ZWQta2V5d29yZCIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiQ2xpY2sgdG8gYWRkIGEgbmV3IGl0ZW0uIiksIGZ1bmN0aW9uKHdyYXBwZXIpIHsKKyAgICAg
ICAgICAgIHdyYXBwZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9hZGRFbXB0eUNv
bW1hU2VwYXJhdGVkS2V5d29yZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIGNvbnRyb2xDb250
YWluZXIuYXBwZW5kQ2hpbGQod3JhcHBlcik7CisgICAgICAgIH0uYmluZCh0aGlzKSk7CisKKyAg
ICAgICAgd3JhcHBlZFNWR0RvY3VtZW50KCJJbWFnZXMvTWludXMuc3ZnIiwgInZpc3VhbC1zdHls
ZS1yZW1vdmUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkNsaWNrIHRvIHJlbW92ZSB0aGUgc2VsZWN0ZWQgaXRlbS4iKSwgZnVuY3Rpb24od3JhcHBlcikg
eworICAgICAgICAgICAgd3JhcHBlci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3Jl
bW92ZVNlbGVjdGVkQ29tbWFTZXBhcmF0ZWRLZXl3b3JkLmJpbmQodGhpcykpOworICAgICAgICAg
ICAgY29udHJvbENvbnRhaW5lci5hcHBlbmRDaGlsZCh3cmFwcGVyKTsKKyAgICAgICAgfS5iaW5k
KHRoaXMpKTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIHNldCBzZWxlY3RlZFRyZWVF
bGVtZW50VmFsdWUodGV4dCkKKyAgICB7CisgICAgICAgIGxldCBzZWxlY3RlZFRyZWVFbGVtZW50
ID0gdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5zZWxlY3RlZFRyZWVFbGVtZW50OworICAg
ICAgICBpZiAoIXNlbGVjdGVkVHJlZUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgc2VsZWN0ZWRUcmVlRWxlbWVudC5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoIm5vLXZh
bHVlIiwgIXRleHQgfHwgIXRleHQubGVuZ3RoKTsKKyAgICAgICAgc2VsZWN0ZWRUcmVlRWxlbWVu
dC5tYWluVGl0bGUgPSB0ZXh0OworICAgICAgICB0aGlzLl92YWx1ZURpZENoYW5nZSgpOworICAg
IH0KKworICAgIGdldCB2YWx1ZSgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2NvbW1hU2Vw
YXJhdGVkS2V5d29yZHMuaGFzQ2hpbGRyZW4pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgbGV0IHZhbHVlID0gIiI7CisgICAgICAgIGZvciAobGV0IHRyZWVJdGVtIG9mIHRoaXMuX2Nv
bW1hU2VwYXJhdGVkS2V5d29yZHMuY2hpbGRyZW4pIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl90
cmVlSXRlbUlzRW1wdHkodHJlZUl0ZW0pKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoKQorICAgICAgICAgICAgICAgIHZhbHVlICs9ICIs
ICI7CisKKyAgICAgICAgICAgIGxldCB0ZXh0ID0gdHJlZUl0ZW0ubWFpblRpdGxlOworICAgICAg
ICAgICAgaWYgKHR5cGVvZiB0aGlzLl9tb2RpZnlDb21tYVNlcGFyYXRlZEtleXdvcmQgPT09ICJm
dW5jdGlvbiIpCisgICAgICAgICAgICAgICAgdGV4dCA9IHRoaXMuX21vZGlmeUNvbW1hU2VwYXJh
dGVkS2V5d29yZCh0ZXh0KTsKKworICAgICAgICAgICAgdmFsdWUgKz0gdGV4dDsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisKKyAgICBzZXQgdmFsdWUoY29tbWFT
ZXBhcmF0ZWRWYWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChjb21tYVNlcGFyYXRlZFZhbHVlICYm
IGNvbW1hU2VwYXJhdGVkVmFsdWUgPT09IHRoaXMudmFsdWUpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5yZW1vdmVDaGlsZHJlbigp
OworICAgICAgICBpZiAoIWNvbW1hU2VwYXJhdGVkVmFsdWUgfHwgIWNvbW1hU2VwYXJhdGVkVmFs
dWUubGVuZ3RoKSB7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuRXZlbnQu
Tm9SZW1haW5pbmdUcmVlSXRlbXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgbGV0IHZhbHVlcyA9IGNvbW1hU2VwYXJhdGVkVmFsdWUuc3BsaXQoL1xzKixccyoo
PyFbXlwoXSpcKSkvKTsKKyAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKQorICAgICAg
ICAgICAgdGhpcy5fYWRkQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKHZhbHVlKTsKKworICAgICAgICB0
aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLmNoaWxkcmVuWzBdLnNlbGVjdCh0cnVlKTsKKyAg
ICB9CisKKyAgICBnZXQgc3ludGhlc2l6ZWRWYWx1ZSgpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy52YWx1ZSB8fCBudWxsOworICAgIH0KKworICAgIC8vIFByb3RlY3RlZAorCisgICAgcGFy
c2VWYWx1ZSh0ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIC8oXGIuK1xiKS8uZXhlYyh0ZXh0
KTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfb25UcmVlSXRlbVNlbGVjdChpdGVt
LCBzZWxlY3RlZEJ5VXNlcikKKyAgICB7CisgICAgICAgIHRoaXMuX3JlbW92ZUVtcHR5Q29tbWFT
ZXBhcmF0ZWRLZXl3b3JkcygpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuRXZl
bnQuVHJlZUl0ZW1TZWxlY3RlZCwge3RleHQ6IGl0ZW0ubWFpblRpdGxlfSk7CisgICAgfQorCisg
ICAgX3RyZWVJdGVtSXNFbXB0eShpdGVtKQorICAgIHsKKyAgICAgICAgcmV0dXJuICFpdGVtLl9t
YWluVGl0bGUgfHwgIWl0ZW0uX21haW5UaXRsZS5sZW5ndGg7CisgICAgfQorCisgICAgX2FkZEVt
cHR5Q29tbWFTZXBhcmF0ZWRLZXl3b3JkKCkKKyAgICB7CisgICAgICAgIGxldCBuZXdJdGVtID0g
dGhpcy5fYWRkQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKG51bGwsIHRoaXMuX2NvbW1hU2VwYXJhdGVk
S2V5d29yZHMuc2VsZWN0ZWRUcmVlRWxlbWVudEluZGV4KTsKKyAgICAgICAgbmV3SXRlbS5zdWJ0
aXRsZSA9ICIoIiArIFdlYkluc3BlY3Rvci5VSVN0cmluZygibW9kaWZ5IHRoZSBib3hlcyBiZWxv
dyB0byBhZGQgYSB2YWx1ZSIpICsgIikiOworICAgICAgICBuZXdJdGVtLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgibm8tdmFsdWUiKTsKKyAgICAgICAgbmV3SXRlbS5zZWxlY3QodHJ1ZSwgdHJ1ZSk7
CisgICAgICAgIHJldHVybiBuZXdJdGVtOworICAgIH0KKworICAgIF9yZW1vdmVTZWxlY3RlZENv
bW1hU2VwYXJhdGVkS2V5d29yZCgpCisgICAgeworICAgICAgICBsZXQgc2VsZWN0ZWRUcmVlRWxl
bWVudCA9IHRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29yZHMuc2VsZWN0ZWRUcmVlRWxlbWVudDsK
KyAgICAgICAgdGhpcy5fcmVtb3ZlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKHNlbGVjdGVkVHJlZUVs
ZW1lbnQpOworICAgIH0KKworICAgIF9yZW1vdmVFbXB0eUNvbW1hU2VwYXJhdGVkS2V5d29yZHMo
KQorICAgIHsKKyAgICAgICAgZm9yIChsZXQgdHJlZUl0ZW0gb2YgdGhpcy5fY29tbWFTZXBhcmF0
ZWRLZXl3b3Jkcy5jaGlsZHJlbikgeworICAgICAgICAgICAgaWYgKCF0aGlzLl90cmVlSXRlbUlz
RW1wdHkodHJlZUl0ZW0pIHx8IHRyZWVJdGVtLnNlbGVjdGVkKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICB0cmVlSXRlbS5kZXNlbGVjdCgpOworICAgICAgICAgICAg
dGhpcy5fcmVtb3ZlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKHRyZWVJdGVtKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIF9hZGRDb21tYVNlcGFyYXRlZEtleXdvcmQodmFsdWUsIGluZGV4KQorICAg
IHsKKyAgICAgICAgbGV0IHZhbHVlRWxlbWVudCA9IHRoaXMuX2NyZWF0ZU5ld0xpc3RJdGVtKHZh
bHVlKTsKKyAgICAgICAgbGV0IGluZGV4SXNTZXQgPSAhaXNOYU4oaW5kZXgpOworICAgICAgICBp
ZiAoaW5kZXhJc1NldCkgeworICAgICAgICAgICAgdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jk
cy5pbnNlcnRDaGlsZCh2YWx1ZUVsZW1lbnQsIGluZGV4SXNTZXQgPyBpbmRleCArICF0aGlzLl9p
bnNlcnROZXdJdGVtc0JlZm9yZVNlbGVjdGVkIDogMCk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5hcHBlbmRDaGlsZCh2YWx1ZUVsZW1l
bnQpOworCisgICAgICAgIHJldHVybiB2YWx1ZUVsZW1lbnQ7CisgICAgfQorCisgICAgX3JlbW92
ZUNvbW1hU2VwYXJhdGVkS2V5d29yZCh0cmVlRWxlbWVudCkKKyAgICB7CisgICAgICAgIGlmICgh
dHJlZUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fY29tbWFT
ZXBhcmF0ZWRLZXl3b3Jkcy5yZW1vdmVDaGlsZCh0cmVlRWxlbWVudCk7CisgICAgICAgIGlmICgh
dGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5jaGlsZHJlbi5sZW5ndGgpCisgICAgICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVD
b21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuRXZlbnQuTm9SZW1haW5pbmdUcmVlSXRlbXMpOwor
CisgICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgfQorCisgICAgX2NyZWF0ZU5l
d0xpc3RJdGVtKHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3Iu
R2VuZXJhbFRyZWVFbGVtZW50KFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVk
S2V5d29yZEVkaXRvci5MaXN0SXRlbUNsYXNzTmFtZSwgdmFsdWUpOworICAgIH0KK307CisKK1dl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5MaXN0SXRl
bUNsYXNzTmFtZSA9ICJ2aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbSI7
CisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5F
dmVudCA9IHsKKyAgICBUcmVlSXRlbVNlbGVjdGVkOiAidmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFy
YXRlZC1rZXl3b3JkLWVkaXRvci10cmVlLWl0ZW0tc2VsZWN0ZWQiLAorICAgIE5vUmVtYWluaW5n
VHJlZUl0ZW1zOiAidmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvci1u
by1yZW1haW5pbmctdHJlZS1pdGVtcyIKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RFZGl0b3Iu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHls
ZUZvbnRGYW1pbHlMaXN0RWRpdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0YTYwYWE2MzU0N2VjZDViNThl
NWRhYjgxMjFjZDgzNDJkMDJlZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9y
LmpzCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlRm9udEZhbWlseUxpc3RFZGl0b3IgPSBjbGFzcyBWaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0
RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3
b3JkRWRpdG9yCit7CisgICAgY29uc3RydWN0b3IocHJvcGVydHlOYW1lcywgdGV4dCwgbGF5b3V0
UmV2ZXJzZWQpCisgICAgeworICAgICAgICBzdXBlcihwcm9wZXJ0eU5hbWVzLCB0ZXh0LCB0cnVl
LCBsYXlvdXRSZXZlcnNlZCk7CisKKyAgICAgICAgdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jk
cy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHRoaXMuX2hpZGVDb21wbGV0aW9u
cy5iaW5kKHRoaXMpKTsKKworICAgICAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlciA9IG5l
dyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21wbGV0aW9uc0NvbnRyb2xsZXIodGhpcyk7Cisg
ICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlQ29tcGxldGlvbnNDb250cm9sbGVyLkV2ZW50LkNvbXBsZXRpb25T
ZWxlY3RlZCwgdGhpcy5fY29tcGxldGlvbkNsaWNrZWQsIHRoaXMpOworCisgICAgICAgIHRoaXMu
X3dyYXBXaXRoUXVvdGVzUmVnRXhwID0gL15bYS16QS1aXC1dKyQvOworICAgICAgICB0aGlzLl9y
ZW1vdmVXcmFwcGVkUXVvdGVzUmVnRXhwID0gL1tcIlwnXS9nOworICAgIH0KKworICAgIC8vIFB1
YmxpYworCisgICAgY29tcGxldGlvblN1Z2dlc3Rpb25zT25JdGVtQ3JlYXRlZChlbGVtZW50LCBp
dGVtKQorICAgIHsKKyAgICAgICAgZWxlbWVudC5zdHlsZS5mb250RmFtaWx5ID0gaXRlbTsKKyAg
ICB9CisKKyAgICBnZXQgaGFzQ29tcGxldGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX2NvbXBsZXRpb25Db250cm9sbGVyLmhhc0NvbXBsZXRpb25zOworICAgIH0KKworICAgIHNl
dCBjb21wbGV0aW9ucyhjb21wbGV0aW9ucykKKyAgICB7CisgICAgICAgIHRoaXMuX2NvbXBsZXRp
b25Db250cm9sbGVyLmNvbXBsZXRpb25zID0gY29tcGxldGlvbnM7CisgICAgfQorCisgICAgLy8g
UHJpdmF0ZQorCisgICAgX21vZGlmeUNvbW1hU2VwYXJhdGVkS2V5d29yZCh0ZXh0KQorICAgIHsK
KyAgICAgICAgaWYgKCF0aGlzLl93cmFwV2l0aFF1b3Rlc1JlZ0V4cC50ZXN0KHRleHQpKQorICAg
ICAgICAgICAgdGV4dCA9ICJcIiIgKyB0ZXh0ICsgIlwiIjsKKworICAgICAgICByZXR1cm4gdGV4
dDsKKyAgICB9CisKKyAgICBfYWRkQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKHZhbHVlLCBpbmRleCkK
KyAgICB7CisgICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVw
bGFjZSh0aGlzLl9yZW1vdmVXcmFwcGVkUXVvdGVzUmVnRXhwLCAiIik7CisKKyAgICAgICAgbGV0
IHZhbHVlRWxlbWVudCA9IHN1cGVyLl9hZGRDb21tYVNlcGFyYXRlZEtleXdvcmQodmFsdWUsIGlu
ZGV4KTsKKyAgICAgICAgdmFsdWVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVJdGVtLkV2ZW50LkVkaXRvcktleURvd24sIHRoaXMu
X2l0ZW1FZGl0b3JLZXlEb3duLCB0aGlzKTsKKyAgICAgICAgdmFsdWVFbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVJdGVtLkV2ZW50
LktleXdvcmRDaGFuZ2VkLCB0aGlzLl9pdGVtRWRpdG9yS2V5d29yZENoYW5nZWQsIHRoaXMpOwor
ICAgICAgICB2YWx1ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVGb250RmFtaWx5VHJlZUl0ZW0uRXZlbnQuRWRpdG9yQmx1cnJlZCwgdGhpcy5faGlkZUNv
bXBsZXRpb25zLCB0aGlzKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlRWxlbWVudDsKKyAgICB9CisK
KyAgICBfYWRkRW1wdHlDb21tYVNlcGFyYXRlZEtleXdvcmQoKQorICAgIHsKKyAgICAgICAgbGV0
IG5ld0l0ZW0gPSBzdXBlci5fYWRkRW1wdHlDb21tYVNlcGFyYXRlZEtleXdvcmQoKTsKKyAgICAg
ICAgbmV3SXRlbS5zaG93S2V5d29yZEVkaXRvcigpOworICAgIH0KKworICAgIF9jb21wbGV0aW9u
Q2xpY2tlZChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMudmFsdWUgPSBldmVudC5kYXRhLnRl
eHQ7CisgICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgfQorCisgICAgX2l0ZW1F
ZGl0b3JLZXlEb3duKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9jb21wbGV0aW9u
Q29udHJvbGxlci52aXNpYmxlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBr
ZXkgPSBldmVudCAmJiBldmVudC5kYXRhICYmIGV2ZW50LmRhdGEua2V5OworICAgICAgICBpZiAo
IWtleSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoa2V5ID09PSAiRW50ZXIi
IHx8IGtleSA9PT0gIlRhYiIpIHsKKyAgICAgICAgICAgIGxldCBzZWxlY3RlZFRyZWVFbGVtZW50
ID0gdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5zZWxlY3RlZFRyZWVFbGVtZW50OworICAg
ICAgICAgICAgaWYgKCFzZWxlY3RlZFRyZWVFbGVtZW50KQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgc2VsZWN0ZWRUcmVlRWxlbWVudC51cGRhdGVNYWluVGl0bGUodGhp
cy5fY29tcGxldGlvbkNvbnRyb2xsZXIuY3VycmVudENvbXBsZXRpb24pOworICAgICAgICAgICAg
dGhpcy5fY29tcGxldGlvbkNvbnRyb2xsZXIuaGlkZSgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKGtleSA9PT0gIkVzY2FwZSIpIHsKKyAgICAgICAgICAg
IHRoaXMuX2hpZGVDb21wbGV0aW9ucygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKGtleSA9PT0gIlVwIikgeworICAgICAgICAgICAgdGhpcy5fY29tcGxl
dGlvbkNvbnRyb2xsZXIucHJldmlvdXMoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChrZXkgPT09ICJEb3duIikgeworICAgICAgICAgICAgdGhpcy5fY29t
cGxldGlvbkNvbnRyb2xsZXIubmV4dCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfQorCisgICAgX2l0ZW1FZGl0b3JLZXl3b3JkQ2hhbmdlZCgpCisgICAgeworICAgICAg
ICBpZiAoIXRoaXMuaGFzQ29tcGxldGlvbnMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgbGV0IHJlc3VsdCA9IHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgICAgIGlmICghcmVz
dWx0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCB0cmVlSXRlbSA9IHRoaXMu
X2NvbW1hU2VwYXJhdGVkS2V5d29yZHMuc2VsZWN0ZWRUcmVlRWxlbWVudDsKKyAgICAgICAgaWYg
KCF0cmVlSXRlbSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodGhpcy5fY29t
cGxldGlvbkNvbnRyb2xsZXIudXBkYXRlKHRyZWVJdGVtLm1haW5UaXRsZSkpIHsKKyAgICAgICAg
ICAgIGxldCBib3VuZHMgPSB0cmVlSXRlbS5lZGl0b3JCb3VuZHMoMik7CisgICAgICAgICAgICBp
ZiAoIWJvdW5kcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHRoaXMu
X2NvbXBsZXRpb25Db250cm9sbGVyLnNob3coYm91bmRzKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIF9oaWRlQ29tcGxldGlvbnMoKQorICAgIHsKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbkNv
bnRyb2xsZXIuaGlkZSgpOworICAgIH0KKworICAgIF9jcmVhdGVOZXdMaXN0SXRlbSh2YWx1ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZh
bWlseVRyZWVJdGVtKHZhbHVlKTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUl0
ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxT
dHlsZUZvbnRGYW1pbHlUcmVlSXRlbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzBkYTJiYzQ0MzIzYjdjMjE4
YjgwYjhlOTBkNzAyODY3NmEwMzA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUl0ZW0u
anMKQEAgLTAsMCArMSwxNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVGb250RmFtaWx5VHJlZUl0ZW0gPSBjbGFzcyBWaXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlSXRl
bSBleHRlbmRzIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQKK3sKKyAgICBjb25zdHJ1
Y3Rvcih0ZXh0KQorICAgIHsKKyAgICAgICAgc3VwZXIoW1dlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5MaXN0SXRlbUNsYXNzTmFtZSwgInZpc3VhbC1z
dHlsZS1mb250LWZhbWlseS1saXN0LWl0ZW0iXSwgdGV4dCk7CisKKyAgICAgICAgdGhpcy5fa2V5
d29yZEVkaXRvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAgICAgIHRo
aXMuX2tleXdvcmRFZGl0b3IuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFy
YXRlZC1rZXl3b3JkLWl0ZW0tZWRpdG9yIik7CisgICAgICAgIHRoaXMuX2tleXdvcmRFZGl0b3Iu
cGxhY2Vob2xkZXIgPSAiKCIgKyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIm1vZGlmeSB0aGUgYm94
ZXMgYmVsb3cgdG8gYWRkIGEgdmFsdWUiKSArICIpIjsKKyAgICAgICAgdGhpcy5fa2V5d29yZEVk
aXRvci5zcGVsbGNoZWNrID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2tleXdvcmRFZGl0b3IuYWRk
RXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2tleXdvcmRFZGl0b3JLZXlEb3duLmJpbmQo
dGhpcykpOworICAgICAgICB0aGlzLl9rZXl3b3JkRWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoImtl
eXVwIiwgdGhpcy5fa2V5d29yZEVkaXRvcktleVVwLmJpbmQodGhpcykpOworICAgICAgICB0aGlz
Ll9rZXl3b3JkRWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlzLl9rZXl3b3JkRWRp
dG9yQmx1cnJlZC5iaW5kKHRoaXMpKTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGVk
aXRvckJvdW5kcyhwYWRkaW5nKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMua2V5d29yZEVkaXRv
ckhpZGRlbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgYm91bmRzID0gV2Vi
SW5zcGVjdG9yLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KHRoaXMuX2tleXdvcmRFZGl0b3IuZ2V0
Qm91bmRpbmdDbGllbnRSZWN0KCkpOworICAgICAgICByZXR1cm4gYm91bmRzLnBhZChwYWRkaW5n
IHx8IDApOworICAgIH0KKworICAgIHVwZGF0ZU1haW5UaXRsZSh0ZXh0KQorICAgIHsKKyAgICAg
ICAgdGhpcy5tYWluVGl0bGUgPSB0aGlzLl9saXN0SXRlbU5vZGUuc3R5bGUuZm9udEZhbWlseSA9
IHRoaXMuX2tleXdvcmRFZGl0b3IudmFsdWUgPSB0ZXh0OworCisgICAgICAgIGxldCBoYXNUZXh0
ID0gdGV4dCAmJiB0ZXh0Lmxlbmd0aDsKKyAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNz
TGlzdC50b2dnbGUoIm5vLXZhbHVlIiwgIWhhc1RleHQpOworICAgICAgICBpZiAoIWhhc1RleHQp
CisgICAgICAgICAgICB0aGlzLnN1YnRpdGxlID0gdGhpcy5fa2V5d29yZEVkaXRvci5wbGFjZWhv
bGRlcjsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUl0ZW0uRXZlbnQuS2V5d29yZENoYW5nZWQpOwor
ICAgIH0KKworICAgIHNob3dLZXl3b3JkRWRpdG9yKCkKKyAgICB7CisgICAgICAgIGlmICghdGhp
cy5rZXl3b3JkRWRpdG9ySGlkZGVuKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMuc3VidGl0bGUgPSAiIjsKKyAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5y
ZW1vdmUoImVkaXRvci1oaWRkZW4iKTsKKyAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLnNjcm9s
bEludG9WaWV3SWZOZWVkZWQoKTsKKworICAgICAgICB0aGlzLl9rZXl3b3JkRWRpdG9yLnZhbHVl
ID0gdGhpcy5fbWFpblRpdGxlOworICAgICAgICB0aGlzLl9rZXl3b3JkRWRpdG9yLnNlbGVjdCgp
OworICAgIH0KKworICAgIGhpZGVLZXl3b3JkRWRpdG9yKCkKKyAgICB7CisgICAgICAgIGlmICh0
aGlzLmtleXdvcmRFZGl0b3JIaWRkZW4pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dGhpcy51cGRhdGVNYWluVGl0bGUodGhpcy5fa2V5d29yZEVkaXRvci52YWx1ZSk7CisgICAgICAg
IHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRkKCJlZGl0b3ItaGlkZGVuIik7CisgICAg
fQorCisgICAgZ2V0IGtleXdvcmRFZGl0b3JIaWRkZW4oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuY29udGFpbnMoImVkaXRvci1oaWRkZW4iKTsK
KyAgICB9CisKKyAgICAvLyBPdmVycmlkZXMgZnJvbSBUcmVlRWxlbWVudCAoUHJpdmF0ZSkKKwor
ICAgIG9uYXR0YWNoKCkKKyAgICB7CisgICAgICAgIHN1cGVyLm9uYXR0YWNoKCk7CisKKyAgICAg
ICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLnN0eWxlLmZvbnRGYW1pbHkgPSB0aGlzLl9tYWluVGl0bGU7
CisgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRkKCJlZGl0b3ItaGlkZGVu
Iik7CisgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hcHBlbmRDaGlsZCh0aGlzLl9rZXl3b3Jk
RWRpdG9yKTsKKyAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgdGhpcy5zaG93S2V5d29yZEVkaXRvci5iaW5kKHRoaXMpKTsKKyAgICB9CisKKyAgICBv
bmRlc2VsZWN0KCkKKyAgICB7CisgICAgICAgIHRoaXMuaGlkZUtleXdvcmRFZGl0b3IoKTsKKyAg
ICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfa2V5d29yZEVkaXRvcktleURvd24oZXZlbnQp
CisgICAgeworICAgICAgICBpZiAodGhpcy5rZXl3b3JkRWRpdG9ySGlkZGVuKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGxldCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTsKKyAgICAg
ICAgbGV0IGVudGVyS2V5Q29kZSA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5F
bnRlci5rZXlDb2RlOworICAgICAgICBpZiAoa2V5Q29kZSA9PT0gZW50ZXJLZXlDb2RlKSB7Cisg
ICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LmFkZCgiZWRpdG9yLWhpZGRl
biIpOworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVJdGVtLkV2ZW50LkVkaXRvcktleURvd24sIHtr
ZXk6ICJFbnRlciJ9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGxldCBlc2NhcGVLZXlDb2RlID0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVz
Y2FwZS5rZXlDb2RlOworICAgICAgICBpZiAoa2V5Q29kZSA9PT0gZXNjYXBlS2V5Q29kZSkgewor
ICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlRm9udEZhbWlseVRyZWVJdGVtLkV2ZW50LkVkaXRvcktleURvd24sIHtrZXk6ICJF
c2NhcGUifSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBsZXQg
dGFiS2V5Q29kZSA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5UYWIua2V5Q29k
ZTsKKyAgICAgICAgaWYgKGtleUNvZGUgPT09IHRhYktleUNvZGUpIHsKKyAgICAgICAgICAgIGV2
ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICB0aGlzLl9kb250RmlyZUtleVVwID0g
dHJ1ZTsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlSXRlbS5FdmVudC5FZGl0b3JLZXlEb3duLCB7
a2V5OiAiVGFiIn0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
bGV0IGtleSA9IGV2ZW50LmtleUlkZW50aWZpZXI7CisgICAgICAgIGlmIChrZXkgPT09ICJVcCIg
fHwga2V5ID09PSAiRG93biIpIHsKKyAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7
CisgICAgICAgICAgICB0aGlzLl9kb250RmlyZUtleVVwID0gdHJ1ZTsKKyAgICAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRG
YW1pbHlUcmVlSXRlbS5FdmVudC5FZGl0b3JLZXlEb3duLCB7a2V5fSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUl0ZW0uRXZlbnQuRWRpdG9y
S2V5RG93bik7CisgICAgfQorCisgICAgX2tleXdvcmRFZGl0b3JLZXlVcCgpCisgICAgeworICAg
ICAgICBpZiAodGhpcy5rZXl3b3JkRWRpdG9ySGlkZGVuIHx8IHRoaXMuX2RvbnRGaXJlS2V5VXAp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy51cGRhdGVNYWluVGl0bGUodGhp
cy5fa2V5d29yZEVkaXRvci52YWx1ZSk7CisgICAgfQorCisgICAgX2tleXdvcmRFZGl0b3JCbHVy
cmVkKCkKKyAgICB7CisgICAgICAgIHRoaXMuaGlkZUtleXdvcmRFZGl0b3IoKTsKKyAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9u
dEZhbWlseVRyZWVJdGVtLkV2ZW50LkVkaXRvckJsdXJyZWQpOworICAgIH0KK307CisKK1dlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlSXRlbS5FdmVudCA9IHsKKyAgICBLZXl3
b3JkQ2hhbmdlZDogInZpc3VhbC1zdHlsZS1mb250LWZhbWlseS10cmVlLWl0ZW0ta2V5d29yZC1j
aGFuZ2VkIiwKKyAgICBFZGl0b3JLZXlEb3duOiAidmlzdWFsLXN0eWxlLWZvbnQtZmFtaWx5LXRy
ZWUtaXRlbS1lZGl0b3Ita2V5LWRvd24iLAorICAgIEVkaXRvckJsdXJyZWQ6ICJ2aXN1YWwtc3R5
bGUtZm9udC1mYW1pbHktdHJlZS1pdGVtLWVkaXRvci1ibHVycmVkIgorfTsK
</data>
<flag name="review"
          id="283638"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258991</attachid>
            <date>2015-08-14 00:19:30 -0700</date>
            <delta_ts>2015-08-14 12:13:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>147578.txt</filename>
            <type>text/plain</type>
            <size>35479</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDM4MjVhMDIuLmIzMWJlOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE1LTA4LTEzICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgVmlzdWFs
IGVkaXRvcnMgZm9yIENTUyBwcm9wZXJ0aWVzIHdpdGggY29tbWEgc2VwYXJhdGVkIHZhbHVlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NTc4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIERpc3BsYXlz
IGNvbW1hIHNlcGFyYXRlZCBDU1MgcHJvcGVydHkgdmFsdWVzIGFzIGEgdHJlZSBvdXRsaW5lIGxp
c3QuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0ltYWdlcy9NaW51cy5zdmc6IEFkZGVkLgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUucHJvdG90eXBlLmdldCBzZWxlY3RlZFRyZWVFbGVtZW50
SW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lKToKKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0
b3IuY3NzOiBBZGRlZC4KKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVy
LmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvcik6CisgICAgICAgICgudmlzdWFsLXN0eWxl
LXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlz
dWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lcik6CisgICAgICAgICgudmlzdWFsLXN0
eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29t
bWEtc2VwYXJhdGVkLWtleXdvcmQtbGlzdCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJh
dGVkLWtleXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQt
aXRlbSk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1z
ZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNv
bnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtbGlzdCA+IC52
aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbTpudGgtY2hpbGQob2RkKSk6
CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0
ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5l
ciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtbGlzdCA+IC52aXN1YWwt
c3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbS5zZWxlY3RlZCk6CisgICAgICAgICgu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1l
ZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwt
c3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29tbWEt
c2VwYXJhdGVkLWtleXdvcmQtaXRlbSA+IDptYXRjaGVzKGJ1dHRvbiwgaW1nKSk6CisgICAgICAg
ICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29y
ZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1
YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29t
bWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbSA+IC50aXRsZXMpOgorICAgICAgICAoLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNv
bW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRl
ZC1rZXl3b3JkLWl0ZW0udmlzdWFsLXN0eWxlLWZvbnQtZmFtaWx5LWxpc3QtaXRlbS5zZWxlY3Rl
ZDpub3QoLmVkaXRvci1oaWRkZW4pID4gLnRpdGxlcyA+ICopOgorICAgICAgICAoLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNv
bW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRl
ZC1rZXl3b3JkLWl0ZW0udmlzdWFsLXN0eWxlLWZvbnQtZmFtaWx5LWxpc3QtaXRlbSA+IC52aXN1
YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbS1lZGl0b3IpOgorICAgICAgICAo
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQt
ZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFs
LXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1h
LXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0udmlzdWFsLXN0eWxlLWZvbnQtZmFtaWx5LWxpc3QtaXRl
bS5lZGl0b3ItaGlkZGVuID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1p
dGVtLWVkaXRvcik6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5j
b21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZh
bHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtbGlz
dCA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbSA+IC50aXRsZXMg
PiAuc3VidGl0bGUpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIu
Y29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12
YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxp
c3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW06bm90KC5uby12
YWx1ZSkgPiAudGl0bGVzID4gLnN1YnRpdGxlKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwt
c3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBh
cmF0ZWQta2V5d29yZC1jb250cm9scyk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5
LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxl
LXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVk
LWtleXdvcmQtY29udHJvbHMgPiBkaXYpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRl
ZC1rZXl3b3JkLWNvbnRyb2xzID4gLnZpc3VhbC1zdHlsZS1yZW1vdmUtY29tbWEtc2VwYXJhdGVk
LWtleXdvcmQpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNv
bW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlw
ZS5zZXQgc2VsZWN0ZWRUcmVlRWxlbWVudFZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5wcm90b3R5cGUuZ2V0IHZhbHVl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29y
ZEVkaXRvci5wcm90b3R5cGUuc2V0IHZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5wcm90b3R5cGUuZ2V0IHN5bnRoZXNp
emVkVmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0
ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlwZS5fdHJlZUVsZW1lbnRTZWxlY3RlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IucHJv
dG90eXBlLl90cmVlSXRlbUlzRW1wdHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlwZS5fYWRkRW1wdHlDb21tYVNl
cGFyYXRlZEtleXdvcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFT
ZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlwZS5fcmVtb3ZlU2VsZWN0ZWRDb21tYVNlcGFy
YXRlZEtleXdvcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBh
cmF0ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlwZS5fcmVtb3ZlRW1wdHlDb21tYVNlcGFyYXRlZEtl
eXdvcmRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVk
S2V5d29yZEVkaXRvci5wcm90b3R5cGUuX2FkZENvbW1hU2VwYXJhdGVkS2V5d29yZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3Iu
cHJvdG90eXBlLl9yZW1vdmVDb21tYVNlcGFyYXRlZEtleXdvcmQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlwZS5f
Y3JlYXRlTmV3VHJlZUVsZW1lbnQpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9W
aXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9yKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9yLnByb3RvdHlwZS52aXN1YWxT
dHlsZUNvbXBsZXRpb25zQ29udHJvbGxlckN1c3RvbWl6ZUNvbXBsZXRpb25FbGVtZW50KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9yLnByb3Rv
dHlwZS5nZXQgaGFzQ29tcGxldGlvbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlRm9udEZhbWlseUxpc3RFZGl0b3IucHJvdG90eXBlLnNldCBjb21wbGV0aW9ucyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvci5wcm90b3R5
cGUuX21vZGlmeUNvbW1hU2VwYXJhdGVkS2V5d29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvci5wcm90b3R5cGUuX2FkZENvbW1hU2VwYXJh
dGVkS2V5d29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5
TGlzdEVkaXRvci5wcm90b3R5cGUuX2FkZEVtcHR5Q29tbWFTZXBhcmF0ZWRLZXl3b3JkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9yLnByb3Rv
dHlwZS5fY29tcGxldGlvbkNsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlRm9udEZhbWlseUxpc3RFZGl0b3IucHJvdG90eXBlLl90cmVlRWxlbWVudEtleURvd24pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RFZGl0b3IucHJv
dG90eXBlLl90cmVlRWxlbWVudEtleXdvcmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9yLnByb3RvdHlwZS5faGlkZUNvbXBsZXRp
b25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRp
dG9yLnByb3RvdHlwZS5fY3JlYXRlTmV3VHJlZUVsZW1lbnQpOgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlRWxlbWVudC5qczogQWRkZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUVsZW1lbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVFbGVtZW50
LnByb3RvdHlwZS5lZGl0b3JCb3VuZHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlRm9udEZhbWlseVRyZWVFbGVtZW50LnByb3RvdHlwZS51cGRhdGVNYWluVGl0bGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVFbGVtZW50LnByb3Rv
dHlwZS5zaG93S2V5d29yZEVkaXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVGb250RmFtaWx5VHJlZUVsZW1lbnQucHJvdG90eXBlLmhpZGVLZXl3b3JkRWRpdG9yKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlRWxlbWVudC5wcm90
b3R5cGUuZ2V0IGtleXdvcmRFZGl0b3JIaWRkZW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlRm9udEZhbWlseVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUVsZW1lbnQucHJvdG90
eXBlLm9uZGVzZWxlY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZh
bWlseVRyZWVFbGVtZW50LnByb3RvdHlwZS5fa2V5d29yZEVkaXRvcktleURvd24pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVFbGVtZW50LnByb3RvdHlw
ZS5fa2V5d29yZEVkaXRvcktleVVwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZUZvbnRGYW1pbHlUcmVlRWxlbWVudC5wcm90b3R5cGUuX2tleXdvcmRFZGl0b3JCbHVycmVkKToK
KwogMjAxNS0wOC0xMyAgTmlraXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBDYW4ndCByZXNpemUgc3BsaXQgY29uc29sZSB3aGVuIHdp
bmRvdyBpcyB0b28gbmFycm93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9JbWFnZXMvTWludXMuc3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvSW1hZ2VzL01pbnVzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4xNGYyOTVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvSW1hZ2VzL01pbnVzLnN2ZwpAQCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTMgMTMiPgorICAgIDxs
aW5lIGNsYXNzPSJzdHJva2VkIiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiB4MT0iMS41IiB5
MT0iNi41IiB4Mj0iMTEuNSIgeTI9IjYuNSIvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCmluZGV4
IGQ1ZDA3YzUuLjBhODJjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCkBAIC01MDQsNiArNTA0LDE5IEBA
IFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZSA9IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogICAgIHsKICAgICAgICAgLy8gdGhpcyBpcyB0aGUgcm9vdCwgZG8g
bm90aGluZwogICAgIH0KKworICAgIGdldCBzZWxlY3RlZFRyZWVFbGVtZW50SW5kZXgoKQorICAg
IHsKKyAgICAgICAgaWYgKCF0aGlzLmhhc0NoaWxkcmVuIHx8ICF0aGlzLnNlbGVjdGVkVHJlZUVs
ZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAodGhpcy5jaGls
ZHJlbltpXSA9PT0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50KQorICAgICAgICAgICAgICAgIHJl
dHVybiBpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIH07CiAK
IFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZS5fa25vd25UcmVlRWxlbWVudE5leHRJZGVudGlmaWVy
ID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLmNzcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0
ZWRLZXl3b3JkRWRpdG9yLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4z
ZDJmM2I1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuY3NzCkBA
IC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250
YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yIHsKKyAgICBtYXJnaW4tYm90dG9t
OiA1cHg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFy
YXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFp
bmVyIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBoc2woMCwgMCUsIDgzJSk7CisgICAgb3ZlcmZs
b3c6IGF1dG87CisgICAgZm9udC1zaXplOiAxMXB4OworfQorCisudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJh
dGVkLWtleXdvcmQtbGlzdCB7CisgICAgbWluLWhlaWdodDogNTFweDsKKyAgICBtYXgtaGVpZ2h0
OiA5NHB4OworICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAwOworICAgIGJhY2tncm91bmQt
Y29sb3I6IGhzbCgwLCAwJSwgOTUlKTsKKyAgICBvdmVyZmxvdzogYXV0bzsKKyAgICBvdXRsaW5l
OiBub25lOworICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKK30KKworLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNl
cGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3
b3JkLWl0ZW0geworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICB3aWR0aDogMTAwJTsKKyAg
ICBoZWlnaHQ6IDE3cHg7CisgICAgbGluZS1oZWlnaHQ6IDE3cHg7CisgICAgb3ZlcmZsb3c6IGhp
ZGRlbjsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJh
dGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWlu
ZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFs
LXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW06bnRoLWNoaWxkKG9kZCkgeworICAg
IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNv
bnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtl
eXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbS5z
ZWxlY3RlZCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDIxMywgOTIlLCA1NSUpICFpbXBv
cnRhbnQ7CisgICAgY29sb3I6IHdoaXRlOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNv
bnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtl
eXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbSA+
IDptYXRjaGVzKGJ1dHRvbiwgaW1nKSB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9y
ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxl
LWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFy
YXRlZC1rZXl3b3JkLWl0ZW0gPiAudGl0bGVzIHsKKyAgICBwYWRkaW5nLWxlZnQ6IDNweDsKK30K
KworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdv
cmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlz
dWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNv
bW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0udmlzdWFsLXN0eWxlLWZvbnQtZmFtaWx5LWxpc3Qt
aXRlbS5zZWxlY3RlZDpub3QoLmVkaXRvci1oaWRkZW4pID4gLnRpdGxlcyA+ICogeworICAgIGNv
bG9yOiB0cmFuc3BhcmVudDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIu
Y29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12
YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxp
c3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0udmlzdWFsLXN0
eWxlLWZvbnQtZmFtaWx5LWxpc3QtaXRlbSA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVk
LWtleXdvcmQtaXRlbS1lZGl0b3IgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6
IDA7CisgICAgcmlnaHQ6IDNweDsKKyAgICBib3R0b206IDA7CisgICAgbGVmdDogM3B4OworICAg
IG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAwOworICAgIGxpbmUtaGVpZ2h0OiAxM3B4OworICAg
IGJvcmRlcjogbm9uZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICBm
b250LWZhbWlseTogaW5oZXJpdDsKKyAgICBjb2xvcjogd2hpdGU7CisgICAgei1pbmRleDogMTsK
K30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtl
eXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAu
dmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxl
LWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0udmlzdWFsLXN0eWxlLWZvbnQtZmFtaWx5LWxp
c3QtaXRlbS5lZGl0b3ItaGlkZGVuID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5
d29yZC1pdGVtLWVkaXRvciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1h
LXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1r
ZXl3b3JkLWl0ZW0gPiAudGl0bGVzID4gLnN1YnRpdGxlIHsKKyAgICBmb250LXNpemU6IDlweDsK
KyAgICBjb2xvcjogaHNsKDAsIDAlLCA4MyUpOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5
LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxl
LXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVk
LWtleXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRl
bTpub3QoLm5vLXZhbHVlKSA+IC50aXRsZXMgPiAuc3VidGl0bGUgeworICAgIGRpc3BsYXk6IG5v
bmU7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRl
ZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVy
ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1jb250cm9scyB7CisgICAg
ZGlzcGxheTogZmxleDsKKyAgICBib3JkZXItdG9wOiAxcHggc29saWQgaHNsKDAsIDAlLCA4MyUp
OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQt
a2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+
IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtY29udHJvbHMgPiBkaXYgewor
ICAgIHdpZHRoOiAyMHB4OworICAgIGhlaWdodDogMTlweDsKKyAgICBwYWRkaW5nOiA0cHg7Cisg
ICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgaHNsKDAsIDAlLCA4MyUpOworICAgIGZpbHRlcjog
b3BhY2l0eSgwLjcpOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21t
YS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVl
LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtY29udHJv
bHMgPiAudmlzdWFsLXN0eWxlLXJlbW92ZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZCB7CisgICAg
b3JkZXI6IDI7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQ29tbWFT
ZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjE3ZmY5MzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5q
cwpAQCAtMCwwICsxLDE4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvciA9IGNsYXNzIFZpc3VhbFN0eWxlQ29tbWFTZXBh
cmF0ZWRLZXl3b3JkRWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVy
dHlFZGl0b3IKK3sKKyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eU5hbWVzLCB0ZXh0LCBpbnNlcnRO
ZXdJdGVtc0JlZm9yZVNlbGVjdGVkLCBsYXlvdXRSZXZlcnNlZCkKKyAgICB7CisgICAgICAgIHN1
cGVyKHByb3BlcnR5TmFtZXMsIHRleHQsIG51bGwsIG51bGwsICJjb21tYS1zZXBhcmF0ZWQta2V5
d29yZC1lZGl0b3IiLCBsYXlvdXRSZXZlcnNlZCk7CisKKyAgICAgICAgdGhpcy5faW5zZXJ0TmV3
SXRlbXNCZWZvcmVTZWxlY3RlZCA9IGluc2VydE5ld0l0ZW1zQmVmb3JlU2VsZWN0ZWQgfHwgZmFs
c2U7CisKKyAgICAgICAgbGV0IGxpc3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
b2wiKTsKKyAgICAgICAgbGlzdEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLWNv
bW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QiKTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVu
dC5hcHBlbmRDaGlsZChsaXN0RWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fY29tbWFTZXBhcmF0
ZWRLZXl3b3JkcyA9IG5ldyBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUobGlzdEVsZW1lbnQpOwor
ICAgICAgICB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLm9uc2VsZWN0ID0gdGhpcy5fdHJl
ZUVsZW1lbnRTZWxlY3RlZC5iaW5kKHRoaXMpOworCisgICAgICAgIGxldCBjb250cm9sQ29udGFp
bmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGNvbnRyb2xDb250
YWluZXIuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3Jk
LWNvbnRyb2xzIik7CisgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoY29u
dHJvbENvbnRhaW5lcik7CisKKyAgICAgICAgd3JhcHBlZFNWR0RvY3VtZW50KCJJbWFnZXMvUGx1
cy5zdmciLCAidmlzdWFsLXN0eWxlLWFkZC1jb21tYS1zZXBhcmF0ZWQta2V5d29yZCIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ2xpY2sgdG8gYWRkIGEgbmV3IGl0ZW0uIiksIGZ1bmN0aW9uKHdy
YXBwZXIpIHsKKyAgICAgICAgICAgIHdyYXBwZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0
aGlzLl9hZGRFbXB0eUNvbW1hU2VwYXJhdGVkS2V5d29yZC5iaW5kKHRoaXMpKTsKKyAgICAgICAg
ICAgIGNvbnRyb2xDb250YWluZXIuYXBwZW5kQ2hpbGQod3JhcHBlcik7CisgICAgICAgIH0uYmlu
ZCh0aGlzKSk7CisKKyAgICAgICAgd3JhcHBlZFNWR0RvY3VtZW50KCJJbWFnZXMvTWludXMuc3Zn
IiwgInZpc3VhbC1zdHlsZS1yZW1vdmUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQiLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkNsaWNrIHRvIHJlbW92ZSB0aGUgc2VsZWN0ZWQgaXRlbS4iKSwgZnVu
Y3Rpb24od3JhcHBlcikgeworICAgICAgICAgICAgd3JhcHBlci5hZGRFdmVudExpc3RlbmVyKCJj
bGljayIsIHRoaXMuX3JlbW92ZVNlbGVjdGVkQ29tbWFTZXBhcmF0ZWRLZXl3b3JkLmJpbmQodGhp
cykpOworICAgICAgICAgICAgY29udHJvbENvbnRhaW5lci5hcHBlbmRDaGlsZCh3cmFwcGVyKTsK
KyAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIHNl
dCBzZWxlY3RlZFRyZWVFbGVtZW50VmFsdWUodGV4dCkKKyAgICB7CisgICAgICAgIGxldCBzZWxl
Y3RlZFRyZWVFbGVtZW50ID0gdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5zZWxlY3RlZFRy
ZWVFbGVtZW50OworICAgICAgICBpZiAoIXNlbGVjdGVkVHJlZUVsZW1lbnQpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgc2VsZWN0ZWRUcmVlRWxlbWVudC5lbGVtZW50LmNsYXNzTGlz
dC50b2dnbGUoIm5vLXZhbHVlIiwgIXRleHQgfHwgIXRleHQubGVuZ3RoKTsKKyAgICAgICAgc2Vs
ZWN0ZWRUcmVlRWxlbWVudC5tYWluVGl0bGUgPSB0ZXh0OworICAgICAgICB0aGlzLl92YWx1ZURp
ZENoYW5nZSgpOworICAgIH0KKworICAgIGdldCB2YWx1ZSgpCisgICAgeworICAgICAgICBpZiAo
IXRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29yZHMuaGFzQ2hpbGRyZW4pCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgbGV0IHZhbHVlID0gIiI7CisgICAgICAgIGZvciAobGV0IHRyZWVJ
dGVtIG9mIHRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29yZHMuY2hpbGRyZW4pIHsKKyAgICAgICAg
ICAgIGlmICh0aGlzLl90cmVlRWxlbWVudElzRW1wdHkodHJlZUl0ZW0pKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoKQorICAgICAgICAg
ICAgICAgIHZhbHVlICs9ICIsICI7CisKKyAgICAgICAgICAgIGxldCB0ZXh0ID0gdHJlZUl0ZW0u
bWFpblRpdGxlOworICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9tb2RpZnlDb21tYVNlcGFy
YXRlZEtleXdvcmQgPT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICAgICAgdGV4dCA9IHRoaXMu
X21vZGlmeUNvbW1hU2VwYXJhdGVkS2V5d29yZCh0ZXh0KTsKKworICAgICAgICAgICAgdmFsdWUg
Kz0gdGV4dDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisKKyAg
ICBzZXQgdmFsdWUoY29tbWFTZXBhcmF0ZWRWYWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChjb21t
YVNlcGFyYXRlZFZhbHVlICYmIGNvbW1hU2VwYXJhdGVkVmFsdWUgPT09IHRoaXMudmFsdWUpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jk
cy5yZW1vdmVDaGlsZHJlbigpOworICAgICAgICBpZiAoIWNvbW1hU2VwYXJhdGVkVmFsdWUgfHwg
IWNvbW1hU2VwYXJhdGVkVmFsdWUubGVuZ3RoKSB7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtl
eXdvcmRFZGl0b3IuRXZlbnQuTm9SZW1haW5pbmdUcmVlSXRlbXMpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgbGV0IHZhbHVlcyA9IGNvbW1hU2VwYXJhdGVkVmFs
dWUuc3BsaXQoL1xzKixccyooPyFbXlwoXSpcKSkvKTsKKyAgICAgICAgZm9yIChsZXQgdmFsdWUg
b2YgdmFsdWVzKQorICAgICAgICAgICAgdGhpcy5fYWRkQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKHZh
bHVlKTsKKworICAgICAgICB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLmNoaWxkcmVuWzBd
LnNlbGVjdCh0cnVlKTsKKyAgICB9CisKKyAgICBnZXQgc3ludGhlc2l6ZWRWYWx1ZSgpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSB8fCBudWxsOworICAgIH0KKworICAgIC8vIFBy
aXZhdGUKKworICAgIF90cmVlRWxlbWVudFNlbGVjdGVkKGl0ZW0sIHNlbGVjdGVkQnlVc2VyKQor
ICAgIHsKKyAgICAgICAgdGhpcy5fcmVtb3ZlRW1wdHlDb21tYVNlcGFyYXRlZEtleXdvcmRzKCk7
CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5FdmVudC5UcmVlSXRlbVNlbGVjdGVk
LCB7dGV4dDogaXRlbS5tYWluVGl0bGV9KTsKKyAgICB9CisKKyAgICBfdHJlZUVsZW1lbnRJc0Vt
cHR5KGl0ZW0pCisgICAgeworICAgICAgICByZXR1cm4gIWl0ZW0uX21haW5UaXRsZSB8fCAhaXRl
bS5fbWFpblRpdGxlLmxlbmd0aDsKKyAgICB9CisKKyAgICBfYWRkRW1wdHlDb21tYVNlcGFyYXRl
ZEtleXdvcmQoKQorICAgIHsKKyAgICAgICAgbGV0IG5ld1RyZWVFbGVtZW50ID0gdGhpcy5fYWRk
Q29tbWFTZXBhcmF0ZWRLZXl3b3JkKG51bGwsIHRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29yZHMu
c2VsZWN0ZWRUcmVlRWxlbWVudEluZGV4KTsKKyAgICAgICAgbmV3VHJlZUVsZW1lbnQuc3VidGl0
bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihtb2RpZnkgdGhlIGJveGVzIGJlbG93IHRvIGFk
ZCBhIHZhbHVlKSIpOworICAgICAgICBuZXdUcmVlRWxlbWVudC5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoIm5vLXZhbHVlIik7CisgICAgICAgIG5ld1RyZWVFbGVtZW50LnNlbGVjdCh0cnVlLCB0cnVl
KTsKKyAgICAgICAgcmV0dXJuIG5ld1RyZWVFbGVtZW50OworICAgIH0KKworICAgIF9yZW1vdmVT
ZWxlY3RlZENvbW1hU2VwYXJhdGVkS2V5d29yZCgpCisgICAgeworICAgICAgICBsZXQgc2VsZWN0
ZWRUcmVlRWxlbWVudCA9IHRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29yZHMuc2VsZWN0ZWRUcmVl
RWxlbWVudDsKKyAgICAgICAgdGhpcy5fcmVtb3ZlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKHNlbGVj
dGVkVHJlZUVsZW1lbnQpOworICAgIH0KKworICAgIF9yZW1vdmVFbXB0eUNvbW1hU2VwYXJhdGVk
S2V5d29yZHMoKQorICAgIHsKKyAgICAgICAgZm9yIChsZXQgdHJlZUVsZW1lbnQgb2YgdGhpcy5f
Y29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5jaGlsZHJlbikgeworICAgICAgICAgICAgaWYgKCF0aGlz
Ll90cmVlRWxlbWVudElzRW1wdHkodHJlZUVsZW1lbnQpIHx8IHRyZWVFbGVtZW50LnNlbGVjdGVk
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICB0cmVlRWxlbWVudC5k
ZXNlbGVjdCgpOworICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQ29tbWFTZXBhcmF0ZWRLZXl3b3Jk
KHRyZWVFbGVtZW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9hZGRDb21tYVNlcGFyYXRl
ZEtleXdvcmQodmFsdWUsIGluZGV4KQorICAgIHsKKyAgICAgICAgbGV0IHZhbHVlRWxlbWVudCA9
IHRoaXMuX2NyZWF0ZU5ld1RyZWVFbGVtZW50KHZhbHVlKTsKKyAgICAgICAgbGV0IGluZGV4SXNT
ZXQgPSAhaXNOYU4oaW5kZXgpOworICAgICAgICB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRz
Lmluc2VydENoaWxkKHZhbHVlRWxlbWVudCwgaW5kZXhJc1NldCA/IGluZGV4ICsgIXRoaXMuX2lu
c2VydE5ld0l0ZW1zQmVmb3JlU2VsZWN0ZWQgOiAwKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlRWxl
bWVudDsKKyAgICB9CisKKyAgICBfcmVtb3ZlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKHRyZWVFbGVt
ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0cmVlRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLnJlbW92ZUNoaWxkKHRy
ZWVFbGVtZW50KTsKKyAgICAgICAgaWYgKCF0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLmNo
aWxkcmVuLmxlbmd0aCkKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5FdmVu
dC5Ob1JlbWFpbmluZ1RyZWVJdGVtcyk7CisKKyAgICAgICAgdGhpcy5fdmFsdWVEaWRDaGFuZ2Uo
KTsKKyAgICB9CisKKyAgICBfY3JlYXRlTmV3VHJlZUVsZW1lbnQodmFsdWUpCisgICAgeworICAg
ICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLkxpc3RJdGVtQ2xhc3NO
YW1lLCB2YWx1ZSk7CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFT
ZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLkxpc3RJdGVtQ2xhc3NOYW1lID0gInZpc3VhbC1zdHlsZS1j
b21tYS1zZXBhcmF0ZWQta2V5d29yZC1pdGVtIjsKKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
Q29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLkV2ZW50ID0geworICAgIFRyZWVJdGVtU2VsZWN0
ZWQ6ICJ2aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yLXRyZWUtaXRl
bS1zZWxlY3RlZCIsCisgICAgTm9SZW1haW5pbmdUcmVlSXRlbXM6ICJ2aXN1YWwtc3R5bGUtY29t
bWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yLW5vLXJlbWFpbmluZy10cmVlLWl0ZW1zIgorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlz
dWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RFZGl0b3IuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzIxODJjMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxl
Rm9udEZhbWlseUxpc3RFZGl0b3IuanMKQEAgLTAsMCArMSwxNTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvciA9IGNsYXNzIFZpc3Vh
bFN0eWxlRm9udEZhbWlseUxpc3RFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IKK3sKKyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0
eU5hbWVzLCB0ZXh0LCBsYXlvdXRSZXZlcnNlZCkKKyAgICB7CisgICAgICAgIHN1cGVyKHByb3Bl
cnR5TmFtZXMsIHRleHQsIHRydWUsIGxheW91dFJldmVyc2VkKTsKKworICAgICAgICB0aGlzLl9j
b21tYVNlcGFyYXRlZEtleXdvcmRzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwg
dGhpcy5faGlkZUNvbXBsZXRpb25zLmJpbmQodGhpcykpOworCisgICAgICAgIHRoaXMuX2NvbXBs
ZXRpb25Db250cm9sbGVyID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbXBsZXRpb25z
Q29udHJvbGxlcih0aGlzKTsKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbkNvbnRyb2xsZXIuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21wbGV0aW9uc0NvbnRyb2xs
ZXIuRXZlbnQuQ29tcGxldGlvblNlbGVjdGVkLCB0aGlzLl9jb21wbGV0aW9uQ2xpY2tlZCwgdGhp
cyk7CisKKyAgICAgICAgdGhpcy5fd3JhcFdpdGhRdW90ZXNSZWdFeHAgPSAvXlthLXpBLVpcLV0r
JC87CisgICAgICAgIHRoaXMuX3JlbW92ZVdyYXBwZWRRdW90ZXNSZWdFeHAgPSAvW1wiXCddL2c7
CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICB2aXN1YWxTdHlsZUNvbXBsZXRpb25zQ29u
dHJvbGxlckN1c3RvbWl6ZUNvbXBsZXRpb25FbGVtZW50KHN1Z2dlc3Rpb25zVmlldywgZWxlbWVu
dCwgaXRlbSkKKyAgICB7CisgICAgICAgIGVsZW1lbnQuc3R5bGUuZm9udEZhbWlseSA9IGl0ZW07
CisgICAgfQorCisgICAgZ2V0IGhhc0NvbXBsZXRpb25zKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci5oYXNDb21wbGV0aW9uczsKKyAgICB9CisKKyAg
ICBzZXQgY29tcGxldGlvbnMoY29tcGxldGlvbnMpCisgICAgeworICAgICAgICB0aGlzLl9jb21w
bGV0aW9uQ29udHJvbGxlci5jb21wbGV0aW9ucyA9IGNvbXBsZXRpb25zOworICAgIH0KKworICAg
IC8vIFByaXZhdGUKKworICAgIF9tb2RpZnlDb21tYVNlcGFyYXRlZEtleXdvcmQodGV4dCkKKyAg
ICB7CisgICAgICAgIGlmICghdGhpcy5fd3JhcFdpdGhRdW90ZXNSZWdFeHAudGVzdCh0ZXh0KSkK
KyAgICAgICAgICAgIHRleHQgPSAiXCIiICsgdGV4dCArICJcIiI7CisKKyAgICAgICAgcmV0dXJu
IHRleHQ7CisgICAgfQorCisgICAgX2FkZENvbW1hU2VwYXJhdGVkS2V5d29yZCh2YWx1ZSwgaW5k
ZXgpCisgICAgeworICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVl
LnJlcGxhY2UodGhpcy5fcmVtb3ZlV3JhcHBlZFF1b3Rlc1JlZ0V4cCwgIiIpOworCisgICAgICAg
IGxldCB2YWx1ZUVsZW1lbnQgPSBzdXBlci5fYWRkQ29tbWFTZXBhcmF0ZWRLZXl3b3JkKHZhbHVl
LCBpbmRleCk7CisgICAgICAgIHZhbHVlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlRWxlbWVudC5FdmVudC5FZGl0b3JLZXlEb3du
LCB0aGlzLl90cmVlRWxlbWVudEtleURvd24sIHRoaXMpOworICAgICAgICB2YWx1ZUVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUVs
ZW1lbnQuRXZlbnQuS2V5d29yZENoYW5nZWQsIHRoaXMuX3RyZWVFbGVtZW50S2V5d29yZENoYW5n
ZWQsIHRoaXMpOworICAgICAgICB2YWx1ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUVsZW1lbnQuRXZlbnQuRWRpdG9yQmx1cnJl
ZCwgdGhpcy5faGlkZUNvbXBsZXRpb25zLCB0aGlzKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlRWxl
bWVudDsKKyAgICB9CisKKyAgICBfYWRkRW1wdHlDb21tYVNlcGFyYXRlZEtleXdvcmQoKQorICAg
IHsKKyAgICAgICAgbGV0IG5ld0l0ZW0gPSBzdXBlci5fYWRkRW1wdHlDb21tYVNlcGFyYXRlZEtl
eXdvcmQoKTsKKyAgICAgICAgbmV3SXRlbS5zaG93S2V5d29yZEVkaXRvcigpOworICAgIH0KKwor
ICAgIF9jb21wbGV0aW9uQ2xpY2tlZChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMudmFsdWUg
PSBldmVudC5kYXRhLnRleHQ7CisgICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAg
fQorCisgICAgX3RyZWVFbGVtZW50S2V5RG93bihldmVudCkKKyAgICB7CisgICAgICAgIGlmICgh
dGhpcy5fY29tcGxldGlvbkNvbnRyb2xsZXIudmlzaWJsZSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBsZXQga2V5ID0gZXZlbnQgJiYgZXZlbnQuZGF0YSAmJiBldmVudC5kYXRhLmtl
eTsKKyAgICAgICAgaWYgKCFrZXkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYg
KGtleSA9PT0gIkVudGVyIiB8fCBrZXkgPT09ICJUYWIiKSB7CisgICAgICAgICAgICBsZXQgc2Vs
ZWN0ZWRUcmVlRWxlbWVudCA9IHRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29yZHMuc2VsZWN0ZWRU
cmVlRWxlbWVudDsKKyAgICAgICAgICAgIGlmICghc2VsZWN0ZWRUcmVlRWxlbWVudCkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHNlbGVjdGVkVHJlZUVsZW1lbnQudXBk
YXRlTWFpblRpdGxlKHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLmN1cnJlbnRDb21wbGV0aW9u
KTsKKyAgICAgICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLmhpZGUoKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChrZXkgPT09ICJFc2NhcGUi
KSB7CisgICAgICAgICAgICB0aGlzLl9oaWRlQ29tcGxldGlvbnMoKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChrZXkgPT09ICJVcCIpIHsKKyAgICAgICAg
ICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLnByZXZpb3VzKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoa2V5ID09PSAiRG93biIpIHsKKyAgICAg
ICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLm5leHQoKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIF90cmVlRWxlbWVudEtleXdvcmRDaGFuZ2Vk
KCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5oYXNDb21wbGV0aW9ucykKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5fdmFsdWVEaWRDaGFuZ2UoKTsK
KyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0
IHRyZWVFbGVtZW50ID0gdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5zZWxlY3RlZFRyZWVF
bGVtZW50OworICAgICAgICBpZiAoIXRyZWVFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGlmICh0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci51cGRhdGUodHJlZUVsZW1l
bnQubWFpblRpdGxlKSkgeworICAgICAgICAgICAgbGV0IGJvdW5kcyA9IHRyZWVFbGVtZW50LmVk
aXRvckJvdW5kcygyKTsKKyAgICAgICAgICAgIGlmICghYm91bmRzKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgdGhpcy5fY29tcGxldGlvbkNvbnRyb2xsZXIuc2hvdyhi
b3VuZHMpOworICAgICAgICB9CisgICAgfQorCisgICAgX2hpZGVDb21wbGV0aW9ucygpCisgICAg
eworICAgICAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci5oaWRlKCk7CisgICAgfQorCisg
ICAgX2NyZWF0ZU5ld1RyZWVFbGVtZW50KHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUVsZW1lbnQodmFsdWUpOwor
ICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9WaXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVF
bGVtZW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyYWRkYWQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9WaXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlRWxlbWVudC5qcwpAQCAtMCwwICsxLDE2NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlRWxlbWVu
dCA9IGNsYXNzIFZpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5z
cGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudAoreworICAgIGNvbnN0cnVjdG9yKHRleHQpCisgICAg
eworICAgICAgICBzdXBlcihbV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRL
ZXl3b3JkRWRpdG9yLkxpc3RJdGVtQ2xhc3NOYW1lLCAidmlzdWFsLXN0eWxlLWZvbnQtZmFtaWx5
LWxpc3QtaXRlbSJdLCB0ZXh0KTsKKworICAgICAgICB0aGlzLl9rZXl3b3JkRWRpdG9yID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAgICAgdGhpcy5fa2V5d29yZEVkaXRv
ci5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRl
bS1lZGl0b3IiKTsKKyAgICAgICAgdGhpcy5fa2V5d29yZEVkaXRvci5wbGFjZWhvbGRlciA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiKG1vZGlmeSB0aGUgYm94ZXMgYmVsb3cgdG8gYWRkIGEgdmFs
dWUpIik7CisgICAgICAgIHRoaXMuX2tleXdvcmRFZGl0b3Iuc3BlbGxjaGVjayA9IGZhbHNlOwor
ICAgICAgICB0aGlzLl9rZXl3b3JkRWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0
aGlzLl9rZXl3b3JkRWRpdG9yS2V5RG93bi5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fa2V5
d29yZEVkaXRvci5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsIHRoaXMuX2tleXdvcmRFZGl0b3JL
ZXlVcC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fa2V5d29yZEVkaXRvci5hZGRFdmVudExp
c3RlbmVyKCJibHVyIiwgdGhpcy5fa2V5d29yZEVkaXRvckJsdXJyZWQuYmluZCh0aGlzKSk7Cisg
ICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBlZGl0b3JCb3VuZHMocGFkZGluZykKKyAgICB7
CisgICAgICAgIGlmICh0aGlzLmtleXdvcmRFZGl0b3JIaWRkZW4pCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgbGV0IGJvdW5kcyA9IFdlYkluc3BlY3Rvci5SZWN0LnJlY3RGcm9tQ2xp
ZW50UmVjdCh0aGlzLl9rZXl3b3JkRWRpdG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsKKyAg
ICAgICAgcmV0dXJuIGJvdW5kcy5wYWQocGFkZGluZyB8fCAwKTsKKyAgICB9CisKKyAgICB1cGRh
dGVNYWluVGl0bGUodGV4dCkKKyAgICB7CisgICAgICAgIHRoaXMubWFpblRpdGxlID0gdGhpcy5f
bGlzdEl0ZW1Ob2RlLnN0eWxlLmZvbnRGYW1pbHkgPSB0aGlzLl9rZXl3b3JkRWRpdG9yLnZhbHVl
ID0gdGV4dDsKKworICAgICAgICBsZXQgaGFzVGV4dCA9IHRleHQgJiYgdGV4dC5sZW5ndGg7Cisg
ICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QudG9nZ2xlKCJuby12YWx1ZSIsICFo
YXNUZXh0KTsKKyAgICAgICAgaWYgKCFoYXNUZXh0KQorICAgICAgICAgICAgdGhpcy5zdWJ0aXRs
ZSA9IHRoaXMuX2tleXdvcmRFZGl0b3IucGxhY2Vob2xkZXI7CisKKyAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseVRy
ZWVFbGVtZW50LkV2ZW50LktleXdvcmRDaGFuZ2VkKTsKKyAgICB9CisKKyAgICBzaG93S2V5d29y
ZEVkaXRvcigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMua2V5d29yZEVkaXRvckhpZGRlbikK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLnN1YnRpdGxlID0gIiI7CisgICAg
ICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QucmVtb3ZlKCJlZGl0b3ItaGlkZGVuIik7
CisgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKCk7CisK
KyAgICAgICAgdGhpcy5fa2V5d29yZEVkaXRvci52YWx1ZSA9IHRoaXMuX21haW5UaXRsZTsKKyAg
ICAgICAgdGhpcy5fa2V5d29yZEVkaXRvci5zZWxlY3QoKTsKKyAgICB9CisKKyAgICBoaWRlS2V5
d29yZEVkaXRvcigpCisgICAgeworICAgICAgICBpZiAodGhpcy5rZXl3b3JkRWRpdG9ySGlkZGVu
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMudXBkYXRlTWFpblRpdGxlKHRo
aXMuX2tleXdvcmRFZGl0b3IudmFsdWUpOworICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xh
c3NMaXN0LmFkZCgiZWRpdG9yLWhpZGRlbiIpOworICAgIH0KKworICAgIGdldCBrZXl3b3JkRWRp
dG9ySGlkZGVuKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9saXN0SXRlbU5vZGUuY2xh
c3NMaXN0LmNvbnRhaW5zKCJlZGl0b3ItaGlkZGVuIik7CisgICAgfQorCisgICAgLy8gUHJvdGVj
dGVkCisKKyAgICBvbmF0dGFjaCgpCisgICAgeworICAgICAgICBzdXBlci5vbmF0dGFjaCgpOwor
CisgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5zdHlsZS5mb250RmFtaWx5ID0gdGhpcy5fbWFp
blRpdGxlOworICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LmFkZCgiZWRpdG9y
LWhpZGRlbiIpOworICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuYXBwZW5kQ2hpbGQodGhpcy5f
a2V5d29yZEVkaXRvcik7CisgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIHRoaXMuc2hvd0tleXdvcmRFZGl0b3IuYmluZCh0aGlzKSk7CisgICAgfQor
CisgICAgb25kZXNlbGVjdCgpCisgICAgeworICAgICAgICB0aGlzLmhpZGVLZXl3b3JkRWRpdG9y
KCk7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2tleXdvcmRFZGl0b3JLZXlEb3du
KGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMua2V5d29yZEVkaXRvckhpZGRlbikKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7
CisgICAgICAgIGxldCBlbnRlcktleUNvZGUgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1
dC5LZXkuRW50ZXIua2V5Q29kZTsKKyAgICAgICAgaWYgKGtleUNvZGUgPT09IGVudGVyS2V5Q29k
ZSkgeworICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5hZGQoImVkaXRv
ci1oaWRkZW4iKTsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlRWxlbWVudC5FdmVudC5FZGl0b3JL
ZXlEb3duLCB7a2V5OiAiRW50ZXIifSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBsZXQgZXNjYXBlS2V5Q29kZSA9IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0
Y3V0LktleS5Fc2NhcGUua2V5Q29kZTsKKyAgICAgICAgaWYgKGtleUNvZGUgPT09IGVzY2FwZUtl
eUNvZGUpIHsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlRWxlbWVudC5FdmVudC5FZGl0b3JLZXlE
b3duLCB7a2V5OiAiRXNjYXBlIn0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgbGV0IHRhYktleUNvZGUgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5L
ZXkuVGFiLmtleUNvZGU7CisgICAgICAgIGlmIChrZXlDb2RlID09PSB0YWJLZXlDb2RlKSB7Cisg
ICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgdGhpcy5fZG9u
dEZpcmVLZXlVcCA9IHRydWU7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUVsZW1lbnQuRXZlbnQu
RWRpdG9yS2V5RG93biwge2tleTogIlRhYiJ9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGxldCBrZXkgPSBldmVudC5rZXlJZGVudGlmaWVyOworICAgICAgICBp
ZiAoa2V5ID09PSAiVXAiIHx8IGtleSA9PT0gIkRvd24iKSB7CisgICAgICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgdGhpcy5fZG9udEZpcmVLZXlVcCA9IHRydWU7
CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUVsZW1lbnQuRXZlbnQuRWRpdG9yS2V5RG93biwge2tl
eX0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseVRy
ZWVFbGVtZW50LkV2ZW50LkVkaXRvcktleURvd24pOworICAgIH0KKworICAgIF9rZXl3b3JkRWRp
dG9yS2V5VXAoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMua2V5d29yZEVkaXRvckhpZGRlbiB8
fCB0aGlzLl9kb250RmlyZUtleVVwKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMudXBkYXRlTWFpblRpdGxlKHRoaXMuX2tleXdvcmRFZGl0b3IudmFsdWUpOworICAgIH0KKwor
ICAgIF9rZXl3b3JkRWRpdG9yQmx1cnJlZCgpCisgICAgeworICAgICAgICB0aGlzLmhpZGVLZXl3
b3JkRWRpdG9yKCk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlRWxlbWVudC5FdmVudC5FZGl0b3JCbHVy
cmVkKTsKKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5VHJl
ZUVsZW1lbnQuRXZlbnQgPSB7CisgICAgS2V5d29yZENoYW5nZWQ6ICJ2aXN1YWwtc3R5bGUtZm9u
dC1mYW1pbHktdHJlZS1lbGVtZW50LWtleXdvcmQtY2hhbmdlZCIsCisgICAgRWRpdG9yS2V5RG93
bjogInZpc3VhbC1zdHlsZS1mb250LWZhbWlseS10cmVlLWVsZW1lbnQtZWRpdG9yLWtleS1kb3du
IiwKKyAgICBFZGl0b3JCbHVycmVkOiAidmlzdWFsLXN0eWxlLWZvbnQtZmFtaWx5LXRyZWUtZWxl
bWVudC1lZGl0b3ItYmx1cnJlZCIKK307Cg==
</data>
<flag name="review"
          id="284208"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259019</attachid>
            <date>2015-08-14 12:13:33 -0700</date>
            <delta_ts>2015-08-14 13:05:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>147578.txt</filename>
            <type>text/plain</type>
            <size>35471</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDM4MjVhMDIuLmEwYWYyMDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE1LTA4LTE0ICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgVmlzdWFs
IGVkaXRvcnMgZm9yIENTUyBwcm9wZXJ0aWVzIHdpdGggY29tbWEgc2VwYXJhdGVkIHZhbHVlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NTc4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIERpc3BsYXlz
IGNvbW1hIHNlcGFyYXRlZCBDU1MgcHJvcGVydHkgdmFsdWVzIGFzIGEgdHJlZSBvdXRsaW5lIGxp
c3QuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0ltYWdlcy9NaW51cy5zdmc6IEFkZGVkLgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUucHJvdG90eXBlLmdldCBzZWxlY3RlZFRyZWVFbGVtZW50
SW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lKToKKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0
b3IuY3NzOiBBZGRlZC4KKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVy
LmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvcik6CisgICAgICAgICgudmlzdWFsLXN0eWxl
LXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlz
dWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lcik6CisgICAgICAgICgudmlzdWFsLXN0
eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29t
bWEtc2VwYXJhdGVkLWtleXdvcmQtbGlzdCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJh
dGVkLWtleXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQt
aXRlbSk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1z
ZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNv
bnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtbGlzdCA+IC52
aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbTpudGgtY2hpbGQob2RkKSk6
CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0
ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5l
ciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtbGlzdCA+IC52aXN1YWwt
c3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbS5zZWxlY3RlZCk6CisgICAgICAgICgu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1l
ZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwt
c3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29tbWEt
c2VwYXJhdGVkLWtleXdvcmQtaXRlbSA+IDptYXRjaGVzKGJ1dHRvbiwgaW1nKSk6CisgICAgICAg
ICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29y
ZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1
YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29t
bWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbSA+IC50aXRsZXMpOgorICAgICAgICAoLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNv
bW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRl
ZC1rZXl3b3JkLWl0ZW0udmlzdWFsLXN0eWxlLWZvbnQtZmFtaWx5LWxpc3QtaXRlbS5zZWxlY3Rl
ZDpub3QoLmVkaXRvci1oaWRkZW4pID4gLnRpdGxlcyA+ICopOgorICAgICAgICAoLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNv
bW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRl
ZC1rZXl3b3JkLWl0ZW0udmlzdWFsLXN0eWxlLWZvbnQtZmFtaWx5LWxpc3QtaXRlbSA+IC52aXN1
YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbS1lZGl0b3IpOgorICAgICAgICAo
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQt
ZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFs
LXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1h
LXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0udmlzdWFsLXN0eWxlLWZvbnQtZmFtaWx5LWxpc3QtaXRl
bS5lZGl0b3ItaGlkZGVuID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1p
dGVtLWVkaXRvcik6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5j
b21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZh
bHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtbGlz
dCA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbSA+IC50aXRsZXMg
PiAuc3VidGl0bGUpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIu
Y29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12
YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxp
c3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW06bm90KC5uby12
YWx1ZSkgPiAudGl0bGVzID4gLnN1YnRpdGxlKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwt
c3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBh
cmF0ZWQta2V5d29yZC1jb250cm9scyk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5
LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxl
LXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVk
LWtleXdvcmQtY29udHJvbHMgPiBkaXYpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRl
ZC1rZXl3b3JkLWNvbnRyb2xzID4gLnZpc3VhbC1zdHlsZS1yZW1vdmUtY29tbWEtc2VwYXJhdGVk
LWtleXdvcmQpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNv
bW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlw
ZS5zZXQgc2VsZWN0ZWRUcmVlRWxlbWVudFZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5wcm90b3R5cGUuZ2V0IHZhbHVl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29y
ZEVkaXRvci5wcm90b3R5cGUuc2V0IHZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5wcm90b3R5cGUuZ2V0IHN5bnRoZXNp
emVkVmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0
ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlwZS5fdHJlZUVsZW1lbnRTZWxlY3RlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IucHJv
dG90eXBlLl90cmVlSXRlbUlzRW1wdHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlwZS5fYWRkRW1wdHlDb21tYVNl
cGFyYXRlZEtleXdvcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFT
ZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlwZS5fcmVtb3ZlU2VsZWN0ZWRDb21tYVNlcGFy
YXRlZEtleXdvcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBh
cmF0ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlwZS5fcmVtb3ZlRW1wdHlDb21tYVNlcGFyYXRlZEtl
eXdvcmRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVk
S2V5d29yZEVkaXRvci5wcm90b3R5cGUuX2FkZENvbW1hU2VwYXJhdGVkS2V5d29yZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3Iu
cHJvdG90eXBlLl9yZW1vdmVDb21tYVNlcGFyYXRlZEtleXdvcmQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLnByb3RvdHlwZS5f
Y3JlYXRlTmV3VHJlZUVsZW1lbnQpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9W
aXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9yKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9yLnByb3RvdHlwZS52aXN1YWxT
dHlsZUNvbXBsZXRpb25zQ29udHJvbGxlckN1c3RvbWl6ZUNvbXBsZXRpb25FbGVtZW50KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9yLnByb3Rv
dHlwZS5nZXQgaGFzQ29tcGxldGlvbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlRm9udEZhbWlseUxpc3RFZGl0b3IucHJvdG90eXBlLnNldCBjb21wbGV0aW9ucyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvci5wcm90b3R5
cGUuX21vZGlmeUNvbW1hU2VwYXJhdGVkS2V5d29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvci5wcm90b3R5cGUuX2FkZENvbW1hU2VwYXJh
dGVkS2V5d29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5
TGlzdEVkaXRvci5wcm90b3R5cGUuX2FkZEVtcHR5Q29tbWFTZXBhcmF0ZWRLZXl3b3JkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9yLnByb3Rv
dHlwZS5fY29tcGxldGlvbkNsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlRm9udEZhbWlseUxpc3RFZGl0b3IucHJvdG90eXBlLl90cmVlRWxlbWVudEtleURvd24pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RFZGl0b3IucHJv
dG90eXBlLl90cmVlRWxlbWVudEtleXdvcmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9yLnByb3RvdHlwZS5faGlkZUNvbXBsZXRp
b25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRp
dG9yLnByb3RvdHlwZS5fY3JlYXRlTmV3VHJlZUVsZW1lbnQpOgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlRWxlbWVudC5qczogQWRkZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUVsZW1lbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVFbGVtZW50
LnByb3RvdHlwZS5lZGl0b3JCb3VuZHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlRm9udEZhbWlseVRyZWVFbGVtZW50LnByb3RvdHlwZS51cGRhdGVNYWluVGl0bGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVFbGVtZW50LnByb3Rv
dHlwZS5zaG93S2V5d29yZEVkaXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVGb250RmFtaWx5VHJlZUVsZW1lbnQucHJvdG90eXBlLmhpZGVLZXl3b3JkRWRpdG9yKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlRWxlbWVudC5wcm90
b3R5cGUuZ2V0IGtleXdvcmRFZGl0b3JIaWRkZW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlRm9udEZhbWlseVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUVsZW1lbnQucHJvdG90
eXBlLm9uZGVzZWxlY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZh
bWlseVRyZWVFbGVtZW50LnByb3RvdHlwZS5fa2V5d29yZEVkaXRvcktleURvd24pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVFbGVtZW50LnByb3RvdHlw
ZS5fa2V5d29yZEVkaXRvcktleVVwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZUZvbnRGYW1pbHlUcmVlRWxlbWVudC5wcm90b3R5cGUuX2tleXdvcmRFZGl0b3JCbHVycmVkKToK
KwogMjAxNS0wOC0xMyAgTmlraXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBDYW4ndCByZXNpemUgc3BsaXQgY29uc29sZSB3aGVuIHdp
bmRvdyBpcyB0b28gbmFycm93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9JbWFnZXMvTWludXMuc3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvSW1hZ2VzL01pbnVzLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4xNGYyOTVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvSW1hZ2VzL01pbnVzLnN2ZwpAQCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTMgMTMiPgorICAgIDxs
aW5lIGNsYXNzPSJzdHJva2VkIiBmaWxsPSJub25lIiBzdHJva2U9ImJsYWNrIiB4MT0iMS41IiB5
MT0iNi41IiB4Mj0iMTEuNSIgeTI9IjYuNSIvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCmluZGV4
IGQ1ZDA3YzUuLjBhODJjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCkBAIC01MDQsNiArNTA0LDE5IEBA
IFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZSA9IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogICAgIHsKICAgICAgICAgLy8gdGhpcyBpcyB0aGUgcm9vdCwgZG8g
bm90aGluZwogICAgIH0KKworICAgIGdldCBzZWxlY3RlZFRyZWVFbGVtZW50SW5kZXgoKQorICAg
IHsKKyAgICAgICAgaWYgKCF0aGlzLmhhc0NoaWxkcmVuIHx8ICF0aGlzLnNlbGVjdGVkVHJlZUVs
ZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAodGhpcy5jaGls
ZHJlbltpXSA9PT0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50KQorICAgICAgICAgICAgICAgIHJl
dHVybiBpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIH07CiAK
IFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZS5fa25vd25UcmVlRWxlbWVudE5leHRJZGVudGlmaWVy
ID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLmNzcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0
ZWRLZXl3b3JkRWRpdG9yLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43
NDk1MWJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuY3NzCkBA
IC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250
YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yIHsKKyAgICBtYXJnaW4tYm90dG9t
OiA1cHg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFy
YXRlZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFp
bmVyIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBoc2woMCwgMCUsIDgzJSk7CisgICAgb3ZlcmZs
b3c6IGF1dG87CisgICAgZm9udC1zaXplOiAxMXB4OworfQorCisudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJh
dGVkLWtleXdvcmQtbGlzdCB7CisgICAgbWluLWhlaWdodDogNTFweDsKKyAgICBtYXgtaGVpZ2h0
OiA5NHB4OworICAgIG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAwOworICAgIGJhY2tncm91bmQt
Y29sb3I6IGhzbCgwLCAwJSwgOTUlKTsKKyAgICBvdmVyZmxvdzogYXV0bzsKKyAgICBvdXRsaW5l
OiBub25lOworICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKK30KKworLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNl
cGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3
b3JkLWl0ZW0geworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICB3aWR0aDogMTAwJTsKKyAg
ICBoZWlnaHQ6IDE3cHg7CisgICAgbGluZS1oZWlnaHQ6IDE3cHg7CisgICAgb3ZlcmZsb3c6IGhp
ZGRlbjsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJh
dGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWlu
ZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFs
LXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW06bnRoLWNoaWxkKG9kZCkgeworICAg
IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNv
bnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtl
eXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbS5z
ZWxlY3RlZCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDIxMywgOTIlLCA1NSUpICFpbXBv
cnRhbnQ7CisgICAgY29sb3I6IHdoaXRlOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNv
bnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtl
eXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRlbSA+
IDptYXRjaGVzKGJ1dHRvbiwgaW1nKSB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9y
ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxl
LWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFy
YXRlZC1rZXl3b3JkLWl0ZW0gPiAudGl0bGVzIHsKKyAgICBwYWRkaW5nLWxlZnQ6IDNweDsKK30K
KworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdv
cmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlz
dWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNv
bW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0udmlzdWFsLXN0eWxlLWZvbnQtZmFtaWx5LWxpc3Qt
aXRlbS5zZWxlY3RlZDpub3QoLmVkaXRvci1oaWRkZW4pID4gLnRpdGxlcyA+ICogeworICAgIGNv
bG9yOiB0cmFuc3BhcmVudDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIu
Y29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12
YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxp
c3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0udmlzdWFsLXN0
eWxlLWZvbnQtZmFtaWx5LWxpc3QtaXRlbSA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVk
LWtleXdvcmQtaXRlbS1lZGl0b3IgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6
IDA7CisgICAgcmlnaHQ6IDNweDsKKyAgICBib3R0b206IDA7CisgICAgbGVmdDogM3B4OworICAg
IG1hcmdpbjogMDsKKyAgICBwYWRkaW5nOiAwOworICAgIGxpbmUtaGVpZ2h0OiAxM3B4OworICAg
IGJvcmRlcjogbm9uZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICBm
b250LWZhbWlseTogaW5oZXJpdDsKKyAgICBjb2xvcjogd2hpdGU7CisgICAgei1pbmRleDogMTsK
K30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtl
eXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAu
dmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxl
LWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0udmlzdWFsLXN0eWxlLWZvbnQtZmFtaWx5LWxp
c3QtaXRlbS5lZGl0b3ItaGlkZGVuID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5
d29yZC1pdGVtLWVkaXRvciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRpdG9yID4gLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1h
LXNlcGFyYXRlZC1rZXl3b3JkLWxpc3QgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1r
ZXl3b3JkLWl0ZW0gPiAudGl0bGVzID4gLnN1YnRpdGxlIHsKKyAgICBmb250LXNpemU6IDlweDsK
KyAgICBjb2xvcjogaHNsKDAsIDAlLCA4MyUpOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5
LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxl
LXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVk
LWtleXdvcmQtbGlzdCA+IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtaXRl
bTpub3QoLm5vLXZhbHVlKSA+IC50aXRsZXMgPiAuc3VidGl0bGUgeworICAgIGRpc3BsYXk6IG5v
bmU7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLmNvbW1hLXNlcGFyYXRl
ZC1rZXl3b3JkLWVkaXRvciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVy
ID4gLnZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1jb250cm9scyB7CisgICAg
ZGlzcGxheTogZmxleDsKKyAgICBib3JkZXItdG9wOiAxcHggc29saWQgaHNsKDAsIDAlLCA4MyUp
OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5jb21tYS1zZXBhcmF0ZWQt
a2V5d29yZC1lZGl0b3IgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+
IC52aXN1YWwtc3R5bGUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtY29udHJvbHMgPiBkaXYgewor
ICAgIHdpZHRoOiAyMHB4OworICAgIGhlaWdodDogMTlweDsKKyAgICBwYWRkaW5nOiA0cHg7Cisg
ICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgaHNsKDAsIDAlLCA4MyUpOworICAgIG9wYWNpdHk6
IDAuNzsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIuY29tbWEtc2VwYXJh
dGVkLWtleXdvcmQtZWRpdG9yID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWlu
ZXIgPiAudmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWNvbnRyb2xzID4gLnZp
c3VhbC1zdHlsZS1yZW1vdmUtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQgeworICAgIG9yZGVyOiAy
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVk
S2V5d29yZEVkaXRvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2Zm
OTMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuanMKQEAgLTAs
MCArMSwxODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNl
cGFyYXRlZEtleXdvcmRFZGl0b3IgPSBjbGFzcyBWaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5
d29yZEVkaXRvciBleHRlbmRzIFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9y
Cit7CisgICAgY29uc3RydWN0b3IocHJvcGVydHlOYW1lcywgdGV4dCwgaW5zZXJ0TmV3SXRlbXNC
ZWZvcmVTZWxlY3RlZCwgbGF5b3V0UmV2ZXJzZWQpCisgICAgeworICAgICAgICBzdXBlcihwcm9w
ZXJ0eU5hbWVzLCB0ZXh0LCBudWxsLCBudWxsLCAiY29tbWEtc2VwYXJhdGVkLWtleXdvcmQtZWRp
dG9yIiwgbGF5b3V0UmV2ZXJzZWQpOworCisgICAgICAgIHRoaXMuX2luc2VydE5ld0l0ZW1zQmVm
b3JlU2VsZWN0ZWQgPSBpbnNlcnROZXdJdGVtc0JlZm9yZVNlbGVjdGVkIHx8IGZhbHNlOworCisg
ICAgICAgIGxldCBsaXN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7Cisg
ICAgICAgIGxpc3RFbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1jb21tYS1zZXBh
cmF0ZWQta2V5d29yZC1saXN0Iik7CisgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5k
Q2hpbGQobGlzdEVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29y
ZHMgPSBuZXcgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lKGxpc3RFbGVtZW50KTsKKyAgICAgICAg
dGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5vbnNlbGVjdCA9IHRoaXMuX3RyZWVFbGVtZW50
U2VsZWN0ZWQuYmluZCh0aGlzKTsKKworICAgICAgICBsZXQgY29udHJvbENvbnRhaW5lciA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBjb250cm9sQ29udGFpbmVyLmNs
YXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1jb21tYS1zZXBhcmF0ZWQta2V5d29yZC1jb250cm9s
cyIpOworICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKGNvbnRyb2xDb250
YWluZXIpOworCisgICAgICAgIHdyYXBwZWRTVkdEb2N1bWVudCgiSW1hZ2VzL1BsdXMuc3ZnIiwg
InZpc3VhbC1zdHlsZS1hZGQtY29tbWEtc2VwYXJhdGVkLWtleXdvcmQiLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkNsaWNrIHRvIGFkZCBhIG5ldyBpdGVtLiIpLCBmdW5jdGlvbih3cmFwcGVyKSB7
CisgICAgICAgICAgICB3cmFwcGVyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fYWRk
RW1wdHlDb21tYVNlcGFyYXRlZEtleXdvcmQuYmluZCh0aGlzKSk7CisgICAgICAgICAgICBjb250
cm9sQ29udGFpbmVyLmFwcGVuZENoaWxkKHdyYXBwZXIpOworICAgICAgICB9LmJpbmQodGhpcykp
OworCisgICAgICAgIHdyYXBwZWRTVkdEb2N1bWVudCgiSW1hZ2VzL01pbnVzLnN2ZyIsICJ2aXN1
YWwtc3R5bGUtcmVtb3ZlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkIiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJDbGljayB0byByZW1vdmUgdGhlIHNlbGVjdGVkIGl0ZW0uIiksIGZ1bmN0aW9uKHdy
YXBwZXIpIHsKKyAgICAgICAgICAgIHdyYXBwZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0
aGlzLl9yZW1vdmVTZWxlY3RlZENvbW1hU2VwYXJhdGVkS2V5d29yZC5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgICAgIGNvbnRyb2xDb250YWluZXIuYXBwZW5kQ2hpbGQod3JhcHBlcik7CisgICAgICAg
IH0uYmluZCh0aGlzKSk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBzZXQgc2VsZWN0
ZWRUcmVlRWxlbWVudFZhbHVlKHRleHQpCisgICAgeworICAgICAgICBsZXQgc2VsZWN0ZWRUcmVl
RWxlbWVudCA9IHRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29yZHMuc2VsZWN0ZWRUcmVlRWxlbWVu
dDsKKyAgICAgICAgaWYgKCFzZWxlY3RlZFRyZWVFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHNlbGVjdGVkVHJlZUVsZW1lbnQuZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xl
KCJuby12YWx1ZSIsICF0ZXh0IHx8ICF0ZXh0Lmxlbmd0aCk7CisgICAgICAgIHNlbGVjdGVkVHJl
ZUVsZW1lbnQubWFpblRpdGxlID0gdGV4dDsKKyAgICAgICAgdGhpcy5fdmFsdWVEaWRDaGFuZ2Uo
KTsKKyAgICB9CisKKyAgICBnZXQgdmFsdWUoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9j
b21tYVNlcGFyYXRlZEtleXdvcmRzLmhhc0NoaWxkcmVuKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGxldCB2YWx1ZSA9ICIiOworICAgICAgICBmb3IgKGxldCB0cmVlSXRlbSBvZiB0
aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLmNoaWxkcmVuKSB7CisgICAgICAgICAgICBpZiAo
dGhpcy5fdHJlZUVsZW1lbnRJc0VtcHR5KHRyZWVJdGVtKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCkKKyAgICAgICAgICAgICAgICB2
YWx1ZSArPSAiLCAiOworCisgICAgICAgICAgICBsZXQgdGV4dCA9IHRyZWVJdGVtLm1haW5UaXRs
ZTsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fbW9kaWZ5Q29tbWFTZXBhcmF0ZWRLZXl3
b3JkID09PSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgICAgIHRleHQgPSB0aGlzLl9tb2RpZnlD
b21tYVNlcGFyYXRlZEtleXdvcmQodGV4dCk7CisKKyAgICAgICAgICAgIHZhbHVlICs9IHRleHQ7
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAgc2V0IHZh
bHVlKGNvbW1hU2VwYXJhdGVkVmFsdWUpCisgICAgeworICAgICAgICBpZiAoY29tbWFTZXBhcmF0
ZWRWYWx1ZSAmJiBjb21tYVNlcGFyYXRlZFZhbHVlID09PSB0aGlzLnZhbHVlKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29yZHMucmVtb3Zl
Q2hpbGRyZW4oKTsKKyAgICAgICAgaWYgKCFjb21tYVNlcGFyYXRlZFZhbHVlIHx8ICFjb21tYVNl
cGFyYXRlZFZhbHVlLmxlbmd0aCkgeworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRp
dG9yLkV2ZW50Lk5vUmVtYWluaW5nVHJlZUl0ZW1zKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGxldCB2YWx1ZXMgPSBjb21tYVNlcGFyYXRlZFZhbHVlLnNwbGl0
KC9ccyosXHMqKD8hW15cKF0qXCkpLyk7CisgICAgICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbHVl
cykKKyAgICAgICAgICAgIHRoaXMuX2FkZENvbW1hU2VwYXJhdGVkS2V5d29yZCh2YWx1ZSk7CisK
KyAgICAgICAgdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5jaGlsZHJlblswXS5zZWxlY3Qo
dHJ1ZSk7CisgICAgfQorCisgICAgZ2V0IHN5bnRoZXNpemVkVmFsdWUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMudmFsdWUgfHwgbnVsbDsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisK
KyAgICBfdHJlZUVsZW1lbnRTZWxlY3RlZChpdGVtLCBzZWxlY3RlZEJ5VXNlcikKKyAgICB7Cisg
ICAgICAgIHRoaXMuX3JlbW92ZUVtcHR5Q29tbWFTZXBhcmF0ZWRLZXl3b3JkcygpOworICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVD
b21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuRXZlbnQuVHJlZUl0ZW1TZWxlY3RlZCwge3RleHQ6
IGl0ZW0ubWFpblRpdGxlfSk7CisgICAgfQorCisgICAgX3RyZWVFbGVtZW50SXNFbXB0eShpdGVt
KQorICAgIHsKKyAgICAgICAgcmV0dXJuICFpdGVtLl9tYWluVGl0bGUgfHwgIWl0ZW0uX21haW5U
aXRsZS5sZW5ndGg7CisgICAgfQorCisgICAgX2FkZEVtcHR5Q29tbWFTZXBhcmF0ZWRLZXl3b3Jk
KCkKKyAgICB7CisgICAgICAgIGxldCBuZXdUcmVlRWxlbWVudCA9IHRoaXMuX2FkZENvbW1hU2Vw
YXJhdGVkS2V5d29yZChudWxsLCB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLnNlbGVjdGVk
VHJlZUVsZW1lbnRJbmRleCk7CisgICAgICAgIG5ld1RyZWVFbGVtZW50LnN1YnRpdGxlID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCIobW9kaWZ5IHRoZSBib3hlcyBiZWxvdyB0byBhZGQgYSB2YWx1
ZSkiKTsKKyAgICAgICAgbmV3VHJlZUVsZW1lbnQuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJuby12
YWx1ZSIpOworICAgICAgICBuZXdUcmVlRWxlbWVudC5zZWxlY3QodHJ1ZSwgdHJ1ZSk7CisgICAg
ICAgIHJldHVybiBuZXdUcmVlRWxlbWVudDsKKyAgICB9CisKKyAgICBfcmVtb3ZlU2VsZWN0ZWRD
b21tYVNlcGFyYXRlZEtleXdvcmQoKQorICAgIHsKKyAgICAgICAgbGV0IHNlbGVjdGVkVHJlZUVs
ZW1lbnQgPSB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLnNlbGVjdGVkVHJlZUVsZW1lbnQ7
CisgICAgICAgIHRoaXMuX3JlbW92ZUNvbW1hU2VwYXJhdGVkS2V5d29yZChzZWxlY3RlZFRyZWVF
bGVtZW50KTsKKyAgICB9CisKKyAgICBfcmVtb3ZlRW1wdHlDb21tYVNlcGFyYXRlZEtleXdvcmRz
KCkKKyAgICB7CisgICAgICAgIGZvciAobGV0IHRyZWVFbGVtZW50IG9mIHRoaXMuX2NvbW1hU2Vw
YXJhdGVkS2V5d29yZHMuY2hpbGRyZW4pIHsKKyAgICAgICAgICAgIGlmICghdGhpcy5fdHJlZUVs
ZW1lbnRJc0VtcHR5KHRyZWVFbGVtZW50KSB8fCB0cmVlRWxlbWVudC5zZWxlY3RlZCkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgdHJlZUVsZW1lbnQuZGVzZWxlY3Qo
KTsKKyAgICAgICAgICAgIHRoaXMuX3JlbW92ZUNvbW1hU2VwYXJhdGVkS2V5d29yZCh0cmVlRWxl
bWVudCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfYWRkQ29tbWFTZXBhcmF0ZWRLZXl3b3Jk
KHZhbHVlLCBpbmRleCkKKyAgICB7CisgICAgICAgIGxldCB2YWx1ZUVsZW1lbnQgPSB0aGlzLl9j
cmVhdGVOZXdUcmVlRWxlbWVudCh2YWx1ZSk7CisgICAgICAgIGxldCBpbmRleElzU2V0ID0gIWlz
TmFOKGluZGV4KTsKKyAgICAgICAgdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5pbnNlcnRD
aGlsZCh2YWx1ZUVsZW1lbnQsIGluZGV4SXNTZXQgPyBpbmRleCArICF0aGlzLl9pbnNlcnROZXdJ
dGVtc0JlZm9yZVNlbGVjdGVkIDogMCk7CisgICAgICAgIHJldHVybiB2YWx1ZUVsZW1lbnQ7Cisg
ICAgfQorCisgICAgX3JlbW92ZUNvbW1hU2VwYXJhdGVkS2V5d29yZCh0cmVlRWxlbWVudCkKKyAg
ICB7CisgICAgICAgIGlmICghdHJlZUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5yZW1vdmVDaGlsZCh0cmVlRWxlbWVu
dCk7CisgICAgICAgIGlmICghdGhpcy5fY29tbWFTZXBhcmF0ZWRLZXl3b3Jkcy5jaGlsZHJlbi5s
ZW5ndGgpCisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuRXZlbnQuTm9SZW1h
aW5pbmdUcmVlSXRlbXMpOworCisgICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAg
fQorCisgICAgX2NyZWF0ZU5ld1RyZWVFbGVtZW50KHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG5ldyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50KFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5MaXN0SXRlbUNsYXNzTmFtZSwgdmFs
dWUpOworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVk
S2V5d29yZEVkaXRvci5MaXN0SXRlbUNsYXNzTmFtZSA9ICJ2aXN1YWwtc3R5bGUtY29tbWEtc2Vw
YXJhdGVkLWtleXdvcmQtaXRlbSI7CisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2Vw
YXJhdGVkS2V5d29yZEVkaXRvci5FdmVudCA9IHsKKyAgICBUcmVlSXRlbVNlbGVjdGVkOiAidmlz
dWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWVkaXRvci10cmVlLWl0ZW0tc2VsZWN0
ZWQiLAorICAgIE5vUmVtYWluaW5nVHJlZUl0ZW1zOiAidmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFy
YXRlZC1rZXl3b3JkLWVkaXRvci1uby1yZW1haW5pbmctdHJlZS1pdGVtcyIKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxl
Rm9udEZhbWlseUxpc3RFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9yLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyMTgyYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUZvbnRGYW1p
bHlMaXN0RWRpdG9yLmpzCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RFZGl0b3IgPSBjbGFzcyBWaXN1YWxTdHlsZUZv
bnRGYW1pbHlMaXN0RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFT
ZXBhcmF0ZWRLZXl3b3JkRWRpdG9yCit7CisgICAgY29uc3RydWN0b3IocHJvcGVydHlOYW1lcywg
dGV4dCwgbGF5b3V0UmV2ZXJzZWQpCisgICAgeworICAgICAgICBzdXBlcihwcm9wZXJ0eU5hbWVz
LCB0ZXh0LCB0cnVlLCBsYXlvdXRSZXZlcnNlZCk7CisKKyAgICAgICAgdGhpcy5fY29tbWFTZXBh
cmF0ZWRLZXl3b3Jkcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHRoaXMuX2hp
ZGVDb21wbGV0aW9ucy5iaW5kKHRoaXMpKTsKKworICAgICAgICB0aGlzLl9jb21wbGV0aW9uQ29u
dHJvbGxlciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21wbGV0aW9uc0NvbnRyb2xs
ZXIodGhpcyk7CisgICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tcGxldGlvbnNDb250cm9sbGVyLkV2ZW50
LkNvbXBsZXRpb25TZWxlY3RlZCwgdGhpcy5fY29tcGxldGlvbkNsaWNrZWQsIHRoaXMpOworCisg
ICAgICAgIHRoaXMuX3dyYXBXaXRoUXVvdGVzUmVnRXhwID0gL15bYS16QS1aXC1dKyQvOworICAg
ICAgICB0aGlzLl9yZW1vdmVXcmFwcGVkUXVvdGVzUmVnRXhwID0gL1tcIlwnXS9nOworICAgIH0K
KworICAgIC8vIFB1YmxpYworCisgICAgdmlzdWFsU3R5bGVDb21wbGV0aW9uc0NvbnRyb2xsZXJD
dXN0b21pemVDb21wbGV0aW9uRWxlbWVudChzdWdnZXN0aW9uc1ZpZXcsIGVsZW1lbnQsIGl0ZW0p
CisgICAgeworICAgICAgICBlbGVtZW50LnN0eWxlLmZvbnRGYW1pbHkgPSBpdGVtOworICAgIH0K
KworICAgIGdldCBoYXNDb21wbGV0aW9ucygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
Y29tcGxldGlvbkNvbnRyb2xsZXIuaGFzQ29tcGxldGlvbnM7CisgICAgfQorCisgICAgc2V0IGNv
bXBsZXRpb25zKGNvbXBsZXRpb25zKQorICAgIHsKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbkNv
bnRyb2xsZXIuY29tcGxldGlvbnMgPSBjb21wbGV0aW9uczsKKyAgICB9CisKKyAgICAvLyBQcml2
YXRlCisKKyAgICBfbW9kaWZ5Q29tbWFTZXBhcmF0ZWRLZXl3b3JkKHRleHQpCisgICAgeworICAg
ICAgICBpZiAoIXRoaXMuX3dyYXBXaXRoUXVvdGVzUmVnRXhwLnRlc3QodGV4dCkpCisgICAgICAg
ICAgICB0ZXh0ID0gIlwiIiArIHRleHQgKyAiXCIiOworCisgICAgICAgIHJldHVybiB0ZXh0Owor
ICAgIH0KKworICAgIF9hZGRDb21tYVNlcGFyYXRlZEtleXdvcmQodmFsdWUsIGluZGV4KQorICAg
IHsKKyAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNl
KHRoaXMuX3JlbW92ZVdyYXBwZWRRdW90ZXNSZWdFeHAsICIiKTsKKworICAgICAgICBsZXQgdmFs
dWVFbGVtZW50ID0gc3VwZXIuX2FkZENvbW1hU2VwYXJhdGVkS2V5d29yZCh2YWx1ZSwgaW5kZXgp
OworICAgICAgICB2YWx1ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVGb250RmFtaWx5VHJlZUVsZW1lbnQuRXZlbnQuRWRpdG9yS2V5RG93biwgdGhpcy5f
dHJlZUVsZW1lbnRLZXlEb3duLCB0aGlzKTsKKyAgICAgICAgdmFsdWVFbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVFbGVtZW50LkV2
ZW50LktleXdvcmRDaGFuZ2VkLCB0aGlzLl90cmVlRWxlbWVudEtleXdvcmRDaGFuZ2VkLCB0aGlz
KTsKKyAgICAgICAgdmFsdWVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlRm9udEZhbWlseVRyZWVFbGVtZW50LkV2ZW50LkVkaXRvckJsdXJyZWQsIHRoaXMu
X2hpZGVDb21wbGV0aW9ucywgdGhpcyk7CisgICAgICAgIHJldHVybiB2YWx1ZUVsZW1lbnQ7Cisg
ICAgfQorCisgICAgX2FkZEVtcHR5Q29tbWFTZXBhcmF0ZWRLZXl3b3JkKCkKKyAgICB7CisgICAg
ICAgIGxldCBuZXdJdGVtID0gc3VwZXIuX2FkZEVtcHR5Q29tbWFTZXBhcmF0ZWRLZXl3b3JkKCk7
CisgICAgICAgIG5ld0l0ZW0uc2hvd0tleXdvcmRFZGl0b3IoKTsKKyAgICB9CisKKyAgICBfY29t
cGxldGlvbkNsaWNrZWQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLnZhbHVlID0gZXZlbnQu
ZGF0YS50ZXh0OworICAgICAgICB0aGlzLl92YWx1ZURpZENoYW5nZSgpOworICAgIH0KKworICAg
IF90cmVlRWxlbWVudEtleURvd24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2Nv
bXBsZXRpb25Db250cm9sbGVyLnZpc2libGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgbGV0IGtleSA9IGV2ZW50ICYmIGV2ZW50LmRhdGEgJiYgZXZlbnQuZGF0YS5rZXk7CisgICAg
ICAgIGlmICgha2V5KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChrZXkgPT09
ICJFbnRlciIgfHwga2V5ID09PSAiVGFiIikgeworICAgICAgICAgICAgbGV0IHNlbGVjdGVkVHJl
ZUVsZW1lbnQgPSB0aGlzLl9jb21tYVNlcGFyYXRlZEtleXdvcmRzLnNlbGVjdGVkVHJlZUVsZW1l
bnQ7CisgICAgICAgICAgICBpZiAoIXNlbGVjdGVkVHJlZUVsZW1lbnQpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICBzZWxlY3RlZFRyZWVFbGVtZW50LnVwZGF0ZU1haW5U
aXRsZSh0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci5jdXJyZW50Q29tcGxldGlvbik7CisgICAg
ICAgICAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci5oaWRlKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoa2V5ID09PSAiRXNjYXBlIikgeworICAg
ICAgICAgICAgdGhpcy5faGlkZUNvbXBsZXRpb25zKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoa2V5ID09PSAiVXAiKSB7CisgICAgICAgICAgICB0aGlz
Ll9jb21wbGV0aW9uQ29udHJvbGxlci5wcmV2aW91cygpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKGtleSA9PT0gIkRvd24iKSB7CisgICAgICAgICAgICB0
aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci5uZXh0KCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBfdHJlZUVsZW1lbnRLZXl3b3JkQ2hhbmdlZCgpCisgICAg
eworICAgICAgICBpZiAoIXRoaXMuaGFzQ29tcGxldGlvbnMpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgICAg
IGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCB0cmVlRWxl
bWVudCA9IHRoaXMuX2NvbW1hU2VwYXJhdGVkS2V5d29yZHMuc2VsZWN0ZWRUcmVlRWxlbWVudDsK
KyAgICAgICAgaWYgKCF0cmVlRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBpZiAodGhpcy5fY29tcGxldGlvbkNvbnRyb2xsZXIudXBkYXRlKHRyZWVFbGVtZW50Lm1haW5U
aXRsZSkpIHsKKyAgICAgICAgICAgIGxldCBib3VuZHMgPSB0cmVlRWxlbWVudC5lZGl0b3JCb3Vu
ZHMoMik7CisgICAgICAgICAgICBpZiAoIWJvdW5kcykKKyAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLnNob3coYm91bmRzKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIF9oaWRlQ29tcGxldGlvbnMoKQorICAgIHsKKyAgICAg
ICAgdGhpcy5fY29tcGxldGlvbkNvbnRyb2xsZXIuaGlkZSgpOworICAgIH0KKworICAgIF9jcmVh
dGVOZXdUcmVlRWxlbWVudCh2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVFbGVtZW50KHZhbHVlKTsKKyAgICB9Cit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlRWxlbWVudC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmFkZGFkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFs
U3R5bGVGb250RmFtaWx5VHJlZUVsZW1lbnQuanMKQEAgLTAsMCArMSwxNjcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUVsZW1lbnQgPSBjbGFz
cyBWaXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5H
ZW5lcmFsVHJlZUVsZW1lbnQKK3sKKyAgICBjb25zdHJ1Y3Rvcih0ZXh0KQorICAgIHsKKyAgICAg
ICAgc3VwZXIoW1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVk
aXRvci5MaXN0SXRlbUNsYXNzTmFtZSwgInZpc3VhbC1zdHlsZS1mb250LWZhbWlseS1saXN0LWl0
ZW0iXSwgdGV4dCk7CisKKyAgICAgICAgdGhpcy5fa2V5d29yZEVkaXRvciA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAgICAgIHRoaXMuX2tleXdvcmRFZGl0b3IuY2xhc3NM
aXN0LmFkZCgidmlzdWFsLXN0eWxlLWNvbW1hLXNlcGFyYXRlZC1rZXl3b3JkLWl0ZW0tZWRpdG9y
Iik7CisgICAgICAgIHRoaXMuX2tleXdvcmRFZGl0b3IucGxhY2Vob2xkZXIgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIihtb2RpZnkgdGhlIGJveGVzIGJlbG93IHRvIGFkZCBhIHZhbHVlKSIpOwor
ICAgICAgICB0aGlzLl9rZXl3b3JkRWRpdG9yLnNwZWxsY2hlY2sgPSBmYWxzZTsKKyAgICAgICAg
dGhpcy5fa2V5d29yZEVkaXRvci5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fa2V5
d29yZEVkaXRvcktleURvd24uYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2tleXdvcmRFZGl0
b3IuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLCB0aGlzLl9rZXl3b3JkRWRpdG9yS2V5VXAuYmlu
ZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2tleXdvcmRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcigi
Ymx1ciIsIHRoaXMuX2tleXdvcmRFZGl0b3JCbHVycmVkLmJpbmQodGhpcykpOworICAgIH0KKwor
ICAgIC8vIFB1YmxpYworCisgICAgZWRpdG9yQm91bmRzKHBhZGRpbmcpCisgICAgeworICAgICAg
ICBpZiAodGhpcy5rZXl3b3JkRWRpdG9ySGlkZGVuKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGxldCBib3VuZHMgPSBXZWJJbnNwZWN0b3IuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3Qo
dGhpcy5fa2V5d29yZEVkaXRvci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7CisgICAgICAgIHJl
dHVybiBib3VuZHMucGFkKHBhZGRpbmcgfHwgMCk7CisgICAgfQorCisgICAgdXBkYXRlTWFpblRp
dGxlKHRleHQpCisgICAgeworICAgICAgICB0aGlzLm1haW5UaXRsZSA9IHRoaXMuX2xpc3RJdGVt
Tm9kZS5zdHlsZS5mb250RmFtaWx5ID0gdGhpcy5fa2V5d29yZEVkaXRvci52YWx1ZSA9IHRleHQ7
CisKKyAgICAgICAgbGV0IGhhc1RleHQgPSB0ZXh0ICYmIHRleHQubGVuZ3RoOworICAgICAgICB0
aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LnRvZ2dsZSgibm8tdmFsdWUiLCAhaGFzVGV4dCk7
CisgICAgICAgIGlmICghaGFzVGV4dCkKKyAgICAgICAgICAgIHRoaXMuc3VidGl0bGUgPSB0aGlz
Ll9rZXl3b3JkRWRpdG9yLnBsYWNlaG9sZGVyOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlRWxlbWVu
dC5FdmVudC5LZXl3b3JkQ2hhbmdlZCk7CisgICAgfQorCisgICAgc2hvd0tleXdvcmRFZGl0b3Io
KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmtleXdvcmRFZGl0b3JIaWRkZW4pCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5zdWJ0aXRsZSA9ICIiOworICAgICAgICB0aGlz
Ll9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LnJlbW92ZSgiZWRpdG9yLWhpZGRlbiIpOworICAgICAg
ICB0aGlzLl9saXN0SXRlbU5vZGUuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCgpOworCisgICAgICAg
IHRoaXMuX2tleXdvcmRFZGl0b3IudmFsdWUgPSB0aGlzLl9tYWluVGl0bGU7CisgICAgICAgIHRo
aXMuX2tleXdvcmRFZGl0b3Iuc2VsZWN0KCk7CisgICAgfQorCisgICAgaGlkZUtleXdvcmRFZGl0
b3IoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMua2V5d29yZEVkaXRvckhpZGRlbikKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLnVwZGF0ZU1haW5UaXRsZSh0aGlzLl9rZXl3
b3JkRWRpdG9yLnZhbHVlKTsKKyAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5h
ZGQoImVkaXRvci1oaWRkZW4iKTsKKyAgICB9CisKKyAgICBnZXQga2V5d29yZEVkaXRvckhpZGRl
bigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5j
b250YWlucygiZWRpdG9yLWhpZGRlbiIpOworICAgIH0KKworICAgIC8vIFByb3RlY3RlZAorCisg
ICAgb25hdHRhY2goKQorICAgIHsKKyAgICAgICAgc3VwZXIub25hdHRhY2goKTsKKworICAgICAg
ICB0aGlzLl9saXN0SXRlbU5vZGUuc3R5bGUuZm9udEZhbWlseSA9IHRoaXMuX21haW5UaXRsZTsK
KyAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5hZGQoImVkaXRvci1oaWRkZW4i
KTsKKyAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmFwcGVuZENoaWxkKHRoaXMuX2tleXdvcmRF
ZGl0b3IpOworICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCB0aGlzLnNob3dLZXl3b3JkRWRpdG9yLmJpbmQodGhpcykpOworICAgIH0KKworICAgIG9u
ZGVzZWxlY3QoKQorICAgIHsKKyAgICAgICAgdGhpcy5oaWRlS2V5d29yZEVkaXRvcigpOworICAg
IH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9rZXl3b3JkRWRpdG9yS2V5RG93bihldmVudCkK
KyAgICB7CisgICAgICAgIGlmICh0aGlzLmtleXdvcmRFZGl0b3JIaWRkZW4pCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgbGV0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlOworICAgICAg
ICBsZXQgZW50ZXJLZXlDb2RlID0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVu
dGVyLmtleUNvZGU7CisgICAgICAgIGlmIChrZXlDb2RlID09PSBlbnRlcktleUNvZGUpIHsKKyAg
ICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRkKCJlZGl0b3ItaGlkZGVu
Iik7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUVsZW1lbnQuRXZlbnQuRWRpdG9yS2V5RG93biwg
e2tleTogIkVudGVyIn0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgbGV0IGVzY2FwZUtleUNvZGUgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXku
RXNjYXBlLmtleUNvZGU7CisgICAgICAgIGlmIChrZXlDb2RlID09PSBlc2NhcGVLZXlDb2RlKSB7
CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUVsZW1lbnQuRXZlbnQuRWRpdG9yS2V5RG93biwge2tl
eTogIkVzY2FwZSJ9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGxldCB0YWJLZXlDb2RlID0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LlRhYi5r
ZXlDb2RlOworICAgICAgICBpZiAoa2V5Q29kZSA9PT0gdGFiS2V5Q29kZSkgeworICAgICAgICAg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIHRoaXMuX2RvbnRGaXJlS2V5
VXAgPSB0cnVlOworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVFbGVtZW50LkV2ZW50LkVkaXRvcktl
eURvd24sIHtrZXk6ICJUYWIifSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBsZXQga2V5ID0gZXZlbnQua2V5SWRlbnRpZmllcjsKKyAgICAgICAgaWYgKGtleSA9
PT0gIlVwIiB8fCBrZXkgPT09ICJEb3duIikgeworICAgICAgICAgICAgZXZlbnQucHJldmVudERl
ZmF1bHQoKTsKKyAgICAgICAgICAgIHRoaXMuX2RvbnRGaXJlS2V5VXAgPSB0cnVlOworICAgICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlRm9udEZhbWlseVRyZWVFbGVtZW50LkV2ZW50LkVkaXRvcktleURvd24sIHtrZXl9KTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1pbHlUcmVlRWxlbWVu
dC5FdmVudC5FZGl0b3JLZXlEb3duKTsKKyAgICB9CisKKyAgICBfa2V5d29yZEVkaXRvcktleVVw
KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmtleXdvcmRFZGl0b3JIaWRkZW4gfHwgdGhpcy5f
ZG9udEZpcmVLZXlVcCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLnVwZGF0
ZU1haW5UaXRsZSh0aGlzLl9rZXl3b3JkRWRpdG9yLnZhbHVlKTsKKyAgICB9CisKKyAgICBfa2V5
d29yZEVkaXRvckJsdXJyZWQoKQorICAgIHsKKyAgICAgICAgdGhpcy5oaWRlS2V5d29yZEVkaXRv
cigpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUVsZW1lbnQuRXZlbnQuRWRpdG9yQmx1cnJlZCk7Cisg
ICAgfQorfTsKKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVFbGVtZW50
LkV2ZW50ID0geworICAgIEtleXdvcmRDaGFuZ2VkOiAidmlzdWFsLXN0eWxlLWZvbnQtZmFtaWx5
LXRyZWUtZWxlbWVudC1rZXl3b3JkLWNoYW5nZWQiLAorICAgIEVkaXRvcktleURvd246ICJ2aXN1
YWwtc3R5bGUtZm9udC1mYW1pbHktdHJlZS1lbGVtZW50LWVkaXRvci1rZXktZG93biIsCisgICAg
RWRpdG9yQmx1cnJlZDogInZpc3VhbC1zdHlsZS1mb250LWZhbWlseS10cmVlLWVsZW1lbnQtZWRp
dG9yLWJsdXJyZWQiCit9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>