<?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>129228</bug_id>
          
          <creation_ts>2014-02-23 01:16:00 -0800</creation_ts>
          <short_desc>Compile attribute value matching</short_desc>
          <delta_ts>2014-02-27 21:47:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>barraclough</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>983676</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-02-23 01:16:00 -0800</bug_when>
    <thetext>Compile attribute value matching</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983677</commentid>
    <comment_count>1</comment_count>
      <attachid>224995</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-02-23 01:38:39 -0800</bug_when>
    <thetext>Created attachment 224995
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984094</commentid>
    <comment_count>2</comment_count>
      <attachid>224995</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-24 15:28:50 -0800</bug_when>
    <thetext>Comment on attachment 224995
Patch

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

r=me

&gt; Source/WebCore/cssjit/FunctionCall.h:85
&gt; +        // x86 can swap without side effect. On other platforms, we need to be careful with the registers we use.

I think you mean &quot;swap without a temporary register&quot;.

On other platforms, we need to allocate a register, and avoid conflicts with other allocated registers.

&gt; Source/WebCore/cssjit/FunctionCall.h:99
&gt; +            JSC::MacroAssembler::RegisterID freeRegister;
&gt; +            for (unsigned i = 0; i &lt; m_registerAllocator.allocatedRegisters().size(); ++i) {

It looks funny, at first glance, to assign from something called &quot;allocated registers&quot; into something called &quot;freeRegister&quot;. how about renaming &quot;freeRegister&quot; to &quot;pushedRegister&quot;?

&gt; Source/WebCore/cssjit/SelectorCompiler.cpp:401
&gt; +static inline bool attributeValueTestingRequiresExtraRegister(const AttributeMatchingInfo&amp; attributeInfo)

Should we call this &quot;attributeValueTestingRequiresCaseFoldingRegister&quot;?

&gt; Source/WebCore/cssjit/SelectorCompiler.cpp:1172
&gt; +    // We make the assumption that name matching fails in most case and we keep value matching outside

&quot;cases&quot;

&gt; Source/WebCore/cssjit/SelectorCompiler.cpp:1189
&gt; +    if (attributeSelector.m_match == CSSSelector::Exact)

Can we make this an ASSERT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985459</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-02-27 21:47:03 -0800</bug_when>
    <thetext>Committed r164852: &lt;http://trac.webkit.org/changeset/164852&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224995</attachid>
            <date>2014-02-23 01:38:39 -0800</date>
            <delta_ts>2014-02-24 15:28:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129228-20140223013838.patch</filename>
            <type>text/plain</type>
            <size>47202</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0MzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGI1MzAzZDg5NzFhOTFh
YjE0MWUzMTM5NmJlN2JiZDY1ZGUyNTc3OS4uMTA3YTg1NWQ1Zjc2Mjk1YzgzYzRlOGRlOGVmN2Y1
MmNhN2UzYjkyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxNC0wMi0yMyAgQmVu
amFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29tcGlsZSBh
dHRyaWJ1dGUgdmFsdWUgbWF0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyOTIyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBjb21waWxpbmcgdmFsdWUgbWF0Y2hpbmcg
d2hlbiBtYXRjaGluZyBhdHRyaWJ1dGVzIGluIFNlbGVjdG9yLgorICAgICAgICBUaGlzIHBhdGNo
IG9ubHkgYWRkcyBleGFjdCBtYXRjaGluZywgdGhlIG90aGVyIGNhc2VzIHdpbGwgZm9sbG93Lgor
CisgICAgICAgIFRoZXJlIGlzIGEgbGl0dGxlIGluZnJhc3RydWN0dXJlIGNoYW5nZXMgc2luY2Ug
RnVuY3Rpb25DYWxsIG5vdyBuZWVkcyB0byBzdXBwb3J0CisgICAgICAgIGNhbGxzIHRha2luZyAy
IGFyZ3VtZW50cy4gVGhlIGZ1biBiZWdpbnMgd2hlbiB0aGUgYXJndW1lbnRzIGFyZSBub3QgaW4g
dGhlIHJpZ2h0CisgICAgICAgIHJlZ2lzdGVycyBhbmQgbmVlZCB0byBiZSBtb3ZlZCB0byB0aGUg
cmlnaHQgcGxhY2UuIE90aGVyd2lzZSB0aGUgY29kZSBpcyBzdHJhaWdodGZvcndhcmQuCisKKyAg
ICAgICAgSW4gU2VsZWN0b3JDb21waWxlciwgaXQgaXMgbmVjZXNzYXJ5IHRvIGhhbmRsZSB0d28g
ZGlmZmVyZW50IGNhc2VzIG9mIG1hdGNoaW5nOiBjYXNlIHNlbnNpdGl2ZQorICAgICAgICBhbmQg
Y2FzZSBpbnNlbnNpdGl2ZS4gVGhlIGNob2ljZSBpcyBkb25lIGluIHBhcnQgYXQgY29tcGlsYXRp
b24gdGltZSBieSBhc2tpbmcgSFRNTERvY3VtZW50CisgICAgICAgIGlmIHRoZSBuYW1lIGZpbHRl
ciBjYW4gaW5jbHVkZSBjYXNlIGluc2Vuc2l0aXZlIGF0dHJpYnV0ZS4gVGhlIG90aGVyIHBhcnQg
aXMgZG9uZSBhdCBydW50aW1lCisgICAgICAgIGJ5IHF1ZXJ5aW5nIHRoZSBlbGVtZW50IGZvciBp
dHMgdHlwZSBhbmQgZG9jdW1lbnQuCisKKyAgICAgICAgVGVzdDogZmFzdC9zZWxlY3RvcnMvY2Fz
ZS1pbnNlbnNpdGl2ZS12YWx1ZS1tYXRjaGluZy5odG1sCisKKyAgICAgICAgKiBjc3MvU2VsZWN0
b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmF0dHJpYnV0ZVZhbHVlTWF0Y2hlcyk6
IE51bGwgdmFsdWVzIG1hdGNoaW5nIHNob3VsZCBuZXZlciBoYXBwZW4sIHdoZW4gYW4gYXR0cmli
dXRlCisgICAgICAgIGhhcyBubyB2YWx1ZSwgaXRzIHZhbHVlIGlzIGVtcHR5LgorCisgICAgICAg
ICogY3Nzaml0L0Z1bmN0aW9uQ2FsbC5oOgorICAgICAgICAoV2ViQ29yZTo6RnVuY3Rpb25DYWxs
OjpGdW5jdGlvbkNhbGwpOgorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY2FsbHMgd2l0aCB0d28g
YXJndW1lbnRzLgorICAgICAgICAoV2ViQ29yZTo6RnVuY3Rpb25DYWxsOjpzZXRPbmVBcmd1bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpGdW5jdGlvbkNhbGw6OnNldFR3b0FyZ3VtZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpGdW5jdGlvbkNhbGw6OnN3YXBBcmd1bWVudHMpOgorICAgICAgICBI
ZXJlIHdlIG5lZWQgdG8gc3dhcCB0d28gcmVnaXN0ZXJzLCBidXQgd2UgY2Fubm90IGFsbG9jYXRl
IGEgbmV3IHJlZ2lzdGVyIChiZWNhdXNlIHRoZSBjb250ZXh0CisgICAgICAgIG9mIHRoZSBmdW5j
dGlvbiBjYWxsIG1heSBoYXZlIHRha2VuIGFsbCB0aGUgYXZhaWxhYmxlIHJlZ2lzdGVycyBhbHJl
YWR5KS4KKworICAgICAgICBPbiB4ODYsIHRoZSBzb2x1dGlvbiBpcyBzaW1wbGUsIHdlIGNhbiBz
d2FwIHRoZSB0d28gcmVnaXN0ZXJzIHdpdGhvdXQgc2lkZSBlZmZlY3RzLgorCisgICAgICAgIE9u
IG90aGVyIHBsYXRmb3JtcywgaXQgaXMgYSBsaXR0bGUgbW9yZSBjb21wbGV4LiBJZiB0aGVyZSBp
cyBhbnkgYXZhaWxhYmxlIHJlZ2lzdGVyLCB3ZSBjYW4ganVzdAorICAgICAgICB1c2UgaXQgYXMg
YSB0ZW1wb3JhcnkgdG8gbWFrZSB0aGUgc3dhcC4KKyAgICAgICAgSWYgdGhlcmUgYXJlIG5vIGF2
YWlsYWJsZSByZWdpc3RlcnMsIHdlIGtub3cgdGhhdCBhbGwgdGhlIHJlZ2lzdGVycyBhcmUgdGFr
ZW4uIFNpbmNlIHN3YXBBcmd1bWVudHMoKQorICAgICAgICB3YXMgY2FsbGVkIGFmdGVyIHB1c2hp
bmcgYWxsIHRoZSBhcmd1bWVudHMgb24gdGhlIHN0YWNrLCB3ZSBjYW4gc2FmZWx5IHRyYXNoIHRo
ZSB2YWx1ZSBvZiBhbnkgb2YgdGhvc2UuCisgICAgICAgIFdlIHRha2UgdGhlIGZpcnN0IGF2YWls
YWJsZSByZWdpc3RlciB0aGF0IGlzIG5vdCBhIGZ1bmN0aW9uIGFyZ3VtZW50IGFuZCB1c2UgaXQg
YXMgYSB0ZW1wb3JhcnkuCisKKyAgICAgICAgKFdlYkNvcmU6OkZ1bmN0aW9uQ2FsbDo6cHJlcGFy
ZUFuZENhbGwpOgorICAgICAgICBUaGlzIGlzIHRoZSBmdW4gcGFydCwgd2UgaGF2ZSB0d28gcmVn
aXN0ZXJzIHdoZXJlIHRoZSB2YWx1ZXMgbXVzdCBnbyBiZWZvcmUgdGhlIGZ1bmN0aW9uIGNhbGwu
IFRoZSB2YWx1ZXMKKyAgICAgICAgY2FuIGJlIGluIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgYWxs
b2NhdGVkIHJlZ2lzdGVycy4gVGhlIGNvZGUgaGVyZSBuZWVkcyB0byBtb3ZlIHRoZSB0d28gdmFs
dWVzIHRvCisgICAgICAgIHRoZWlyIHRhcmdldCByZWdpc3RlciB3aGlsZSBhdm9pZGluZyBjb25m
bGljdHMuCisKKyAgICAgICAgKiBjc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpBdHRyaWJ1dGVNYXRjaGluZ0luZm86OkF0dHJp
YnV0ZU1hdGNoaW5nSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpB
dHRyaWJ1dGVNYXRjaGluZ0luZm86OmNhbkRlZmF1bHRUb0Nhc2VTZW5zaXRpdmVWYWx1ZU1hdGNo
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OkF0dHJpYnV0ZU1hdGNoaW5n
SW5mbzo6c2VsZWN0b3IpOgorICAgICAgICBUaGUgdmFsdWUgb2YgSFRNTERvY3VtZW50Ojppc0Nh
c2VTZW5zaXRpdmVBdHRyaWJ1dGUgaXMgbmVlZGVkIGF0IGNvbXBpbGF0aW9uIHRpbWUgdG8gY29t
cHV0ZSB0aGUgbnVtYmVyCisgICAgICAgIG9mIHJlcXVpcmVkIHJlZ2lzdGVycy4gQXMgYSByZXN1
bHQsIHdlIG5lZWQgdG8ga2VlcCBpdCBhbG9uZyBpbiB0aGUgc2VsZWN0b3IgZnJhZ21lbnQuCisK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRv
cjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29t
cGlsZXI6OmF0dHJpYnV0ZU5hbWVUZXN0aW5nUmVxdWlyZXNOYW1lc3BhY2VSZWdpc3Rlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjphdHRyaWJ1dGVWYWx1ZVRlc3RpbmdS
ZXF1aXJlc0V4dHJhUmVnaXN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxl
cjo6bWluaW11bVJlZ2lzdGVyUmVxdWlyZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6bWFya1BhcmVudEVsZW1lbnRJZlJl
c29sdmluZ1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OmNhbk1h
dGNoU3R5bGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6
U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVN5bmNocm9uaXplU3R5bGVBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6Y2FuTWF0Y2hBbmltYXRhYmxl
U1ZHQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVj
dG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVTeW5jaHJvbml6ZUFsbEFuaW1hdGVkU1ZHQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdl
bmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50QXR0cmlidXRlTWF0Y2hpbmcpOgorICAgICAgICBUaGUg
bWF0Y2hpbmcgY29kZSBpcyBtb3ZlZCBpbiBhIGxvY2FsIHNjb3BlLiBUaGlzIGlzIGRvbmUgdG8g
cmVjb3ZlciB0aGUgcmVnaXN0ZXIgb2YgcXVhbGlmaWVkTmFtZUltcGwKKyAgICAgICAgYmVmb3Jl
IGRvaW5nIGFueSB2YWx1ZSBtYXRjaGluZy4gVGhhdCByZWdpc3RlciBjYW4gdGhlbiBiZSB1c2Vk
IHRvIHN0b3JlIHRoZSBleHBlY3RlZCB2YWx1ZSB3aGVuIG1hdGNoaW5nCisgICAgICAgIGFuIGF0
dHJpYnV0ZSB2YWx1ZS4KKyAgICAgICAgSXQgaXMgdW5mb3J0dW5hdGUgdGhlcmUgaXMgc28gbXVj
aCByZWdpc3RlciBwcmVzc3VyZSBpbiB0aGlzIHBhcnQuCisKKyAgICAgICAgVmFsdWUgbWF0Y2hp
bmcgaXMgZG9uZSBvdXRzaWRlIHRoZSBsb29wLiBUaGUgaWRlYSBpcyB0byBrZWVwIHRoZSBsb29w
IHJlYWxseSBzbWFsbCBzaW5jZSBpbiB0aGUgdmFzdCBtYWpvcml0eQorICAgICAgICBvZiBjYXNl
cywgbmFtZSBtYXRjaGluZyBmYWlscy4KKyAgICAgICAgSWYgdGhlIHZhbHVlIG1hdGNoaW5nIGZh
aWxzLCB3ZSBqdW1wIGJhY2sgaW50byB0aGUgdGlnaHQgbG9vcC4KKworICAgICAgICBUaGlzIGlz
IG5vdCBpZGVhbCBpbiBhbGwgc2l0dWF0aW9uLiBGb3IgZXhhbXBsZSB0cml2aWFsIG5hbWUgbWF0
Y2hpbmcgd2l0aCB0cml2aWFsIHZhbHVlIG1hdGNoaW5nIHNob3VsZAorICAgICAgICBiZSBkb25l
IGluIGxvb3AuIFRoZXJlIGlzIGEgRklYTUUgdG8gaW1wcm92ZSB0aG9zZSBjYXNlcyBsYXRlci4K
KworICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZU1hdGNoaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OnRlc3RJc0hUTUxDbGFzc09uRG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZUV4YWN0TWF0Y2hpbmcpOgorICAgICAgICBJbiB0
aGUgY2FzZSBzZW5zaXRpdmUgYnJhbmNoLCB0aGluZ3MgYXJlIHJlYWxseSBzaW1wbGUuIFdlIGhh
dmUgdG8gQXRvbWljU3RyaW5nSW1wbCBwb2ludGVycywgaWYgdGhleQorICAgICAgICBkb24ndCBt
YXRjaCwgaXQgaXMgYSBmYWlsdXJlLgorCisgICAgICAgIFRoZSBjYXNlIHNlbnNpdGl2ZSBicmFu
Y2ggc3RhcnQgYnkgY29tcGFyaW5nIHRoZSBwb2ludGVycyBpbiBjYXNlIHRoZSB2YWx1ZXMgYXJl
IGVxdWFsLiBUaGlzIGlzIGEgY29tbW9uCisgICAgICAgIGNhc2UgYW5kIGl0IHNpbXBsaWZpZXMg
dGhlIGNhc2VzIGZvciBTVkcsIFhIVE1MLCBldGMuCisgICAgICAgIElmIHRoZSB0d28gdmFsdWVz
IGFyZSBub3QgZXF1YWwsIHdlIG11c3QgZmlyc3QgZmluZCBpZiB0aGUgY29udGV4dCByZXF1aXJl
cyBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24KKyAgICAgICAgKEhUTUxFbGVtZW50IGluIEhU
TUxEb2N1bWVudCkuIElmIHRoZSBjb25kaXRpb25zIHJlcXVpcmUgY2FzZSBpbnNlbnNpdGl2ZSBt
YXRjaGluZywgd2UgdGhlbiBmYWxsIGJhY2sKKyAgICAgICAgdG8gYSBmdW5jdGlvbiBjYWxsLgor
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlRWxlbWVudEZ1bmN0aW9uQ2FsbFRlc3QpOgorICAgICAgICAqIGRvbS9BdHRy
aWJ1dGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF0dHJpYnV0ZTo6dmFsdWVNZW1vcnlPZmZzZXQp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmRvY3VtZW50Q2xhc3Nlc01lbW9yeU9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6aXNIVE1MRG9jdW1lbnRDbGFzc0ZsYWcpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjp0cmVlU2NvcGVNZW1vcnlPZmZzZXQpOgorICAgICAgICAqIGRv
bS9UcmVlU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6ZG9jdW1lbnRTY29w
ZU1lbW9yeU9mZnNldCk6CisKIDIwMTQtMDItMTkgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxl
LmNvbT4KIAogICAgICAgICBTaW1wbGlmeSBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1Mp
IGFuZCBzaW1pbGFyIGV4cHJlc3Npb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
Y3BwCmluZGV4IGVhYjlhZDAxMzRmYThmNzZjOTY1NTliNWY2ODU5OWRjZjFjNmVlY2MuLjVlYTI5
NzI2Zjc5YTQyMzEzYTY3MTA4MDg4N2VjZmJjYWQxMDI4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
ZWxlY3RvckNoZWNrZXIuY3BwCkBAIC0yNzcsOCArMjc3LDcgQEAgU2VsZWN0b3JDaGVja2VyOjpN
YXRjaCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoUmVjdXJzaXZlbHkoY29uc3QgU2VsZWN0b3JDaGVj
a2luZ0MKIHN0YXRpYyBib29sIGF0dHJpYnV0ZVZhbHVlTWF0Y2hlcyhjb25zdCBBdHRyaWJ1dGUm
IGF0dHJpYnV0ZSwgQ1NTU2VsZWN0b3I6Ok1hdGNoIG1hdGNoLCBjb25zdCBBdG9taWNTdHJpbmcm
IHNlbGVjdG9yVmFsdWUsIGJvb2wgY2FzZVNlbnNpdGl2ZSkKIHsKICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlID0gYXR0cmlidXRlLnZhbHVlKCk7Ci0gICAgaWYgKHZhbHVlLmlzTnVsbCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKCF2YWx1ZS5pc051bGwoKSk7CiAK
ICAgICBzd2l0Y2ggKG1hdGNoKSB7CiAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RXhhY3Q6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvRnVuY3Rpb25DYWxsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3NqaXQvRnVuY3Rpb25DYWxsLmgKaW5kZXggNmRmYmM1YzczODIxZDk4YjBiNWYyOWU3
N2NmMmU2OTA4OTY5N2MyNS4uOGMyYjVlYjNhZTZlZTgyYWZjYzg3ZWY5OWNkNzk0YmU4NTBkNDAz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nzaml0L0Z1bmN0aW9uQ2FsbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9GdW5jdGlvbkNhbGwuaApAQCAtNDIsNyArNDIsOCBAQCBw
dWJsaWM6CiAgICAgICAgICwgbV9yZWdpc3RlckFsbG9jYXRvcihyZWdpc3RlckFsbG9jYXRvcikK
ICAgICAgICAgLCBtX3N0YWNrQWxsb2NhdG9yKHN0YWNrQWxsb2NhdG9yKQogICAgICAgICAsIG1f
Y2FsbFJlZ2lzdHJ5KGNhbGxSZWdpc3RyeSkKLSAgICAgICAgLCBtX2ZpcnN0QXJndW1lbnQoMCkK
KyAgICAgICAgLCBtX2ZpcnN0QXJndW1lbnQobnVsbHB0cikKKyAgICAgICAgLCBtX3NlY29uZEFy
Z3VtZW50KG51bGxwdHIpCiAgICAgewogICAgIH0KIApAQCAtNTEsMTEgKzUyLDE3IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9mdW5jdGlvbkFkZHJlc3MgPSBmdW5jdGlvbkFkZHJlc3M7CiAgICAgfQog
Ci0gICAgdm9pZCBzZXRGaXJzdEFyZ3VtZW50KGNvbnN0IEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJl
Z2lzdGVySUQmIHJlZ2lzdGVySUQpCisgICAgdm9pZCBzZXRPbmVBcmd1bWVudChjb25zdCBKU0M6
Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEJiByZWdpc3RlcklEKQogICAgIHsKICAgICAgICAg
bV9maXJzdEFyZ3VtZW50ID0gJnJlZ2lzdGVySUQ7CiAgICAgfQogCisgICAgdm9pZCBzZXRUd29B
cmd1bWVudHMoY29uc3QgSlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCYgZmlyc3RSZWdp
c3RlcklELCBjb25zdCBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEJiBzZWNvbmRSZWdp
c3RlcklEKQorICAgIHsKKyAgICAgICAgbV9maXJzdEFyZ3VtZW50ID0gJmZpcnN0UmVnaXN0ZXJJ
RDsKKyAgICAgICAgbV9zZWNvbmRBcmd1bWVudCA9ICZzZWNvbmRSZWdpc3RlcklEOworICAgIH0K
KwogICAgIHZvaWQgY2FsbCgpCiAgICAgewogICAgICAgICBwcmVwYXJlQW5kQ2FsbCgpOwpAQCAt
NzEsMTQgKzc4LDY5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6CisgICAgdm9pZCBzd2Fw
QXJndW1lbnRzKCkKKyAgICB7CisgICAgICAgIEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVy
SUQgYSA9ICptX2ZpcnN0QXJndW1lbnQ7CisgICAgICAgIEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJl
Z2lzdGVySUQgYiA9ICptX3NlY29uZEFyZ3VtZW50OworICAgICAgICAvLyB4ODYgY2FuIHN3YXAg
d2l0aG91dCBzaWRlIGVmZmVjdC4gT24gb3RoZXIgcGxhdGZvcm1zLCB3ZSBuZWVkIHRvIGJlIGNh
cmVmdWwgd2l0aCB0aGUgcmVnaXN0ZXJzIHdlIHVzZS4KKyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2
XzY0KQorICAgICAgICBtX2Fzc2VtYmxlci5zd2FwKGEsIGIpOworI2Vsc2UKKyAgICAgICAgaWYg
KG1fcmVnaXN0ZXJBbGxvY2F0b3IuYXZhaWxhYmxlUmVnaXN0ZXJDb3VudCgpKSB7CisgICAgICAg
ICAgICAvLyBVc3VhbGx5IHdlIGNhbiBqdXN0IHVzZSBhIGZyZWUgcmVnaXN0ZXIuCisgICAgICAg
ICAgICBMb2NhbFJlZ2lzdGVyIHRlbXBWYWx1ZShtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdmUoYSwgdGVtcFZhbHVlKTsKKyAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLm1vdmUoYiwgYSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlKHRlbXBWYWx1
ZSwgYik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBm
cmVlIHJlZ2lzdGVyLCBldmVyeXRoaW5nIHNob3VsZCBiZSBvbiB0aGUgc3RhY2sgYXQgdGhpcyBw
b2ludC4gV2UgY2FuIHRha2UKKyAgICAgICAgICAgIC8vIHRoZSBmaXJzdCBvZiB0aG9zZSBzYXZl
ZCByZWdpc3RlcnMgYW5kIHVzZSBpdCBhcyBhIHRlbXBvcmFyeS4KKyAgICAgICAgICAgIEpTQzo6
TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgZnJlZVJlZ2lzdGVyOworICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcmVnaXN0ZXJBbGxvY2F0b3IuYWxsb2NhdGVkUmVnaXN0
ZXJzKCkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBmcmVlUmVnaXN0ZXIgPSBtX3Jl
Z2lzdGVyQWxsb2NhdG9yLmFsbG9jYXRlZFJlZ2lzdGVycygpW2ldOworICAgICAgICAgICAgICAg
IGlmIChmcmVlUmVnaXN0ZXIgIT0gYSAmJiBmcmVlUmVnaXN0ZXIgIT0gYikKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoZnJlZVJl
Z2lzdGVyICE9IGEgJiYgZnJlZVJlZ2lzdGVyICE9IGIpOworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIubW92ZShhLCBmcmVlUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92ZShi
LCBhKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmUoZnJlZVJlZ2lzdGVyLCBiKTsKKyAg
ICAgICAgfQorI2VuZGlmCisgICAgfQorCiAgICAgdm9pZCBwcmVwYXJlQW5kQ2FsbCgpCiAgICAg
ewogICAgICAgICBBU1NFUlQobV9mdW5jdGlvbkFkZHJlc3MuZXhlY3V0YWJsZUFkZHJlc3MoKSk7
CisgICAgICAgIEFTU0VSVCghbV9maXJzdEFyZ3VtZW50IHx8IChtX2ZpcnN0QXJndW1lbnQgJiYg
IW1fc2Vjb25kQXJndW1lbnQpIHx8IChtX2ZpcnN0QXJndW1lbnQgJiYgbV9zZWNvbmRBcmd1bWVu
dCkpOwogCiAgICAgICAgIHNhdmVBbGxvY2F0ZWRSZWdpc3RlcnMoKTsKICAgICAgICAgbV9zdGFj
a0FsbG9jYXRvci5hbGlnblN0YWNrUHJlRnVuY3Rpb25DYWxsKCk7CiAKLSAgICAgICAgaWYgKG1f
Zmlyc3RBcmd1bWVudCAmJiAqbV9maXJzdEFyZ3VtZW50ICE9IEpTQzo6R1BSSW5mbzo6YXJndW1l
bnRHUFIwKQorICAgICAgICBpZiAobV9zZWNvbmRBcmd1bWVudCkgeworICAgICAgICAgICAgaWYg
KCptX2ZpcnN0QXJndW1lbnQgIT0gSlNDOjpHUFJJbmZvOjphcmd1bWVudEdQUjApIHsKKyAgICAg
ICAgICAgICAgICAvLyBJZiBmaXJzdEFyZ3VtZW50IGlzIG5vdCBpbiBhcmd1bWVudEdQUjAsIHdl
IG5lZWQgdG8gaGFuZGxlIHBvdGVudGlhbCBjb25mbGljdHM6CisgICAgICAgICAgICAgICAgLy8g
LWlmIHNlY29uZEFyZ3VtZW50IGFuZCBmaXJzdEFyZ3VtZW50IGFyZSBpbiBpbnZlcnN0ZWQgcmVn
aXN0ZXJzLCBqdXN0IHN3YXAgdGhlIHZhbHVlcy4KKyAgICAgICAgICAgICAgICAvLyAtaWYgc2Vj
b25kQXJndW1lbnQgaXMgaW4gYXJndW1lbnRHUFIwIGJ1dCBmaXJzdEFyZ3VtZW50IGlzIG5vdCB0
YWtpbmcgYXJndW1lbnRHUFIxLCB3ZSBjYW4gbW92ZSBpbiBvcmRlciBzZWNvbmRBcmd1bWVudC0+
YXJndW1lbnRHUFIxLCBmaXJzdEFyZ3VtZW50LT5hcmd1bWVudEdQUjAKKyAgICAgICAgICAgICAg
ICAvLyAtaWYgc2Vjb25kQXJndW1lbnQgZG9lcyBub3QgdGFrZSBhcmd1bWVudEdQUjAsIGZpcnN0
QXJndW1lbnQgYW5kIHNlY29uZEFyZ3VtZW50IGNhbiBiZSBtb3ZlZCBzYWZlbHkgdG8gZGVzdGlu
YXRpb24uCisgICAgICAgICAgICAgICAgaWYgKCptX3NlY29uZEFyZ3VtZW50ID09IEpTQzo6R1BS
SW5mbzo6YXJndW1lbnRHUFIwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgqbV9maXJzdEFy
Z3VtZW50ID09IEpTQzo6R1BSSW5mbzo6YXJndW1lbnRHUFIxKQorICAgICAgICAgICAgICAgICAg
ICAgICAgc3dhcEFyZ3VtZW50cygpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmUoSlNDOjpHUFJJbmZvOjphcmd1bWVu
dEdQUjAsIEpTQzo6R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLm1vdmUoKm1fZmlyc3RBcmd1bWVudCwgSlNDOjpHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92ZSgqbV9maXJzdEFyZ3VtZW50
LCBKU0M6OkdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgICAgICAgICAgICAgIGlmICgq
bV9zZWNvbmRBcmd1bWVudCAhPSBKU0M6OkdQUkluZm86OmFyZ3VtZW50R1BSMSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmUoKm1fc2Vjb25kQXJndW1lbnQsIEpTQzo6
R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgZmlyc3RBcmd1bWVudCBpcyBhbHJl
YWR5IGluIHBsYWNlLCB3ZSBjYW4gc2FmZWx5IG1vdmUgc2Vjb25kQXJndW1lbnQuCisgICAgICAg
ICAgICAgICAgaWYgKCptX3NlY29uZEFyZ3VtZW50ICE9IEpTQzo6R1BSSW5mbzo6YXJndW1lbnRH
UFIxKQorICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlKCptX3NlY29uZEFyZ3Vt
ZW50LCBKU0M6OkdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0gZWxzZSBpZiAobV9maXJzdEFyZ3VtZW50ICYmICptX2ZpcnN0QXJndW1lbnQgIT0gSlNDOjpH
UFJJbmZvOjphcmd1bWVudEdQUjApCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlKCptX2Zp
cnN0QXJndW1lbnQsIEpTQzo6R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKIAogICAgICAgICBKU0M6
Ok1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBtX2Fzc2VtYmxlci5jYWxsKCk7CkBAIC0xMjAs
NiArMTgyLDcgQEAgcHJpdmF0ZToKIAogICAgIEpTQzo6RnVuY3Rpb25QdHIgbV9mdW5jdGlvbkFk
ZHJlc3M7CiAgICAgY29uc3QgSlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCogbV9maXJz
dEFyZ3VtZW50OworICAgIGNvbnN0IEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQqIG1f
c2Vjb25kQXJndW1lbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKaW5kZXggYWRjZTAyNGM0MjVkZmQ5ZTdk
ZmI3YWNlMDI2ZWQyYmRkZTQwY2FmOS4uNDg1Yjc4OGY2MzFkNWY1OTVmZWY4ZjM4ZmVhMTVjNWI2
MTUwZmEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGls
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50
RGF0YS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ2FsbC5oIgorI2luY2x1ZGUgIkhUTUxEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5o
IgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKQEAgLTkwLDYgKzkxLDIyIEBAIGVudW0gY2xh
c3MgRnVuY3Rpb25UeXBlIHsKICAgICBDYW5ub3RDb21waWxlCiB9OwogCitjbGFzcyBBdHRyaWJ1
dGVNYXRjaGluZ0luZm8geworcHVibGljOgorICAgIEF0dHJpYnV0ZU1hdGNoaW5nSW5mbyhjb25z
dCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIGJvb2wgY2FuRGVmYXVsdFRvQ2FzZVNlbnNpdGl2ZVZh
bHVlTWF0Y2gpCisgICAgICAgIDogbV9zZWxlY3RvcihzZWxlY3RvcikKKyAgICAgICAgLCBtX2Nh
bkRlZmF1bHRUb0Nhc2VTZW5zaXRpdmVWYWx1ZU1hdGNoKGNhbkRlZmF1bHRUb0Nhc2VTZW5zaXRp
dmVWYWx1ZU1hdGNoKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGNhbkRlZmF1bHRUb0Nhc2VT
ZW5zaXRpdmVWYWx1ZU1hdGNoKCkgY29uc3QgeyByZXR1cm4gbV9jYW5EZWZhdWx0VG9DYXNlU2Vu
c2l0aXZlVmFsdWVNYXRjaDsgfQorICAgIGNvbnN0IENTU1NlbGVjdG9yJiBzZWxlY3RvcigpIGNv
bnN0IHsgcmV0dXJuICptX3NlbGVjdG9yOyB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgQ1NTU2Vs
ZWN0b3IqIG1fc2VsZWN0b3I7CisgICAgYm9vbCBtX2NhbkRlZmF1bHRUb0Nhc2VTZW5zaXRpdmVW
YWx1ZU1hdGNoOworfTsKKwogc3RydWN0IFNlbGVjdG9yRnJhZ21lbnQgewogICAgIFNlbGVjdG9y
RnJhZ21lbnQoKQogICAgICAgICA6IHRyYXZlcnNhbEJhY2t0cmFja2luZ0FjdGlvbihCYWNrdHJh
Y2tpbmdBY3Rpb246Ok5vQmFja3RyYWNraW5nKQpAQCAtMTExLDcgKzEyOCw3IEBAIHN0cnVjdCBT
ZWxlY3RvckZyYWdtZW50IHsKICAgICBWZWN0b3I8Y29uc3QgQXRvbWljU3RyaW5nSW1wbCosIDE+
IGNsYXNzTmFtZXM7CiAgICAgSGFzaFNldDx1bnNpZ25lZD4gcHNldWRvQ2xhc3NlczsKICAgICBW
ZWN0b3I8SlNDOjpGdW5jdGlvblB0cj4gdW5vcHRpbWl6ZWRQc2V1ZG9DbGFzc2VzOwotICAgIFZl
Y3Rvcjxjb25zdCBDU1NTZWxlY3Rvcio+IGF0dHJpYnV0ZXM7CisgICAgVmVjdG9yPEF0dHJpYnV0
ZU1hdGNoaW5nSW5mbz4gYXR0cmlidXRlczsKIH07CiAKIHR5cGVkZWYgSlNDOjpNYWNyb0Fzc2Vt
YmxlciBBc3NlbWJsZXI7CkBAIC0xNTQsNyArMTcxLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdl
bmVyYXRlU3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZShBc3NlbWJsZXI6OlJlZ2lzdGVySUQgZWxl
bWVudERhdGFBcnJheVNpemVBbmRGbGFncyk7CiAgICAgdm9pZCBnZW5lcmF0ZVN5bmNocm9uaXpl
QWxsQW5pbWF0ZWRTVkdBdHRyaWJ1dGUoQXNzZW1ibGVyOjpSZWdpc3RlcklEIGVsZW1lbnREYXRh
QXJyYXlTaXplQW5kRmxhZ3MpOwogICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50QXR0cmlidXRlc01h
dGNoaW5nKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29uc3QgTG9jYWxSZWdp
c3RlciYgZWxlbWVudERhdGFBZGRyZXNzLCBjb25zdCBTZWxlY3RvckZyYWdtZW50Jik7Ci0gICAg
dm9pZCBnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVNYXRjaGluZyhBc3NlbWJsZXI6Okp1bXBMaXN0
JiBmYWlsdXJlQ2FzZXMsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjdXJyZW50QXR0cmlidXRlQWRk
cmVzcywgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGRlY0luZGV4UmVnaXN0ZXIsIGNvbnN0IENTU1Nl
bGVjdG9yKiBhdHRyaWJ1dGVTZWxlY3Rvcik7CisgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRBdHRy
aWJ1dGVNYXRjaGluZyhBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIEFzc2VtYmxl
cjo6UmVnaXN0ZXJJRCBjdXJyZW50QXR0cmlidXRlQWRkcmVzcywgQXNzZW1ibGVyOjpSZWdpc3Rl
cklEIGRlY0luZGV4UmVnaXN0ZXIsIGNvbnN0IEF0dHJpYnV0ZU1hdGNoaW5nSW5mbyYgYXR0cmli
dXRlSW5mbyk7CisgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZU1hdGNoaW5n
KEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgQXNzZW1ibGVyOjpSZWdpc3RlcklE
IGN1cnJlbnRBdHRyaWJ1dGVBZGRyZXNzLCBjb25zdCBBdHRyaWJ1dGVNYXRjaGluZ0luZm8mIGF0
dHJpYnV0ZUluZm8pOworICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50QXR0cmlidXRlVmFsdWVFeGFj
dE1hdGNoaW5nKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgQXNzZW1ibGVyOjpS
ZWdpc3RlcklEIGN1cnJlbnRBdHRyaWJ1dGVBZGRyZXNzLCBjb25zdCBBdG9taWNTdHJpbmcmIGV4
cGVjdGVkVmFsdWUsIGJvb2wgY2FzZVNlbnNpdGl2ZSk7CiAgICAgdm9pZCBnZW5lcmF0ZUVsZW1l
bnRIYXNUYWdOYW1lKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZVRvTWF0Y2gpOwogICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SGFzSWQo
QXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBMb2NhbFJlZ2lzdGVyJiBl
bGVtZW50RGF0YUFkZHJlc3MsIGNvbnN0IEF0b21pY1N0cmluZyYgaWRUb01hdGNoKTsKICAgICB2
b2lkIGdlbmVyYXRlRWxlbWVudEhhc0NsYXNzZXMoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVy
ZUNhc2VzLCBjb25zdCBMb2NhbFJlZ2lzdGVyJiBlbGVtZW50RGF0YUFkZHJlc3MsIGNvbnN0IFZl
Y3Rvcjxjb25zdCBBdG9taWNTdHJpbmdJbXBsKj4mIGNsYXNzTmFtZXMpOwpAQCAtMzI4LDExICsz
NDcsMTMgQEAgaW5saW5lIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6U2VsZWN0b3JDb2RlR2VuZXJh
dG9yKGNvbnN0IENTU1NlbGVjdG9yKiByb290U2VsZWMKICAgICAgICAgICAgIGlmIChtX2Z1bmN0
aW9uVHlwZSA9PSBGdW5jdGlvblR5cGU6OkNhbm5vdENvbXBpbGUgfHwgbV9mdW5jdGlvblR5cGUg
PT0gRnVuY3Rpb25UeXBlOjpDYW5ub3RNYXRjaEFueXRoaW5nKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpFeGFj
dDoKKyAgICAgICAgICAgIGZyYWdtZW50LmF0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZU1hdGNo
aW5nSW5mbyhzZWxlY3RvciwgSFRNTERvY3VtZW50Ojppc0Nhc2VTZW5zaXRpdmVBdHRyaWJ1dGUo
c2VsZWN0b3ItPmF0dHJpYnV0ZSgpKSkpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlNldDoKLSAgICAgICAgICAgIGZyYWdtZW50LmF0dHJpYnV0ZXMuYXBw
ZW5kKHNlbGVjdG9yKTsKKyAgICAgICAgICAgIGZyYWdtZW50LmF0dHJpYnV0ZXMuYXBwZW5kKEF0
dHJpYnV0ZU1hdGNoaW5nSW5mbyhzZWxlY3RvciwgZmFsc2UpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpVbmtub3duOgotICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpFeGFjdDoKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6TGlzdDoKICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6SHlwaGVuOgogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1
ZG9FbGVtZW50OgpAQCAtMzcyLDYgKzM5MywxNiBAQCBDYW5ub3RIYW5kbGVTZWxlY3RvcjoKICAg
ICBtX2Z1bmN0aW9uVHlwZSA9IEZ1bmN0aW9uVHlwZTo6Q2Fubm90Q29tcGlsZTsKIH0KIAorc3Rh
dGljIGlubGluZSBib29sIGF0dHJpYnV0ZU5hbWVUZXN0aW5nUmVxdWlyZXNOYW1lc3BhY2VSZWdp
c3Rlcihjb25zdCBDU1NTZWxlY3RvciYgYXR0cmlidXRlU2VsZWN0b3IpCit7CisgICAgcmV0dXJu
IGF0dHJpYnV0ZVNlbGVjdG9yLmF0dHJpYnV0ZSgpLnByZWZpeCgpICE9IHN0YXJBdG9tICYmICFh
dHRyaWJ1dGVTZWxlY3Rvci5hdHRyaWJ1dGUoKS5uYW1lc3BhY2VVUkkoKS5pc051bGwoKTsKK30K
Kworc3RhdGljIGlubGluZSBib29sIGF0dHJpYnV0ZVZhbHVlVGVzdGluZ1JlcXVpcmVzRXh0cmFS
ZWdpc3Rlcihjb25zdCBBdHRyaWJ1dGVNYXRjaGluZ0luZm8mIGF0dHJpYnV0ZUluZm8pCit7Cisg
ICAgcmV0dXJuICFhdHRyaWJ1dGVJbmZvLmNhbkRlZmF1bHRUb0Nhc2VTZW5zaXRpdmVWYWx1ZU1h
dGNoKCk7Cit9CisKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbWluaW11bVJlZ2lzdGVyUmVxdWly
ZW1lbnRzKGNvbnN0IFNlbGVjdG9yRnJhZ21lbnRMaXN0JiBzZWxlY3RvckZyYWdtZW50cykKIHsK
ICAgICAvLyBTdHJpY3QgbWluaW11bSB0byBtYXRjaCBhbnl0aGluZyBpbnRlcmVzdGluZzoKQEAg
LTM4MSwxMCArNDEyLDEwIEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbWluaW11bVJlZ2lzdGVy
UmVxdWlyZW1lbnRzKGNvbnN0IFNlbGVjdG9yRnJhZ21lbnRMaXN0JiBzCiAgICAgLy8gQXR0cmli
dXRlcyBjYXVzZSBzb21lIHJlZ2lzdGVyIHByZXNzdXJlLgogICAgIGZvciAodW5zaWduZWQgc2Vs
ZWN0b3JGcmFnbWVudEluZGV4ID0gMDsgc2VsZWN0b3JGcmFnbWVudEluZGV4IDwgc2VsZWN0b3JG
cmFnbWVudHMuc2l6ZSgpOyArK3NlbGVjdG9yRnJhZ21lbnRJbmRleCkgewogICAgICAgICBjb25z
dCBTZWxlY3RvckZyYWdtZW50JiBzZWxlY3RvckZyYWdtZW50ID0gc2VsZWN0b3JGcmFnbWVudHNb
c2VsZWN0b3JGcmFnbWVudEluZGV4XTsKLSAgICAgICAgY29uc3QgVmVjdG9yPGNvbnN0IENTU1Nl
bGVjdG9yKj4mIGF0dHJpYnV0ZXMgPSBzZWxlY3RvckZyYWdtZW50LmF0dHJpYnV0ZXM7CisgICAg
ICAgIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGVNYXRjaGluZ0luZm8+JiBhdHRyaWJ1dGVzID0gc2Vs
ZWN0b3JGcmFnbWVudC5hdHRyaWJ1dGVzOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgYXR0cmli
dXRlSW5kZXggPSAwOyBhdHRyaWJ1dGVJbmRleCA8IGF0dHJpYnV0ZXMuc2l6ZSgpOyArK2F0dHJp
YnV0ZUluZGV4KSB7Ci0gICAgICAgICAgICAvLyBFbGVtZW50ICsgRWxlbWVudERhdGEgKyBzY3Jh
dGNoUmVnaXN0ZXIgKyBhdHRyaWJ1dGVBcnJheVBvaW50ZXIgKyBleHBlY3RlZExvY2FsTmFtZSAr
IHF1YWxpZmllZE5hbWVJbXBsLgorICAgICAgICAgICAgLy8gRWxlbWVudCArIEVsZW1lbnREYXRh
ICsgc2NyYXRjaFJlZ2lzdGVyICsgYXR0cmlidXRlQXJyYXlQb2ludGVyICsgZXhwZWN0ZWRMb2Nh
bE5hbWUgKyAocXVhbGlmaWVkTmFtZUltcGwgJiYgZXhwZWN0ZWRWYWx1ZSkuCiAgICAgICAgICAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVNaW5pbXVtID0gNjsKICAgICAgICAgICAgIGlmIChzZWxlY3Rv
ckZyYWdtZW50LnRyYXZlcnNhbEJhY2t0cmFja2luZ0FjdGlvbiA9PSBCYWNrdHJhY2tpbmdBY3Rp
b246Okp1bXBUb0Rlc2NlbmRhbnRUYWlsCiAgICAgICAgICAgICAgICAgfHwgc2VsZWN0b3JGcmFn
bWVudC5tYXRjaGluZ0JhY2t0cmFja2luZ0FjdGlvbiA9PSBCYWNrdHJhY2tpbmdBY3Rpb246Okp1
bXBUb0Rlc2NlbmRhbnRUYWlsKQpAQCAtMzkzLDkgKzQyNCwxMSBAQCBzdGF0aWMgaW5saW5lIHVu
c2lnbmVkIG1pbmltdW1SZWdpc3RlclJlcXVpcmVtZW50cyhjb25zdCBTZWxlY3RvckZyYWdtZW50
TGlzdCYgcwogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuc2l6ZSgpICE9IDEpCiAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlTWluaW11bSArPSAyOyAvLyBGb3IgdGhlIGxvY2FsIGNvcHkgb2Yg
dGhlIGNvdW50ZXIgYW5kIGF0dHJpYnV0ZUFycmF5UG9pbnRlci4KIAotICAgICAgICAgICAgY29u
c3QgQ1NTU2VsZWN0b3IqIGF0dHJpYnV0ZVNlbGVjdG9yID0gYXR0cmlidXRlc1thdHRyaWJ1dGVJ
bmRleF07Ci0gICAgICAgICAgICBpZiAoYXR0cmlidXRlU2VsZWN0b3ItPmF0dHJpYnV0ZSgpLnBy
ZWZpeCgpICE9IHN0YXJBdG9tICYmICFhdHRyaWJ1dGVTZWxlY3Rvci0+YXR0cmlidXRlKCkubmFt
ZXNwYWNlVVJJKCkuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgYXR0cmlidXRlTWluaW11bSAr
PSAxOyAvLyBBZGRpdGlvbmFsIHJlZ2lzdGVyIGZvciB0aGUgZXhwZWN0ZWQgbmFtZXNwYWNlLgor
ICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTWF0Y2hpbmdJbmZvJiBhdHRyaWJ1dGVJbmZvID0g
YXR0cmlidXRlc1thdHRyaWJ1dGVJbmRleF07CisgICAgICAgICAgICBjb25zdCBDU1NTZWxlY3Rv
ciYgYXR0cmlidXRlU2VsZWN0b3IgPSBhdHRyaWJ1dGVJbmZvLnNlbGVjdG9yKCk7CisgICAgICAg
ICAgICBpZiAoYXR0cmlidXRlTmFtZVRlc3RpbmdSZXF1aXJlc05hbWVzcGFjZVJlZ2lzdGVyKGF0
dHJpYnV0ZVNlbGVjdG9yKQorICAgICAgICAgICAgICAgIHx8IGF0dHJpYnV0ZVZhbHVlVGVzdGlu
Z1JlcXVpcmVzRXh0cmFSZWdpc3RlcihhdHRyaWJ1dGVJbmZvKSkKKyAgICAgICAgICAgICAgICBh
dHRyaWJ1dGVNaW5pbXVtICs9IDE7CiAKICAgICAgICAgICAgIG1pbmltdW0gPSBzdGQ6Om1heCht
aW5pbXVtLCBhdHRyaWJ1dGVNaW5pbXVtKTsKICAgICAgICAgfQpAQCAtODIzLDcgKzg1Niw3IEBA
IHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjptYXJrUGFyZW50RWxlbWVudElmUmVzb2x2aW5n
U3R5bGUoSlNDOjpGdW5jdGlvblB0ciBtCiAgICAgLy8gSW52b2tlIHRoZSBtYXJraW5nIGZ1bmN0
aW9uIG9uIHRoZSBwYXJlbnQgZWxlbWVudC4KICAgICBGdW5jdGlvbkNhbGwgZnVuY3Rpb25DYWxs
KG1fYXNzZW1ibGVyLCBtX3JlZ2lzdGVyQWxsb2NhdG9yLCBtX3N0YWNrQWxsb2NhdG9yLCBtX2Z1
bmN0aW9uQ2FsbHMpOwogICAgIGZ1bmN0aW9uQ2FsbC5zZXRGdW5jdGlvbkFkZHJlc3MobWFya2lu
Z0Z1bmN0aW9uKTsKLSAgICBmdW5jdGlvbkNhbGwuc2V0Rmlyc3RBcmd1bWVudChwYXJlbnRFbGVt
ZW50KTsKKyAgICBmdW5jdGlvbkNhbGwuc2V0T25lQXJndW1lbnQocGFyZW50RWxlbWVudCk7CiAg
ICAgZnVuY3Rpb25DYWxsLmNhbGwoKTsKIAogICAgIG5vdFJlc29sdmluZ1N0eWxlLmxpbmsoJm1f
YXNzZW1ibGVyKTsKQEAgLTk1OCwxNCArOTkxLDE0IEBAIHN0YXRpYyBpbmxpbmUgQXNzZW1ibGVy
OjpKdW1wIHRlc3RJc0hUTUxGbGFnT25Ob2RlKEFzc2VtYmxlcjo6UmVzdWx0Q29uZGl0aW9uIGNv
CiBzdGF0aWMgaW5saW5lIGJvb2wgY2FuTWF0Y2hTdHlsZUF0dHJpYnV0ZShjb25zdCBTZWxlY3Rv
ckZyYWdtZW50JiBmcmFnbWVudCkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnJh
Z21lbnQuYXR0cmlidXRlcy5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBDU1NTZWxlY3Rv
ciogYXR0cmlidXRlU2VsZWN0b3IgPSBmcmFnbWVudC5hdHRyaWJ1dGVzW2ldOwotICAgICAgICBj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlU2VsZWN0b3ItPmF0
dHJpYnV0ZSgpOworICAgICAgICBjb25zdCBDU1NTZWxlY3RvciYgYXR0cmlidXRlU2VsZWN0b3Ig
PSBmcmFnbWVudC5hdHRyaWJ1dGVzW2ldLnNlbGVjdG9yKCk7CisgICAgICAgIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGVTZWxlY3Rvci5hdHRyaWJ1dGUoKTsK
ICAgICAgICAgaWYgKEF0dHJpYnV0ZTo6bmFtZU1hdGNoZXNGaWx0ZXIoSFRNTE5hbWVzOjpzdHls
ZUF0dHIsIGF0dHJpYnV0ZU5hbWUucHJlZml4KCksIGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCks
IGF0dHJpYnV0ZU5hbWUubmFtZXNwYWNlVVJJKCkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBjYW5vbmljYWxMb2NhbE5hbWUgPSBhdHRy
aWJ1dGVTZWxlY3Rvci0+YXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lKCk7CisgICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgY2Fub25pY2FsTG9jYWxOYW1lID0gYXR0cmlidXRlU2VsZWN0b3Iu
YXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lKCk7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVOYW1l
LmxvY2FsTmFtZSgpICE9IGNhbm9uaWNhbExvY2FsTmFtZQotICAgICAgICAgICAgJiYgQXR0cmli
dXRlOjpuYW1lTWF0Y2hlc0ZpbHRlcihIVE1MTmFtZXM6OnN0eWxlQXR0ciwgYXR0cmlidXRlTmFt
ZS5wcmVmaXgoKSwgYXR0cmlidXRlU2VsZWN0b3ItPmF0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFt
ZSgpLCBhdHRyaWJ1dGVOYW1lLm5hbWVzcGFjZVVSSSgpKSkgeworICAgICAgICAgICAgJiYgQXR0
cmlidXRlOjpuYW1lTWF0Y2hlc0ZpbHRlcihIVE1MTmFtZXM6OnN0eWxlQXR0ciwgYXR0cmlidXRl
TmFtZS5wcmVmaXgoKSwgYXR0cmlidXRlU2VsZWN0b3IuYXR0cmlidXRlQ2Fub25pY2FsTG9jYWxO
YW1lKCksIGF0dHJpYnV0ZU5hbWUubmFtZXNwYWNlVVJJKCkpKSB7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTk4MCw3ICsxMDEzLDcgQEAgdm9pZCBTZWxl
Y3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlU3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZShBc3Nl
bWJsZXI6OlJlZ2lzdGUKICAgICBGdW5jdGlvbkNhbGwgZnVuY3Rpb25DYWxsKG1fYXNzZW1ibGVy
LCBtX3JlZ2lzdGVyQWxsb2NhdG9yLCBtX3N0YWNrQWxsb2NhdG9yLCBtX2Z1bmN0aW9uQ2FsbHMp
OwogICAgIGZ1bmN0aW9uQ2FsbC5zZXRGdW5jdGlvbkFkZHJlc3MoU3R5bGVkRWxlbWVudDo6c3lu
Y2hyb25pemVTdHlsZUF0dHJpYnV0ZUludGVybmFsKTsKICAgICBBc3NlbWJsZXI6OlJlZ2lzdGVy
SUQgZWxlbWVudEFkZHJlc3MgPSBlbGVtZW50QWRkcmVzc1JlZ2lzdGVyOwotICAgIGZ1bmN0aW9u
Q2FsbC5zZXRGaXJzdEFyZ3VtZW50KGVsZW1lbnRBZGRyZXNzKTsKKyAgICBmdW5jdGlvbkNhbGwu
c2V0T25lQXJndW1lbnQoZWxlbWVudEFkZHJlc3MpOwogICAgIGZ1bmN0aW9uQ2FsbC5jYWxsKCk7
CiAKICAgICBzdHlsZUF0dHJpYnV0ZU5vdERpcnR5LmxpbmsoJm1fYXNzZW1ibGVyKTsKQEAgLTk4
OSwxNCArMTAyMiwxNCBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVTeW5j
aHJvbml6ZVN0eWxlQXR0cmlidXRlKEFzc2VtYmxlcjo6UmVnaXN0ZQogc3RhdGljIGlubGluZSBi
b29sIGNhbk1hdGNoQW5pbWF0YWJsZVNWR0F0dHJpYnV0ZShjb25zdCBTZWxlY3RvckZyYWdtZW50
JiBmcmFnbWVudCkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnJhZ21lbnQuYXR0
cmlidXRlcy5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBDU1NTZWxlY3RvciogYXR0cmli
dXRlU2VsZWN0b3IgPSBmcmFnbWVudC5hdHRyaWJ1dGVzW2ldOwotICAgICAgICBjb25zdCBRdWFs
aWZpZWROYW1lJiBzZWxlY3RvckF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGVTZWxlY3Rvci0+YXR0
cmlidXRlKCk7CisgICAgICAgIGNvbnN0IENTU1NlbGVjdG9yJiBhdHRyaWJ1dGVTZWxlY3RvciA9
IGZyYWdtZW50LmF0dHJpYnV0ZXNbaV0uc2VsZWN0b3IoKTsKKyAgICAgICAgY29uc3QgUXVhbGlm
aWVkTmFtZSYgc2VsZWN0b3JBdHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlU2VsZWN0b3IuYXR0cmli
dXRlKCk7CiAKICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgY2FuZGlkYXRlRm9yTG9jYWxO
YW1lID0gU1ZHRWxlbWVudDo6YW5pbWF0YWJsZUF0dHJpYnV0ZUZvck5hbWUoc2VsZWN0b3JBdHRy
aWJ1dGVOYW1lLmxvY2FsTmFtZSgpKTsKICAgICAgICAgaWYgKEF0dHJpYnV0ZTo6bmFtZU1hdGNo
ZXNGaWx0ZXIoY2FuZGlkYXRlRm9yTG9jYWxOYW1lLCBzZWxlY3RvckF0dHJpYnV0ZU5hbWUucHJl
Zml4KCksIHNlbGVjdG9yQXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSwgc2VsZWN0b3JBdHRyaWJ1
dGVOYW1lLm5hbWVzcGFjZVVSSSgpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY2Fub25pY2FsTG9jYWxOYW1lID0gYXR0cmlidXRlU2Vs
ZWN0b3ItPmF0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZSgpOworICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGNhbm9uaWNhbExvY2FsTmFtZSA9IGF0dHJpYnV0ZVNlbGVjdG9yLmF0dHJpYnV0
ZUNhbm9uaWNhbExvY2FsTmFtZSgpOwogICAgICAgICBpZiAoc2VsZWN0b3JBdHRyaWJ1dGVOYW1l
LmxvY2FsTmFtZSgpICE9IGNhbm9uaWNhbExvY2FsTmFtZSkgewogICAgICAgICAgICAgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgY2FuZGlkYXRlRm9yQ2Fub25pY2FsTG9jYWxOYW1lID0gU1ZHRWxlbWVu
dDo6YW5pbWF0YWJsZUF0dHJpYnV0ZUZvck5hbWUoc2VsZWN0b3JBdHRyaWJ1dGVOYW1lLmxvY2Fs
TmFtZSgpKTsKICAgICAgICAgICAgIGlmIChBdHRyaWJ1dGU6Om5hbWVNYXRjaGVzRmlsdGVyKGNh
bmRpZGF0ZUZvckNhbm9uaWNhbExvY2FsTmFtZSwgc2VsZWN0b3JBdHRyaWJ1dGVOYW1lLnByZWZp
eCgpLCBzZWxlY3RvckF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCksIHNlbGVjdG9yQXR0cmlidXRl
TmFtZS5uYW1lc3BhY2VVUkkoKSkpCkBAIC0xMDE1LDcgKzEwNDgsNyBAQCB2b2lkIFNlbGVjdG9y
Q29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVTeW5jaHJvbml6ZUFsbEFuaW1hdGVkU1ZHQXR0cmlidXRl
KEFzc2VtYmxlcgogICAgIEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbkNhbGwobV9hc3NlbWJsZXIsIG1f
cmVnaXN0ZXJBbGxvY2F0b3IsIG1fc3RhY2tBbGxvY2F0b3IsIG1fZnVuY3Rpb25DYWxscyk7CiAg
ICAgZnVuY3Rpb25DYWxsLnNldEZ1bmN0aW9uQWRkcmVzcyhTVkdFbGVtZW50OjpzeW5jaHJvbml6
ZUFsbEFuaW1hdGVkU1ZHQXR0cmlidXRlKTsKICAgICBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgZWxl
bWVudEFkZHJlc3MgPSBlbGVtZW50QWRkcmVzc1JlZ2lzdGVyOwotICAgIGZ1bmN0aW9uQ2FsbC5z
ZXRGaXJzdEFyZ3VtZW50KGVsZW1lbnRBZGRyZXNzKTsKKyAgICBmdW5jdGlvbkNhbGwuc2V0T25l
QXJndW1lbnQoZWxlbWVudEFkZHJlc3MpOwogICAgIGZ1bmN0aW9uQ2FsbC5jYWxsKCk7CiAKICAg
ICBhbmltYXRlZFNWR0F0dHJpYnV0ZXNOb3REaXJ0eS5saW5rKCZtX2Fzc2VtYmxlcik7CkBAIC0x
MDgzLDE1ICsxMTE2LDE2IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVs
ZW1lbnRBdHRyaWJ1dGVzTWF0Y2hpbmcoQXNzZW1ibGVyOjpKdW1wTGlzCiAgICAgfQogfQogCi12
b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50QXR0cmlidXRlTWF0Y2hp
bmcoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBBc3NlbWJsZXI6OlJlZ2lzdGVy
SUQgY3VycmVudEF0dHJpYnV0ZUFkZHJlc3MsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBkZWNJbmRl
eFJlZ2lzdGVyLCBjb25zdCBDU1NTZWxlY3RvciogYXR0cmlidXRlU2VsZWN0b3IpCit2b2lkIFNl
bGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50QXR0cmlidXRlTWF0Y2hpbmcoQXNz
ZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgY3Vy
cmVudEF0dHJpYnV0ZUFkZHJlc3MsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBkZWNJbmRleFJlZ2lz
dGVyLCBjb25zdCBBdHRyaWJ1dGVNYXRjaGluZ0luZm8mIGF0dHJpYnV0ZUluZm8pCiB7CiAgICAg
Ly8gR2V0IHRoZSBsb2NhbE5hbWUgdXNlZCBmb3IgY29tcGFyaXNvbi4gSFRNTCBlbGVtZW50cyB1
c2UgYSBsb3dlcmNhc2UgbG9jYWwgbmFtZSBrbm93biBpbiBzZWxlY3RvcnMgYXMgY2Fub25pY2Fs
TG9jYWxOYW1lLgogICAgIExvY2FsUmVnaXN0ZXIgbG9jYWxOYW1lVG9NYXRjaChtX3JlZ2lzdGVy
QWxsb2NhdG9yKTsKIAogICAgIC8vIEluIGdlbmVyYWwsIGNhbm9uaWNhbExvY2FsTmFtZSBhbmQg
bG9jYWxOYW1lIGFyZSB0aGUgc2FtZS4gV2hlbiB0aGV5IGRpZmZlciwgd2UgaGF2ZSB0byBjaGVj
ayBpZiB0aGUgbm9kZSBpcyBIVE1MIHRvIGtub3cKICAgICAvLyB3aGljaCBvbmUgdG8gdXNlLgot
ICAgIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIGNhbm9uaWNhbExvY2FsTmFtZSA9IGF0dHJpYnV0
ZVNlbGVjdG9yLT5hdHRyaWJ1dGVDYW5vbmljYWxMb2NhbE5hbWUoKS5pbXBsKCk7Ci0gICAgY29u
c3QgQXRvbWljU3RyaW5nSW1wbCogbG9jYWxOYW1lID0gYXR0cmlidXRlU2VsZWN0b3ItPmF0dHJp
YnV0ZSgpLmxvY2FsTmFtZSgpLmltcGwoKTsKKyAgICBjb25zdCBDU1NTZWxlY3RvciYgYXR0cmli
dXRlU2VsZWN0b3IgPSBhdHRyaWJ1dGVJbmZvLnNlbGVjdG9yKCk7CisgICAgY29uc3QgQXRvbWlj
U3RyaW5nSW1wbCogY2Fub25pY2FsTG9jYWxOYW1lID0gYXR0cmlidXRlU2VsZWN0b3IuYXR0cmli
dXRlQ2Fub25pY2FsTG9jYWxOYW1lKCkuaW1wbCgpOworICAgIGNvbnN0IEF0b21pY1N0cmluZ0lt
cGwqIGxvY2FsTmFtZSA9IGF0dHJpYnV0ZVNlbGVjdG9yLmF0dHJpYnV0ZSgpLmxvY2FsTmFtZSgp
LmltcGwoKTsKICAgICBpZiAoY2Fub25pY2FsTG9jYWxOYW1lID09IGxvY2FsTmFtZSkKICAgICAg
ICAgbV9hc3NlbWJsZXIubW92ZShBc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2Fub25pY2FsTG9j
YWxOYW1lKSwgbG9jYWxOYW1lVG9NYXRjaCk7CiAgICAgZWxzZSB7CkBAIC0xMTA0LDIzICsxMTM4
LDI3IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1
dGVNYXRjaGluZyhBc3NlbWJsZXI6Okp1bXBMaXN0CiAgICAgQXNzZW1ibGVyOjpKdW1wTGlzdCBz
dWNjZXNzQ2FzZXM7CiAgICAgQXNzZW1ibGVyOjpMYWJlbCBsb29wU3RhcnQobV9hc3NlbWJsZXIu
bGFiZWwoKSk7CiAKLSAgICBMb2NhbFJlZ2lzdGVyIHF1YWxpZmllZE5hbWVJbXBsKG1fcmVnaXN0
ZXJBbGxvY2F0b3IpOwotICAgIG1fYXNzZW1ibGVyLmxvYWRQdHIoQXNzZW1ibGVyOjpBZGRyZXNz
KGN1cnJlbnRBdHRyaWJ1dGVBZGRyZXNzLCBBdHRyaWJ1dGU6Om5hbWVNZW1vcnlPZmZzZXQoKSks
IHF1YWxpZmllZE5hbWVJbXBsKTsKLQotICAgIGJvb2wgc2hvdWxkQ2hlY2tOYW1lc3BhY2UgPSBh
dHRyaWJ1dGVTZWxlY3Rvci0+YXR0cmlidXRlKCkucHJlZml4KCkgIT0gc3RhckF0b207Ci0gICAg
aWYgKHNob3VsZENoZWNrTmFtZXNwYWNlKSB7Ci0gICAgICAgIEFzc2VtYmxlcjo6SnVtcCBuYW1l
RG9lc05vdE1hdGNoID0gbV9hc3NlbWJsZXIuYnJhbmNoUHRyKEFzc2VtYmxlcjo6Tm90RXF1YWws
IEFzc2VtYmxlcjo6QWRkcmVzcyhxdWFsaWZpZWROYW1lSW1wbCwgUXVhbGlmaWVkTmFtZTo6UXVh
bGlmaWVkTmFtZUltcGw6OmxvY2FsTmFtZU1lbW9yeU9mZnNldCgpKSwgbG9jYWxOYW1lVG9NYXRj
aCk7Ci0KLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nSW1wbCogbmFtZXNwYWNlVVJJID0gYXR0
cmlidXRlU2VsZWN0b3ItPmF0dHJpYnV0ZSgpLm5hbWVzcGFjZVVSSSgpLmltcGwoKTsKLSAgICAg
ICAgaWYgKG5hbWVzcGFjZVVSSSkgewotICAgICAgICAgICAgTG9jYWxSZWdpc3RlciBuYW1lc3Bh
Y2VUb01hdGNoKG1fcmVnaXN0ZXJBbGxvY2F0b3IpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bW92ZShBc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobmFtZXNwYWNlVVJJKSwgbmFtZXNwYWNlVG9N
YXRjaCk7Ci0gICAgICAgICAgICBzdWNjZXNzQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5j
aFB0cihBc3NlbWJsZXI6OkVxdWFsLCBBc3NlbWJsZXI6OkFkZHJlc3MocXVhbGlmaWVkTmFtZUlt
cGwsIFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBsOjpuYW1lc3BhY2VNZW1vcnlPZmZz
ZXQoKSksIG5hbWVzcGFjZVRvTWF0Y2gpKTsKKyAgICB7CisgICAgICAgIExvY2FsUmVnaXN0ZXIg
cXVhbGlmaWVkTmFtZUltcGwobV9yZWdpc3RlckFsbG9jYXRvcik7CisgICAgICAgIG1fYXNzZW1i
bGVyLmxvYWRQdHIoQXNzZW1ibGVyOjpBZGRyZXNzKGN1cnJlbnRBdHRyaWJ1dGVBZGRyZXNzLCBB
dHRyaWJ1dGU6Om5hbWVNZW1vcnlPZmZzZXQoKSksIHF1YWxpZmllZE5hbWVJbXBsKTsKKworICAg
ICAgICBib29sIHNob3VsZENoZWNrTmFtZXNwYWNlID0gYXR0cmlidXRlU2VsZWN0b3IuYXR0cmli
dXRlKCkucHJlZml4KCkgIT0gc3RhckF0b207CisgICAgICAgIGlmIChzaG91bGRDaGVja05hbWVz
cGFjZSkgeworICAgICAgICAgICAgQXNzZW1ibGVyOjpKdW1wIG5hbWVEb2VzTm90TWF0Y2ggPSBt
X2Fzc2VtYmxlci5icmFuY2hQdHIoQXNzZW1ibGVyOjpOb3RFcXVhbCwgQXNzZW1ibGVyOjpBZGRy
ZXNzKHF1YWxpZmllZE5hbWVJbXBsLCBRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbDo6
bG9jYWxOYW1lTWVtb3J5T2Zmc2V0KCkpLCBsb2NhbE5hbWVUb01hdGNoKTsKKworICAgICAgICAg
ICAgY29uc3QgQXRvbWljU3RyaW5nSW1wbCogbmFtZXNwYWNlVVJJID0gYXR0cmlidXRlU2VsZWN0
b3IuYXR0cmlidXRlKCkubmFtZXNwYWNlVVJJKCkuaW1wbCgpOworICAgICAgICAgICAgaWYgKG5h
bWVzcGFjZVVSSSkgeworICAgICAgICAgICAgICAgIExvY2FsUmVnaXN0ZXIgbmFtZXNwYWNlVG9N
YXRjaChtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZlKEFzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihuYW1lc3BhY2VVUkkpLCBuYW1lc3BhY2VUb01h
dGNoKTsKKyAgICAgICAgICAgICAgICBzdWNjZXNzQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmJy
YW5jaFB0cihBc3NlbWJsZXI6OkVxdWFsLCBBc3NlbWJsZXI6OkFkZHJlc3MocXVhbGlmaWVkTmFt
ZUltcGwsIFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBsOjpuYW1lc3BhY2VNZW1vcnlP
ZmZzZXQoKSksIG5hbWVzcGFjZVRvTWF0Y2gpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgIHN1Y2Nlc3NDYXNlcy5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoVGVzdFB0cihB
c3NlbWJsZXI6Olplcm8sIEFzc2VtYmxlcjo6QWRkcmVzcyhxdWFsaWZpZWROYW1lSW1wbCwgUXVh
bGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGw6Om5hbWVzcGFjZU1lbW9yeU9mZnNldCgpKSkp
OworICAgICAgICAgICAgbmFtZURvZXNOb3RNYXRjaC5saW5rKCZtX2Fzc2VtYmxlcik7CiAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgc3VjY2Vzc0Nhc2VzLmFwcGVuZChtX2Fzc2VtYmxlci5i
cmFuY2hUZXN0UHRyKEFzc2VtYmxlcjo6WmVybywgQXNzZW1ibGVyOjpBZGRyZXNzKHF1YWxpZmll
ZE5hbWVJbXBsLCBRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbDo6bmFtZXNwYWNlTWVt
b3J5T2Zmc2V0KCkpKSk7Ci0gICAgICAgIG5hbWVEb2VzTm90TWF0Y2gubGluaygmbV9hc3NlbWJs
ZXIpOwotICAgIH0gZWxzZQotICAgICAgICBzdWNjZXNzQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVy
LmJyYW5jaFB0cihBc3NlbWJsZXI6OkVxdWFsLCBBc3NlbWJsZXI6OkFkZHJlc3MocXVhbGlmaWVk
TmFtZUltcGwsIFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBsOjpsb2NhbE5hbWVNZW1v
cnlPZmZzZXQoKSksIGxvY2FsTmFtZVRvTWF0Y2gpKTsKKyAgICAgICAgICAgIHN1Y2Nlc3NDYXNl
cy5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoUHRyKEFzc2VtYmxlcjo6RXF1YWwsIEFzc2VtYmxl
cjo6QWRkcmVzcyhxdWFsaWZpZWROYW1lSW1wbCwgUXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFt
ZUltcGw6OmxvY2FsTmFtZU1lbW9yeU9mZnNldCgpKSwgbG9jYWxOYW1lVG9NYXRjaCkpOworICAg
IH0KKworICAgIEFzc2VtYmxlcjo6TGFiZWwgbG9vcFJlRW50cnkobV9hc3NlbWJsZXIubGFiZWwo
KSk7CiAKICAgICAvLyBJZiB3ZSByZWFjaGVkIHRoZSBsYXN0IGVsZW1lbnQgLT4gZmFpbHVyZS4K
ICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5jaFN1YjMyKEFzc2VtYmxl
cjo6WmVybywgQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIGRlY0luZGV4UmVnaXN0ZXIpKTsK
QEAgLTExMjgsNyArMTE2Niw2OSBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJh
dGVFbGVtZW50QXR0cmlidXRlTWF0Y2hpbmcoQXNzZW1ibGVyOjpKdW1wTGlzdAogICAgIC8vIE90
aGVyd2lzZSBqdXN0IGxvb3Agb3Zlci4KICAgICBtX2Fzc2VtYmxlci5hZGRQdHIoQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoc2l6ZW9mKEF0dHJpYnV0ZSkpLCBjdXJyZW50QXR0cmlidXRlQWRkcmVz
cyk7CiAgICAgbV9hc3NlbWJsZXIuanVtcCgpLmxpbmtUbyhsb29wU3RhcnQsICZtX2Fzc2VtYmxl
cik7CisKICAgICBzdWNjZXNzQ2FzZXMubGluaygmbV9hc3NlbWJsZXIpOworCisgICAgLy8gV2Ug
bWFrZSB0aGUgYXNzdW1wdGlvbiB0aGF0IG5hbWUgbWF0Y2hpbmcgZmFpbHMgaW4gbW9zdCBjYXNl
IGFuZCB3ZSBrZWVwIHZhbHVlIG1hdGNoaW5nIG91dHNpZGUKKyAgICAvLyBvZiB0aGUgbG9vcC4g
V2UgcmUtZW50ZXIgdGhlIGxvb3AgaWYgbmVlZGVkLgorICAgIC8vIEZJWE1FOiBleGFjdCBjYXNl
IHNlbnNpdGl2ZSB2YWx1ZSBtYXRjaGluZyBpcyBzbyBzaW1wbGUgdGhhdCBpdCBzaG91bGQgYmUg
ZG9uZSBpbiB0aGUgbG9vcC4KKyAgICBBc3NlbWJsZXI6Okp1bXBMaXN0IGxvY2FsRmFpbHVyZUNh
c2VzOworICAgIGdlbmVyYXRlRWxlbWVudEF0dHJpYnV0ZVZhbHVlTWF0Y2hpbmcobG9jYWxGYWls
dXJlQ2FzZXMsIGN1cnJlbnRBdHRyaWJ1dGVBZGRyZXNzLCBhdHRyaWJ1dGVJbmZvKTsKKyAgICBs
b2NhbEZhaWx1cmVDYXNlcy5saW5rVG8obG9vcFJlRW50cnksICZtX2Fzc2VtYmxlcik7Cit9CisK
K3ZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVWYWx1
ZU1hdGNoaW5nKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgQXNzZW1ibGVyOjpS
ZWdpc3RlcklEIGN1cnJlbnRBdHRyaWJ1dGVBZGRyZXNzLCBjb25zdCBBdHRyaWJ1dGVNYXRjaGlu
Z0luZm8mIGF0dHJpYnV0ZUluZm8pCit7CisgICAgY29uc3QgQ1NTU2VsZWN0b3ImIGF0dHJpYnV0
ZVNlbGVjdG9yID0gYXR0cmlidXRlSW5mby5zZWxlY3RvcigpOworICAgIGlmIChhdHRyaWJ1dGVT
ZWxlY3Rvci5tX21hdGNoID09IENTU1NlbGVjdG9yOjpTZXQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZXhwZWN0ZWRWYWx1ZSA9IGF0dHJpYnV0ZVNlbGVjdG9y
LnZhbHVlKCk7CisgICAgQVNTRVJUKCFleHBlY3RlZFZhbHVlLmlzTnVsbCgpKTsKKworICAgIGlm
IChhdHRyaWJ1dGVTZWxlY3Rvci5tX21hdGNoID09IENTU1NlbGVjdG9yOjpFeGFjdCkKKyAgICAg
ICAgZ2VuZXJhdGVFbGVtZW50QXR0cmlidXRlVmFsdWVFeGFjdE1hdGNoaW5nKGZhaWx1cmVDYXNl
cywgY3VycmVudEF0dHJpYnV0ZUFkZHJlc3MsIGV4cGVjdGVkVmFsdWUsIGF0dHJpYnV0ZUluZm8u
Y2FuRGVmYXVsdFRvQ2FzZVNlbnNpdGl2ZVZhbHVlTWF0Y2goKSk7Cit9CisKK3N0YXRpYyBpbmxp
bmUgQXNzZW1ibGVyOjpKdW1wIHRlc3RJc0hUTUxDbGFzc09uRG9jdW1lbnQoQXNzZW1ibGVyOjpS
ZXN1bHRDb25kaXRpb24gY29uZGl0aW9uLCBBc3NlbWJsZXImIGFzc2VtYmxlciwgQXNzZW1ibGVy
OjpSZWdpc3RlcklEIGRvY3VtZW50QWRkcmVzcykKK3sKKyAgICByZXR1cm4gYXNzZW1ibGVyLmJy
YW5jaFRlc3QzMihjb25kaXRpb24sIEFzc2VtYmxlcjo6QWRkcmVzcyhkb2N1bWVudEFkZHJlc3Ms
IERvY3VtZW50Ojpkb2N1bWVudENsYXNzZXNNZW1vcnlPZmZzZXQoKSksIEFzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKERvY3VtZW50Ojppc0hUTUxEb2N1bWVudENsYXNzRmxhZygpKSk7Cit9CisKK3Zv
aWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZUV4
YWN0TWF0Y2hpbmcoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBBc3NlbWJsZXI6
OlJlZ2lzdGVySUQgY3VycmVudEF0dHJpYnV0ZUFkZHJlc3MsIGNvbnN0IEF0b21pY1N0cmluZyYg
ZXhwZWN0ZWRWYWx1ZSwgYm9vbCBjYW5EZWZhdWx0VG9DYXNlU2Vuc2l0aXZlVmFsdWVNYXRjaCkK
K3sKKyAgICBMb2NhbFJlZ2lzdGVyIGV4cGVjdGVkVmFsdWVSZWdpc3RlcihtX3JlZ2lzdGVyQWxs
b2NhdG9yKTsKKyAgICBtX2Fzc2VtYmxlci5tb3ZlKEFzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihl
eHBlY3RlZFZhbHVlLmltcGwoKSksIGV4cGVjdGVkVmFsdWVSZWdpc3Rlcik7CisKKyAgICBpZiAo
Y2FuRGVmYXVsdFRvQ2FzZVNlbnNpdGl2ZVZhbHVlTWF0Y2gpCisgICAgICAgIGZhaWx1cmVDYXNl
cy5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoUHRyKEFzc2VtYmxlcjo6Tm90RXF1YWwsIEFzc2Vt
Ymxlcjo6QWRkcmVzcyhjdXJyZW50QXR0cmlidXRlQWRkcmVzcywgQXR0cmlidXRlOjp2YWx1ZU1l
bW9yeU9mZnNldCgpKSwgZXhwZWN0ZWRWYWx1ZVJlZ2lzdGVyKSk7CisgICAgZWxzZSB7CisgICAg
ICAgIEFzc2VtYmxlcjo6SnVtcCBza2lwQ2FzZUluc2Vuc2l0aXZlQ29tcGFyaXNvbiA9IG1fYXNz
ZW1ibGVyLmJyYW5jaFB0cihBc3NlbWJsZXI6OkVxdWFsLCBBc3NlbWJsZXI6OkFkZHJlc3MoY3Vy
cmVudEF0dHJpYnV0ZUFkZHJlc3MsIEF0dHJpYnV0ZTo6dmFsdWVNZW1vcnlPZmZzZXQoKSksIGV4
cGVjdGVkVmFsdWVSZWdpc3Rlcik7CisKKyAgICAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgYW4g
SFRNTCBlbGVtZW50LCBpbiBhIEhUTUwgZGNvdW1lbnQgKG5vdCBpbmNsdWRpbmcgWEhUTUwpLCB2
YWx1ZSBtYXRjaGluZyBpcyBjYXNlIGluc2Vuc2l0aXZlLgorICAgICAgICAvLyBUYWtpbmcgdGhl
IGNvbnRyYXBvc2l0aXZlLCBpZiB3ZSBmaW5kIHRoZSBlbGVtZW50IGlzIG5vdCBIVE1MIG9yIGlz
IG5vdCBpbiBhIEhUTUwgZG9jdW1lbnQsIHRoZSBjb25kaXRpb24gYWJvdmUKKyAgICAgICAgLy8g
c291bGQgYmUgc3VmZmljaWVudCBhbmQgd2UgY2FuIGZhaWwgZWFybHkuCisgICAgICAgIGZhaWx1
cmVDYXNlcy5hcHBlbmQodGVzdElzSFRNTEZsYWdPbk5vZGUoQXNzZW1ibGVyOjpaZXJvLCBtX2Fz
c2VtYmxlciwgZWxlbWVudEFkZHJlc3NSZWdpc3RlcikpOworCisgICAgICAgIHsKKyAgICAgICAg
ICAgIExvY2FsUmVnaXN0ZXIgc2NyYXRjaFJlZ2lzdGVyKG1fcmVnaXN0ZXJBbGxvY2F0b3IpOwor
ICAgICAgICAgICAgLy8gc2NyYXRjaFJlZ2lzdGVyID0gcG9pbnRlciB0byB0cmVlU2NvcGUuCisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5sb2FkUHRyKEFzc2VtYmxlcjo6QWRkcmVzcyhlbGVtZW50
QWRkcmVzc1JlZ2lzdGVyLCBOb2RlOjp0cmVlU2NvcGVNZW1vcnlPZmZzZXQoKSksIHNjcmF0Y2hS
ZWdpc3Rlcik7CisgICAgICAgICAgICAvLyBzY3JhdGNoUmVnaXN0ZXIgPSBwb2ludGVyIHRvIGRv
Y3VtZW50LgorICAgICAgICAgICAgbV9hc3NlbWJsZXIubG9hZFB0cihBc3NlbWJsZXI6OkFkZHJl
c3Moc2NyYXRjaFJlZ2lzdGVyLCBUcmVlU2NvcGU6OmRvY3VtZW50U2NvcGVNZW1vcnlPZmZzZXQo
KSksIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKHRl
c3RJc0hUTUxDbGFzc09uRG9jdW1lbnQoQXNzZW1ibGVyOjpaZXJvLCBtX2Fzc2VtYmxlciwgc2Ny
YXRjaFJlZ2lzdGVyKSk7CisgICAgICAgIH0KKworICAgICAgICBMb2NhbFJlZ2lzdGVyIHZhbHVl
U3RyaW5nSW1wbChtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9h
ZFB0cihBc3NlbWJsZXI6OkFkZHJlc3MoY3VycmVudEF0dHJpYnV0ZUFkZHJlc3MsIEF0dHJpYnV0
ZTo6dmFsdWVNZW1vcnlPZmZzZXQoKSksIHZhbHVlU3RyaW5nSW1wbCk7CisKKyAgICAgICAgRnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uQ2FsbChtX2Fzc2VtYmxlciwgbV9yZWdpc3RlckFsbG9jYXRvciwg
bV9zdGFja0FsbG9jYXRvciwgbV9mdW5jdGlvbkNhbGxzKTsKKyAgICAgICAgZnVuY3Rpb25DYWxs
LnNldEZ1bmN0aW9uQWRkcmVzcyhXVEY6OmVxdWFsSWdub3JpbmdDYXNlTm9uTnVsbCk7CisgICAg
ICAgIGZ1bmN0aW9uQ2FsbC5zZXRUd29Bcmd1bWVudHMoZXhwZWN0ZWRWYWx1ZVJlZ2lzdGVyLCB2
YWx1ZVN0cmluZ0ltcGwpOworICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGZ1bmN0aW9uQ2Fs
bC5jYWxsQW5kQnJhbmNoT25Db25kaXRpb24oQXNzZW1ibGVyOjpaZXJvKSk7CisKKyAgICAgICAg
c2tpcENhc2VJbnNlbnNpdGl2ZUNvbXBhcmlzb24ubGluaygmbV9hc3NlbWJsZXIpOworICAgIH0K
IH0KIAogdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudEZ1bmN0aW9u
Q2FsbFRlc3QoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBKU0M6OkZ1bmN0aW9u
UHRyIHRlc3RGdW5jdGlvbikKQEAgLTExMzYsNyArMTIzNiw3IEBAIHZvaWQgU2VsZWN0b3JDb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRGdW5jdGlvbkNhbGxUZXN0KEFzc2VtYmxlcjo6SnVt
cExpc3QmCiAgICAgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGVsZW1lbnRBZGRyZXNzID0gZWxlbWVu
dEFkZHJlc3NSZWdpc3RlcjsKICAgICBGdW5jdGlvbkNhbGwgZnVuY3Rpb25DYWxsKG1fYXNzZW1i
bGVyLCBtX3JlZ2lzdGVyQWxsb2NhdG9yLCBtX3N0YWNrQWxsb2NhdG9yLCBtX2Z1bmN0aW9uQ2Fs
bHMpOwogICAgIGZ1bmN0aW9uQ2FsbC5zZXRGdW5jdGlvbkFkZHJlc3ModGVzdEZ1bmN0aW9uKTsK
LSAgICBmdW5jdGlvbkNhbGwuc2V0Rmlyc3RBcmd1bWVudChlbGVtZW50QWRkcmVzcyk7CisgICAg
ZnVuY3Rpb25DYWxsLnNldE9uZUFyZ3VtZW50KGVsZW1lbnRBZGRyZXNzKTsKICAgICBmYWlsdXJl
Q2FzZXMuYXBwZW5kKGZ1bmN0aW9uQ2FsbC5jYWxsQW5kQnJhbmNoT25Db25kaXRpb24oQXNzZW1i
bGVyOjpaZXJvKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyaWJ1
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyaWJ1dGUuaAppbmRleCA0Y2E0ODljN2QzM2Y0
ZGNlOWVkZDE5Y2NjYTY3MGJkY2IyMWRkMWJkLi44Njg3OGYzYzk2Y2ZkZDljYTQ4MDdjNTU2YmMz
NmI0OWQ2NzZlM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0cmlidXRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHJpYnV0ZS5oCkBAIC00NCw2ICs0NCw3IEBAIHB1
YmxpYzoKICAgICAvLyBhcyB0aGUgQXR0cmlidXRlIHN0YXlzIGluIHBsYWNlLiBGb3IgZXhhbXBs
ZSwgY2FsbGluZyBhIGZ1bmN0aW9uIHRoYXQgbXV0YXRlcwogICAgIC8vIGFuIEVsZW1lbnQncyBp
bnRlcm5hbCBhdHRyaWJ1dGUgc3RvcmFnZSBtYXkgaW52YWxpZGF0ZSB0aGVtLgogICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgc3Rh
dGljIHB0cmRpZmZfdCB2YWx1ZU1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihBdHRyaWJ1dGUsIG1fdmFsdWUpOyB9CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgo
KSBjb25zdCB7IHJldHVybiBtX25hbWUucHJlZml4KCk7IH0KICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGxvY2FsTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZS5sb2NhbE5hbWUoKTsgfQogICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV9uYW1l
Lm5hbWVzcGFjZVVSSSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDNhYzg1YzRkYWI1NjAy
ZmI1NGU0NDcwZDQ3YmNiN2EyMDFhYmMwM2QuLmMyNmYyODA4MDFjN2EwMzljMjczMDA2NzM0MGIx
Zjg4M2Y5YWU3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC01MTIsNiArNTEyLDkgQEAgcHVi
bGljOgogICAgIGJvb2wgaGFzU1ZHUm9vdE5vZGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
aXNGcmFtZVNldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBzdGF0aWMgcHRyZGlm
Zl90IGRvY3VtZW50Q2xhc3Nlc01lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihEb2N1bWVudCwgbV9kb2N1bWVudENsYXNzZXMpOyB9CisgICAgc3RhdGljIHVpbnQzMl90IGlz
SFRNTERvY3VtZW50Q2xhc3NGbGFnKCkgeyByZXR1cm4gSFRNTERvY3VtZW50Q2xhc3M7IH0KKwog
ICAgIGJvb2wgaXNTcmNkb2NEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTcmNkb2NEb2N1
bWVudDsgfQogCiAgICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcklmRXhpc3RzKCkgY29u
c3QgeyByZXR1cm4gbV9zdHlsZVJlc29sdmVyLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA5ZGY4
ZTgzNWI2MzYxYjQwMTgwYmE5Y2ZjOWY5ODJkM2FhZGY5YWNhLi40ZWI5NmUyNjZmMjNlNzFmOGM5
ZDBmZmFiZTc4NGNhNjE4ZWViNDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTM5MCw2ICszOTAsNyBAQCBw
dWJsaWM6CiAgICAgICAgIEFTU0VSVChtX3RyZWVTY29wZSk7CiAgICAgICAgIHJldHVybiAqbV90
cmVlU2NvcGU7CiAgICAgfQorICAgIHN0YXRpYyBwdHJkaWZmX3QgdHJlZVNjb3BlTWVtb3J5T2Zm
c2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE5vZGUsIG1fdHJlZVNjb3BlKTsgfQogCiAg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgbm9kZSBpcyBhc3NvY2lhdGVkIHdpdGggYSBkb2N1
bWVudCBhbmQgaXMgaW4gaXRzIGFzc29jaWF0ZWQgZG9jdW1lbnQncwogICAgIC8vIG5vZGUgdHJl
ZSwgZmFsc2Ugb3RoZXJ3aXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVT
Y29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCmluZGV4IDBjMjQwYjkxNjVk
N2I4YjQxZGNlM2ZmYWQ0NTkyYTllNWE3MzZiNzIuLmRlYjc4ZTBlYjQzZDU2MjE4OGRiYTBmMDUx
YzBiYjNjNzE1NTA5MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKQEAgLTY4LDYgKzY4LDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmVtb3ZlRWxlbWVudEJ5TmFtZShjb25zdCBBdG9taWNTdHJpbmdJ
bXBsJiwgRWxlbWVudCYpOwogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50U2NvcGUoKSBjb25zdCB7
IHJldHVybiAqbV9kb2N1bWVudFNjb3BlOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBkb2N1bWVu
dFNjb3BlTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFRyZWVTY29wZSwg
bV9kb2N1bWVudFNjb3BlKTsgfQogCiAgICAgTm9kZSogYW5jZXN0b3JJblRoaXNTY29wZShOb2Rl
KikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCAzYjJkOTY1MGEwZmJlY2E1NmYyNjI0ZGYwOGJkODQyZGFjNjM0
YmY5Li5hMjZiZGFmNWExNzcyMmM5MTkwZGI4MjYzZjY0ZDUyM2Q3Mjc0YjU0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTQtMDItMjMgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIENvbXBpbGUgYXR0cmlidXRlIHZhbHVlIG1hdGNoaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkyMjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3Qvc2VsZWN0
b3JzL2Nhc2UtaW5zZW5zaXRpdmUtdmFsdWUtbWF0Y2hpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L3NlbGVjdG9ycy9jYXNlLWluc2Vuc2l0aXZlLXZhbHVlLW1hdGNoaW5n
Lmh0bWw6IEFkZGVkLgorICAgICAgICBUZXN0IHRoZSB2YXJpb3VzIGNhc2VzIHRoYXQgcmVxdWly
ZSBtb3JlIHJlZ2lzdGVyIHRoYW4gdGhlIGNvbW1vbiBjYXNlLgorCisgICAgICAgIFRoZSB2YWx1
ZXMgbWF0Y2ggRmlyZWZveCBiZWhhdmlvci4KKwogMjAxNC0wMi0xOCAgQnJlbnQgRnVsZ2hhbSAg
PGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBXaW5kb3dzIGdhcmRlbmluZzogQWRkIGFu
bm90YXRpb25zIGZvciBEZWJ1ZyBjYXNlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9z
ZWxlY3RvcnMvY2FzZS1pbnNlbnNpdGl2ZS12YWx1ZS1tYXRjaGluZy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9jYXNlLWluc2Vuc2l0aXZlLXZhbHVlLW1hdGNoaW5n
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTA2M2U3ODk2ZWZjNGZlZjIzYzQzYjVhMmM0MjVi
ZjQ5MTNhNTg1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMv
Y2FzZS1pbnNlbnNpdGl2ZS12YWx1ZS1tYXRjaGluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwz
NCBAQAorU29tZSBIVE1MIGF0dHJpYnV0ZSByZXF1aXJlIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFy
aXNvbiB3aGVuIG1hdGNoaW5nIHRoZWlyIHZhbHVlLiBUZXN0IHRob3NlIGNhc2VzIHdpdGggYW5k
IHdpdGhvdXQgYmFja3RyYWNraW5nLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
Tm8gYmFja3RyYWNraW5nLCBzaW1wbGUgbWF0Y2hlcyBwZXIgbGV2ZWwuCitQQVNTIGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoIltjaGVja2VkPWZhbHNlXSIpLmxlbmd0aCBpcyAxCitQQVNTIGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltjaGVja2VkPWZhbHNlXSIpWzBdLmlkIGlzICJ0YXJn
ZXQxIgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltj
aGVja2VkPWZhbHNlXSIpWzBdKS5iYWNrZ3JvdW5kQ29sb3IgaXMgInJnYigyNTUsIDAsIDApIgor
UEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbbGFuZz1lbl0+W2NoZWNrZWQ9ZmFsc2Vd
IikubGVuZ3RoIGlzIDEKK1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2xhbmc9ZW5d
PltjaGVja2VkPWZhbHNlXSIpWzBdLmlkIGlzICJ0YXJnZXQxIgorUEFTUyBnZXRDb21wdXRlZFN0
eWxlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltsYW5nPWVuXT5bY2hlY2tlZD1mYWxzZV0i
KVswXSkudGV4dEluZGVudCBpcyAiMjFweCIKK1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFs
bCgiW2NsZWFyPXllc10+W2xhbmc9ZW5dPltjaGVja2VkPWZhbHNlXSIpLmxlbmd0aCBpcyAxCitQ
QVNTIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltjbGVhcj15ZXNdPltsYW5nPWVuXT5bY2hl
Y2tlZD1mYWxzZV0iKVswXS5pZCBpcyAidGFyZ2V0MSIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShk
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbY2xlYXI9eWVzXT5bbGFuZz1lbl0+W2NoZWNrZWQ9
ZmFsc2VdIilbMF0pLmZvbnRGYW1pbHkgaXMgInVuY29tb24iCitObyBiYWNrdHJhY2tpbmcsIG11
bHRpcGxlIG1hdGNoZXMgcGVyIGxldmVsLgorUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KCJbZGlyPXdlYmtpdF1bZGlzYWJsZWQ9bm9dPlt0eXBlPWF3ZXNvbWVdW2NoYXJzZXQ9bGF0aW4x
XT5bbGFuZz1mcl1bY2hlY2tlZD1mYWxzZV0iKS5sZW5ndGggaXMgMQorUEFTUyBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKCJbZGlyPXdlYmtpdF1bZGlzYWJsZWQ9bm9dPlt0eXBlPWF3ZXNvbWVd
W2NoYXJzZXQ9bGF0aW4xXT5bbGFuZz1mcl1bY2hlY2tlZD1mYWxzZV0iKVswXS5pZCBpcyAidGFy
Z2V0MSIKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJb
ZGlyPXdlYmtpdF1bZGlzYWJsZWQ9bm9dPlt0eXBlPWF3ZXNvbWVdW2NoYXJzZXQ9bGF0aW4xXT5b
bGFuZz1mcl1bY2hlY2tlZD1mYWxzZV0iKVswXSkub3BhY2l0eSBpcyAiMCIKK1BBU1MgZG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbCgiW2Rpcj13ZWJraXRdW2Rpc2FibGVkPW5vXVtjbGVhcj15ZXNd
Plt0eXBlPWF3ZXNvbWVdW2NoYXJzZXQ9bGF0aW4xXVtsYW5nPWVuXT5bbGFuZz1mcl1bY2hlY2tl
ZD1mYWxzZV0iKS5sZW5ndGggaXMgMQorUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJb
ZGlyPXdlYmtpdF1bZGlzYWJsZWQ9bm9dW2NsZWFyPXllc10+W3R5cGU9YXdlc29tZV1bY2hhcnNl
dD1sYXRpbjFdW2xhbmc9ZW5dPltsYW5nPWZyXVtjaGVja2VkPWZhbHNlXSIpWzBdLmlkIGlzICJ0
YXJnZXQxIgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
IltkaXI9d2Via2l0XVtkaXNhYmxlZD1ub11bY2xlYXI9eWVzXT5bdHlwZT1hd2Vzb21lXVtjaGFy
c2V0PWxhdGluMV1bbGFuZz1lbl0+W2xhbmc9ZnJdW2NoZWNrZWQ9ZmFsc2VdIilbMF0pLmNvbG9y
IGlzICJyZ2IoMCwgMTI4LCAwKSIKK0JhY2t0cmFja2luZywgc2luZ2xlIG1hdGNoZXMgcGVyIGxl
dmVsLgorUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGlyPXdlYmtpdF0+W2NoYXJz
ZXQ9bGF0aW4xXT5bc2Nyb2xsaW5nPWZhc3RdIHVsPmxpIikubGVuZ3RoIGlzIDEKK1BBU1MgZG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2Rpcj13ZWJraXRdPltjaGFyc2V0PWxhdGluMV0+W3Nj
cm9sbGluZz1mYXN0XSB1bD5saSIpWzBdLmlkIGlzICJ0YXJnZXQyIgorUEFTUyBnZXRDb21wdXRl
ZFN0eWxlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkaXI9d2Via2l0XT5bY2hhcnNldD1s
YXRpbjFdPltzY3JvbGxpbmc9ZmFzdF0gdWw+bGkiKVswXSkuYmFja2dyb3VuZENvbG9yIGlzICJy
Z2IoMCwgMCwgMjU1KSIKK0JhY2t0cmFja2luZywgbXVsdGlwbGUgbWF0Y2hlcyBwZXIgbGV2ZWwu
CitQQVNTIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkaXI9d2Via2l0XVtkaXNhYmxlZD15
ZXNdW2NsZWFyPW5vXT5bdHlwZT1hd2Vzb21lXVtjaGFyc2V0PWxhdGluMV1bbGFuZz1lbl0+W2xh
bmc9ZnJdW2NoZWNrZWQ9bWF5YmVdW3Njcm9sbGluZz1mYXN0XSB1bD5saSIpLmxlbmd0aCBpcyAx
CitQQVNTIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkaXI9d2Via2l0XVtkaXNhYmxlZD15
ZXNdW2NsZWFyPW5vXT5bdHlwZT1hd2Vzb21lXVtjaGFyc2V0PWxhdGluMV1bbGFuZz1lbl0+W2xh
bmc9ZnJdW2NoZWNrZWQ9bWF5YmVdW3Njcm9sbGluZz1mYXN0XSB1bD5saSIpWzBdLmlkIGlzICJ0
YXJnZXQyIgorUEFTUyBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
IltkaXI9d2Via2l0XVtkaXNhYmxlZD15ZXNdW2NsZWFyPW5vXT5bdHlwZT1hd2Vzb21lXVtjaGFy
c2V0PWxhdGluMV1bbGFuZz1lbl0+W2xhbmc9ZnJdW2NoZWNrZWQ9bWF5YmVdW3Njcm9sbGluZz1m
YXN0XSB1bD5saSIpWzBdKS5mb250RmFtaWx5IGlzICJoaXBzdGVyIgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3Qvc2VsZWN0b3JzL2Nhc2UtaW5zZW5zaXRpdmUtdmFsdWUtbWF0Y2hpbmcuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL2Nhc2UtaW5zZW5zaXRpdmUtdmFsdWUtbWF0Y2hp
bmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jMzJhMDUyMmRhMjY3YTBkM2EwNDYyMzQwOTFhMzMwMTliYTgy
MTlhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvY2FzZS1p
bnNlbnNpdGl2ZS12YWx1ZS1tYXRjaGluZy5odG1sCkBAIC0wLDAgKzEsMTMwIEBACis8IWRvY3R5
cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK1tjaGVja2VkPWZhbHNlXSB7CisgICAg
YmFja2dyb3VuZC1jb2xvcjogcmVkOworfQorCitbbGFuZz1lbl0+W2NoZWNrZWQ9ZmFsc2VdIHsK
KyAgICB0ZXh0LWluZGVudDogMjFweDsKK30KKworW2NsZWFyPXllc10+W2xhbmc9ZW5dPltjaGVj
a2VkPWZhbHNlXSB7CisgICAgZm9udC1mYW1pbHk6IHVuY29tb247Cit9CisKK1tkaXI9d2Via2l0
XVtkaXNhYmxlZD1ub10+W3R5cGU9YXdlc29tZV1bY2hhcnNldD1sYXRpbjFdPltsYW5nPWZyXVtj
aGVja2VkPWZhbHNlXSB7CisgICAgb3BhY2l0eTogMDsKK30KKworW2Rpcj13ZWJraXRdW2Rpc2Fi
bGVkPW5vXVtjbGVhcj15ZXNdPlt0eXBlPWF3ZXNvbWVdW2NoYXJzZXQ9bGF0aW4xXVtsYW5nPWVu
XT5bbGFuZz1mcl1bY2hlY2tlZD1mYWxzZV0geworICAgIGNvbG9yOiBncmVlbjsKK30KKworW2Rp
cj13ZWJraXRdPltjaGFyc2V0PWxhdGluMV0+W3Njcm9sbGluZz1mYXN0XSB1bD5saSB7CisgICAg
YmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKK30KKworW2Rpcj13ZWJraXRdW2Rpc2FibGVkPXllc11b
Y2xlYXI9bm9dPlt0eXBlPWF3ZXNvbWVdW2NoYXJzZXQ9bGF0aW4xXVtsYW5nPWVuXT5bbGFuZz1m
cl1bY2hlY2tlZD1tYXliZV1bc2Nyb2xsaW5nPWZhc3RdIHVsPmxpIHsKKyAgICBmb250LWZhbWls
eTogaGlwc3RlcjsKK30KKworPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBzdHlsZT0i
ZGlzcGxheTpub25lIj4KKyAgICA8IS0tIE5vIGJhY2t0cmFja2luZyB0cmVlIC0tPgorICAgIDxk
aXYgY2xlYXI9WWVzIGRpcj1XZWJLaXQgZGlzYWJsZWQ9Tm8+CisgICAgICAgIDxkaXYgY2hhcnNl
dD1MYXRpbjEgbGFuZz1FbiB0eXBlPUF3ZXNvbWU+CisgICAgICAgICAgICA8ZGl2IGxhbmc9RnIg
Y2hlY2tlZD1GYWxzZSBpZD10YXJnZXQxPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwv
ZGl2PgorICAgIDwvZGl2PgorICAgIDwhLS0gQmFja3RyYWNraW5nIHRyZWUgLS0+CisgICAgPGRp
diBjbGVhcj1ObyBkaXI9V2ViS2l0IGRpc2FibGVkPVllcz4KKyAgICAgICAgPGRpdiBjaGFyc2V0
PUxhdGluMSBsYW5nPUVuIHR5cGU9QXdlc29tZT4KKyAgICAgICAgICAgIDxkaXYgbGFuZz1GciBj
aGVja2VkPU1heWJlIHNjcm9sbGluZz1GYXN0PgorCisgICAgICAgICAgICAgICAgPCEtLSBGaXJz
dCBiYWNrdHJhY2tpbmcgbGV2ZWwsIGRvZXMgbm90IG1hdGNoIHRoZSB0b3AgbGV2ZWwgW2Rpdj13
ZWJraXRdLS0+CisgICAgICAgICAgICAgICAgPGRpdiBjbGVhcj1ObyBkaXI9V2ViS2l0MiBkaXNh
YmxlZD1ZZXM+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgY2hhcnNldD1MYXRpbjEgbGFuZz1F
biB0eXBlPUF3ZXNvbWU+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGxhbmc9RnIgY2hl
Y2tlZD1NYXliZSBzY3JvbGxpbmc9RmFzdD4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwhLS0gRmFpbHMgb24gdGhlIHNlY29uZCBsZXZlbCwgb24gdGhlIGNoYXJzZXQtLT4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsZWFyPU5vIGRpcj1XZWJLaXQgZGlzYWJsZWQ9
WWVzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNoYXJzZXQ9Tm9uZSBs
YW5nPUVuIHR5cGU9QXdlc29tZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgbGFuZz1GciBjaGVja2VkPU1heWJlIHNjcm9sbGluZz1GYXN0PgorCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBGYWlscyBvbiB0aGUgdGhpcmQgbGV2
ZWwsIG9uIHRoZSBzY3JvbGxpbmcgYXR0cmlidXRlLiAtLT4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsZWFyPU5vIGRpcj1XZWJLaXQgZGlzYWJsZWQ9WWVz
PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNoYXJz
ZXQ9Tm9uZSBsYW5nPUVuIHR5cGU9QXdlc29tZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbGFuZz1GciBjaGVja2VkPU1heWJlIHNjcm9sbGlu
Zz1TbG93PgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPCEtLSBGaW5hbHksIHRoZSB0YXJnZXQuIENvbmdyYXR1bGF0aW9uIGlmIHlvdSByZWFk
IHRoaXMgZmFyIDopIC0tPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGxpIGlkPXRhcmdldDI+PC9saT4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgorCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPCEtLSBFbmQgb2YgdGhpcmQgbGV2ZWwgZmFpbHVyZS4gLS0+CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBFbmQgb2Ygc2Vjb25kIGxldmVsIGZhaWx1
cmUgLS0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPCEtLSBF
bmQgb2YgZmlyc3QgbGV2ZWwgZmFpbHVyZSAtLT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCdTb21lIEhUTUwgYXR0cmlidXRlIHJlcXVpcmUgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJp
c29uIHdoZW4gbWF0Y2hpbmcgdGhlaXIgdmFsdWUuIFRlc3QgdGhvc2UgY2FzZXMgd2l0aCBhbmQg
d2l0aG91dCBiYWNrdHJhY2tpbmcuJyk7CisKK2RlYnVnKCJObyBiYWNrdHJhY2tpbmcsIHNpbXBs
ZSBtYXRjaGVzIHBlciBsZXZlbC4iKQorLy8gT25lIGxldmVsLgorc2hvdWxkQmUoJ2RvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoIltjaGVja2VkPWZhbHNlXSIpLmxlbmd0aCcsICcxJyk7CitzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltjaGVja2VkPWZh
bHNlXSIpWzBdLmlkJywgJ3RhcmdldDEnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZ2V0Q29t
cHV0ZWRTdHlsZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbY2hlY2tlZD1mYWxzZV0iKVsw
XSkuYmFja2dyb3VuZENvbG9yJywgJ3JnYigyNTUsIDAsIDApJyk7CisKKy8vIFR3byBsZXZlbC4K
K3Nob3VsZEJlKCdkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbbGFuZz1lbl0+W2NoZWNrZWQ9
ZmFsc2VdIikubGVuZ3RoJywgJzEnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQu
cXVlcnlTZWxlY3RvckFsbCgiW2xhbmc9ZW5dPltjaGVja2VkPWZhbHNlXSIpWzBdLmlkJywgJ3Rh
cmdldDEnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yQWxsKCJbbGFuZz1lbl0+W2NoZWNrZWQ9ZmFsc2VdIilbMF0pLnRleHRJ
bmRlbnQnLCAnMjFweCcpOworCisvLyBUaHJlZSBsZXZlbC4KK3Nob3VsZEJlKCdkb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKCJbY2xlYXI9eWVzXT5bbGFuZz1lbl0+W2NoZWNrZWQ9ZmFsc2VdIiku
bGVuZ3RoJywgJzEnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQucXVlcnlTZWxl
Y3RvckFsbCgiW2NsZWFyPXllc10+W2xhbmc9ZW5dPltjaGVja2VkPWZhbHNlXSIpWzBdLmlkJywg
J3RhcmdldDEnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZ2V0Q29tcHV0ZWRTdHlsZShkb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbY2xlYXI9eWVzXT5bbGFuZz1lbl0+W2NoZWNrZWQ9ZmFs
c2VdIilbMF0pLmZvbnRGYW1pbHknLCAndW5jb21vbicpOworCitkZWJ1ZygiTm8gYmFja3RyYWNr
aW5nLCBtdWx0aXBsZSBtYXRjaGVzIHBlciBsZXZlbC4iKTsKKy8vIFRocmVlIGxldmVsLCAyIG1h
dGNoZXMgcGVyIGxldmVsLgorc2hvdWxkQmUoJ2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltk
aXI9d2Via2l0XVtkaXNhYmxlZD1ub10+W3R5cGU9YXdlc29tZV1bY2hhcnNldD1sYXRpbjFdPlts
YW5nPWZyXVtjaGVja2VkPWZhbHNlXSIpLmxlbmd0aCcsICcxJyk7CitzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkaXI9d2Via2l0XVtkaXNhYmxlZD1u
b10+W3R5cGU9YXdlc29tZV1bY2hhcnNldD1sYXRpbjFdPltsYW5nPWZyXVtjaGVja2VkPWZhbHNl
XSIpWzBdLmlkJywgJ3RhcmdldDEnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZ2V0Q29tcHV0
ZWRTdHlsZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGlyPXdlYmtpdF1bZGlzYWJsZWQ9
bm9dPlt0eXBlPWF3ZXNvbWVdW2NoYXJzZXQ9bGF0aW4xXT5bbGFuZz1mcl1bY2hlY2tlZD1mYWxz
ZV0iKVswXSkub3BhY2l0eScsICcwJyk7CisKKy8vIFRocmVlIGxldmVsLCAzIG1hdGNoZXMgcGVy
IGxldmVsLgorc2hvdWxkQmUoJ2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkaXI9d2Via2l0
XVtkaXNhYmxlZD1ub11bY2xlYXI9eWVzXT5bdHlwZT1hd2Vzb21lXVtjaGFyc2V0PWxhdGluMV1b
bGFuZz1lbl0+W2xhbmc9ZnJdW2NoZWNrZWQ9ZmFsc2VdIikubGVuZ3RoJywgJzEnKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2Rpcj13ZWJraXRd
W2Rpc2FibGVkPW5vXVtjbGVhcj15ZXNdPlt0eXBlPWF3ZXNvbWVdW2NoYXJzZXQ9bGF0aW4xXVts
YW5nPWVuXT5bbGFuZz1mcl1bY2hlY2tlZD1mYWxzZV0iKVswXS5pZCcsICd0YXJnZXQxJyk7Citz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2dldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQucXVlcnlTZWxl
Y3RvckFsbCgiW2Rpcj13ZWJraXRdW2Rpc2FibGVkPW5vXVtjbGVhcj15ZXNdPlt0eXBlPWF3ZXNv
bWVdW2NoYXJzZXQ9bGF0aW4xXVtsYW5nPWVuXT5bbGFuZz1mcl1bY2hlY2tlZD1mYWxzZV0iKVsw
XSkuY29sb3InLCAncmdiKDAsIDEyOCwgMCknKTsKKworZGVidWcoIkJhY2t0cmFja2luZywgc2lu
Z2xlIG1hdGNoZXMgcGVyIGxldmVsLiIpOworLy8gQSBzaW5nbGUgc2VxdWVuY2Ugb2YgYmFja3Ry
YWNraW5nLCAzIGxldmVsIHRvIGZvcmNlIG9uZSBzbG93LXBhdGggYmFja3RyYWNraW5nLgorc2hv
dWxkQmUoJ2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkaXI9d2Via2l0XT5bY2hhcnNldD1s
YXRpbjFdPltzY3JvbGxpbmc9ZmFzdF0gdWw+bGkiKS5sZW5ndGgnLCAnMScpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGlyPXdlYmtpdF0+W2No
YXJzZXQ9bGF0aW4xXT5bc2Nyb2xsaW5nPWZhc3RdIHVsPmxpIilbMF0uaWQnLCAndGFyZ2V0Micp
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3JBbGwoIltkaXI9d2Via2l0XT5bY2hhcnNldD1sYXRpbjFdPltzY3JvbGxpbmc9ZmFz
dF0gdWw+bGkiKVswXSkuYmFja2dyb3VuZENvbG9yJywgJ3JnYigwLCAwLCAyNTUpJyk7CisKK2Rl
YnVnKCJCYWNrdHJhY2tpbmcsIG11bHRpcGxlIG1hdGNoZXMgcGVyIGxldmVsLiIpOworLy8gTXVs
dGlwbGUgbWF0Y2hlcyBwZXIgbGV2ZWwgdG8gbWFrZSB0aGUgYXR0cmlidXRlIG1hdGNoIGxvb3Ag
bW9yZSBjb21wbGV4Lgorc2hvdWxkQmUoJ2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkaXI9
d2Via2l0XVtkaXNhYmxlZD15ZXNdW2NsZWFyPW5vXT5bdHlwZT1hd2Vzb21lXVtjaGFyc2V0PWxh
dGluMV1bbGFuZz1lbl0+W2xhbmc9ZnJdW2NoZWNrZWQ9bWF5YmVdW3Njcm9sbGluZz1mYXN0XSB1
bD5saSIpLmxlbmd0aCcsICcxJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoIltkaXI9d2Via2l0XVtkaXNhYmxlZD15ZXNdW2NsZWFyPW5vXT5bdHlw
ZT1hd2Vzb21lXVtjaGFyc2V0PWxhdGluMV1bbGFuZz1lbl0+W2xhbmc9ZnJdW2NoZWNrZWQ9bWF5
YmVdW3Njcm9sbGluZz1mYXN0XSB1bD5saSIpWzBdLmlkJywgJ3RhcmdldDInKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygnZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KCJbZGlyPXdlYmtpdF1bZGlzYWJsZWQ9eWVzXVtjbGVhcj1ub10+W3R5cGU9YXdlc29tZV1bY2hh
cnNldD1sYXRpbjFdW2xhbmc9ZW5dPltsYW5nPWZyXVtjaGVja2VkPW1heWJlXVtzY3JvbGxpbmc9
ZmFzdF0gdWw+bGkiKVswXSkuZm9udEZhbWlseScsICdoaXBzdGVyJyk7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
aHRtbD4K
</data>
<flag name="review"
          id="249093"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>