<?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>89754</bug_id>
          
          <creation_ts>2012-06-22 04:38:08 -0700</creation_ts>
          <short_desc>Web Inspector: add external resources size to the native memory diagram</short_desc>
          <delta_ts>2012-06-25 02:27:08 -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 (Deprecated)</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>87262</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>abarth</cc>
    
    <cc>alph</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>philn</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>655361</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-22 04:38:08 -0700</bug_when>
    <thetext>Some javascript strings and arrays store their data in C++ heap. We should plot them on the diagram.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655365</commentid>
    <comment_count>1</comment_count>
      <attachid>148998</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-22 04:51:22 -0700</bug_when>
    <thetext>Created attachment 148998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655367</commentid>
    <comment_count>2</comment_count>
      <attachid>148998</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-22 05:02:12 -0700</bug_when>
    <thetext>Comment on attachment 148998
Patch

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

&gt; Source/WebCore/inspector/DOMWrapperVisitor.h:46
&gt; +    virtual void visitNode(Node*) { }
&gt; +    virtual void visitJSExternalString(WTF::StringImpl*) { }
&gt; +    virtual void visitJSExternalArray(WTF::ArrayBufferView*) { }
&gt;  protected:

I&apos;d expect to see three abstract classes DOMNodeVisitor, JSExternalStringVisitor etc and the single abstract visit method in each with corresponding param.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655399</commentid>
    <comment_count>3</comment_count>
      <attachid>149011</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-22 06:06:54 -0700</bug_when>
    <thetext>Created attachment 149011
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655400</commentid>
    <comment_count>4</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-22 06:07:40 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 148998 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148998&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/DOMWrapperVisitor.h:46
&gt; &gt; +    virtual void visitNode(Node*) { }
&gt; &gt; +    virtual void visitJSExternalString(WTF::StringImpl*) { }
&gt; &gt; +    virtual void visitJSExternalArray(WTF::ArrayBufferView*) { }
&gt; &gt;  protected:
&gt; 
&gt; I&apos;d expect to see three abstract classes DOMNodeVisitor, JSExternalStringVisitor etc and the single abstract visit method in each with corresponding param.

Done. Renamed the file to BindingVisitors.h and split the class into three classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655406</commentid>
    <comment_count>5</comment_count>
      <attachid>149011</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-22 06:14:12 -0700</bug_when>
    <thetext>Comment on attachment 149011
Patch

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

&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:334
&gt; +        if (m_arrayBuffers.add(buffer).isNewEntry)
&gt; +            m_externalArraySize += buffer-&gt;byteLength();
&gt; +    }
&gt; +    virtual void visitJSExternalString(StringImpl* string)
&gt; +    {
&gt; +        int size = stringSize(string);
&gt; +        m_jsExternalStringSize += size;

is it possible to meet with a single string twice? If yes then we have to have a hash set for strings too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655409</commentid>
    <comment_count>6</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-22 06:21:08 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 149011 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=149011&amp;action=review
&gt; 
&gt; is it possible to meet with a single string twice? If yes then we have to have a hash set for strings too.

It shouldn&apos;t be possible as we cache created external strings by StringImpl* key (see StringCache::v8ExternalStringSlow).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655416</commentid>
    <comment_count>7</comment_count>
      <attachid>149011</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-06-22 06:43:27 -0700</bug_when>
    <thetext>Comment on attachment 149011
Patch

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

nits. Otherwise looks good to me.

&gt; Source/WebCore/bindings/js/ScriptProfiler.h:77
&gt; +    static void visitJSDOMWrappers(NodeWrapperVisitor*) { }

nit: visitNodeWrappers

&gt; Source/WebCore/bindings/js/ScriptProfiler.h:79
&gt; +    static void visitExternalJSStrings(ExternalStringVisitor*) { }
&gt; +    static void visitExternalJSArrays(ExternalArrayVisitor*) { }

visitExternalStrings ?
visitExternalArrays ?

&gt; Source/WebCore/bindings/v8/ScriptProfiler.h:81
&gt; +    static void visitJSDOMWrappers(NodeWrapperVisitor*);

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655419</commentid>
    <comment_count>8</comment_count>
      <attachid>149017</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-22 06:53:50 -0700</bug_when>
    <thetext>Created attachment 149017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655420</commentid>
    <comment_count>9</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-22 06:54:12 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 149011 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=149011&amp;action=review
&gt; 
&gt; nits. Otherwise looks good to me.
&gt; 
&gt; &gt; Source/WebCore/bindings/js/ScriptProfiler.h:77
&gt; &gt; +    static void visitJSDOMWrappers(NodeWrapperVisitor*) { }
&gt; 
&gt; nit: visitNodeWrappers
&gt; 
Done.

&gt; &gt; Source/WebCore/bindings/js/ScriptProfiler.h:79
&gt; &gt; +    static void visitExternalJSStrings(ExternalStringVisitor*) { }
&gt; &gt; +    static void visitExternalJSArrays(ExternalArrayVisitor*) { }
&gt; 
&gt; visitExternalStrings ?
&gt; visitExternalArrays ?
&gt; 
Done.

&gt; &gt; Source/WebCore/bindings/v8/ScriptProfiler.h:81
&gt; &gt; +    static void visitJSDOMWrappers(NodeWrapperVisitor*);
&gt; 
&gt; ditto
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655438</commentid>
    <comment_count>10</comment_count>
      <attachid>149017</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-22 07:27:55 -0700</bug_when>
    <thetext>Comment on attachment 149017
Patch

Attachment 149017 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13038386</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655450</commentid>
    <comment_count>11</comment_count>
      <attachid>149017</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-22 07:34:43 -0700</bug_when>
    <thetext>Comment on attachment 149017
Patch

Attachment 149017 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13030360</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655462</commentid>
    <comment_count>12</comment_count>
      <attachid>149017</attachid>
    <who name="Alexei Filippov">alph</who>
    <bug_when>2012-06-22 08:00:31 -0700</bug_when>
    <thetext>Comment on attachment 149017
Patch

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

lgtm

&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:338
&gt; +    int m_externalArraySize;

nit: size_t</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655482</commentid>
    <comment_count>13</comment_count>
      <attachid>149017</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-22 08:50:57 -0700</bug_when>
    <thetext>Comment on attachment 149017
Patch

Attachment 149017 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13085032</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656407</commentid>
    <comment_count>14</comment_count>
      <attachid>149017</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-24 23:34:26 -0700</bug_when>
    <thetext>Comment on attachment 149017
Patch

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

&gt;&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:338
&gt;&gt; +    int m_externalArraySize;
&gt; 
&gt; nit: size_t

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656418</commentid>
    <comment_count>15</comment_count>
      <attachid>149252</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-24 23:54:53 -0700</bug_when>
    <thetext>Created attachment 149252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656444</commentid>
    <comment_count>16</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-25 02:27:08 -0700</bug_when>
    <thetext>Committed r121144: &lt;http://trac.webkit.org/changeset/121144&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148998</attachid>
            <date>2012-06-22 04:51:22 -0700</date>
            <delta_ts>2012-06-22 06:06:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89754-20120622155121.patch</filename>
            <type>text/plain</type>
            <size>10272</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmU5M2Q4MTMzZmUyODg5
ZGUyNGM1NDQ0OWIwN2E2OTdiNmQ0MzkwZC4uODFmMzE3OGEwMzk0ODcxOTY1ZjNkZDRmNzJjZDY3
ZGNkZDRlODgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA2LTIyICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGFkZCBleHRlcm5hbCByZXNvdXJjZXMgc2l6ZSB0byB0aGUgbmF0aXZlIG1lbW9yeSBkaWFn
cmFtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTc1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpemUg
b2YgZXh0ZXJuYWwgc3RyaW5ncyBhbmQgYXJyYXlzIGlzIG5vdyByZXBvcnRlZCB0aHJvdWdoIHRo
ZSBpbnNwZWN0b3IKKyAgICAgICAgcHJvdG9jb2wgYW5kIGRpc3BsYXllZCBvbiB0aGUgbmF0aXZl
IG1lbW9yeSBjaGFydC4KKworICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2ZpbGVyOjp2aXNpdEV4dGVybmFsSlNBcnJh
eXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0UHJv
ZmlsZXIuaDoKKyAgICAgICAgKFNjcmlwdFByb2ZpbGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
RE9NV3JhcHBlclZpc2l0b3IuaDoKKyAgICAgICAgKFdURik6CisgICAgICAgIChXZWJDb3JlOjpE
T01XcmFwcGVyVmlzaXRvcjo6dmlzaXROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBw
ZXJWaXNpdG9yOjp2aXNpdEpTRXh0ZXJuYWxTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
V3JhcHBlclZpc2l0b3I6OnZpc2l0SlNFeHRlcm5hbEFycmF5KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwOgorICAgICAgICAoTWVtb3J5QmxvY2tOYW1lKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6anNFeHRlcm5hbFJlc291cmNl
c0luZm8pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nl
c3NNZW1vcnlEaXN0cmlidXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmF0
aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1lbW9yeUJs
b2NrVmlld1Byb3BlcnRpZXMuX2luaXRpYWxpemUpOgorCiAyMDEyLTA2LTIxICBTaGVyaWZmIEJv
dCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMTIwOTgyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0UHJvZmlsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFBy
b2ZpbGVyLmgKaW5kZXggMDRhNjE1ZGRiZDg0OWIyZjUxMTViNzM3MDdlNGM2ZmU5ZmM2N2I5NC4u
NGY5OWIxODEzZDNiMTg2MTFiZmMxMDA2YjQ1N2FhODVjNmQ1NTljNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5oCkBAIC03NCw2ICs3NCw3IEBAIHB1Ymxp
YzoKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgY291bnRlciBmb3IgSlNDLiBTZWUgYnVn
IDczOTM2IGZvciBtb3JlIGRldGFpbHMuCiAgICAgc3RhdGljIHZvaWQgdmlzaXRKU0RPTVdyYXBw
ZXJzKERPTVdyYXBwZXJWaXNpdG9yKikgeyB9CiAgICAgc3RhdGljIHZvaWQgdmlzaXRFeHRlcm5h
bEpTU3RyaW5ncyhET01XcmFwcGVyVmlzaXRvciopIHsgfQorICAgIHN0YXRpYyB2b2lkIHZpc2l0
RXh0ZXJuYWxKU0FycmF5cyhET01XcmFwcGVyVmlzaXRvciopIHsgfQogICAgIHN0YXRpYyBzaXpl
X3QgcHJvZmlsZXJTbmFwc2hvdHNTaXplKCkgeyByZXR1cm4gMDsgfQogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwCmluZGV4IDgwMjE2MWJjN2Y2
OWE4OTZhMWJhYjYwZDM4NDZhOWUyZThlNzczZTQuLjYwYTRjZDQ0NjY4ODVkNDViZTRmNDkzMmM3
ODkyNDAwYjc3YzNhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdFByb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQ
cm9maWxlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJET01XcmFwcGVyVmlzaXRv
ci5oIgogI2luY2x1ZGUgIlJldGFpbmVkRE9NSW5mby5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVj
dC5oIgorI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5n
LmgiCiAjaW5jbHVkZSAiVjhET01NYXAuaCIKICNpbmNsdWRlICJWOE5vZGUuaCIKQEAgLTE5Niw2
ICsxOTcsMjggQEAgdm9pZCBTY3JpcHRQcm9maWxlcjo6dmlzaXRFeHRlcm5hbEpTU3RyaW5ncyhE
T01XcmFwcGVyVmlzaXRvciogdmlzaXRvcikKICAgICBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6
Y3VycmVudCgpLT52aXNpdEpTRXh0ZXJuYWxTdHJpbmdzKHZpc2l0b3IpOwogfQogCit2b2lkIFNj
cmlwdFByb2ZpbGVyOjp2aXNpdEV4dGVybmFsSlNBcnJheXMoRE9NV3JhcHBlclZpc2l0b3IqIHZp
c2l0b3IpCit7CisgICAgY2xhc3MgVmlzaXRvckFkYXB0ZXIgOiBwdWJsaWMgRE9NV3JhcHBlck1h
cDx2b2lkPjo6VmlzaXRvciB7CisgICAgcHVibGljOgorICAgICAgICBWaXNpdG9yQWRhcHRlcihE
T01XcmFwcGVyVmlzaXRvciogdmlzaXRvcikgOiBtX3Zpc2l0b3IodmlzaXRvcikgeyB9CisKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHZpc2l0RE9NV3JhcHBlcihET01EYXRhU3RvcmUqLCB2b2lkKiBp
bXBsLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB2OE9iamVjdCkKKyAgICAgICAgeworICAg
ICAgICAgICAgV3JhcHBlclR5cGVJbmZvKiB0eXBlID0gVjhET01XcmFwcGVyOjpkb21XcmFwcGVy
VHlwZSh2OE9iamVjdCk7CisgICAgICAgICAgICBpZiAoIXR5cGUtPmlzU3ViY2xhc3MoJlY4QXJy
YXlCdWZmZXJWaWV3OjppbmZvKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICBBcnJheUJ1ZmZlclZpZXcqIGFycmF5QnVmZmVyVmlldyA9IFY4QXJyYXlCdWZmZXJWaWV3Ojp0
b05hdGl2ZSh2OE9iamVjdCk7CisgICAgICAgICAgICBtX3Zpc2l0b3ItPnZpc2l0SlNFeHRlcm5h
bEFycmF5KGFycmF5QnVmZmVyVmlldyk7CisgICAgICAgIH0KKyAgICBwcml2YXRlOgorICAgICAg
ICBET01XcmFwcGVyVmlzaXRvciogbV92aXNpdG9yOworICAgIH0gYWRhcHRlcih2aXNpdG9yKTsK
KworICAgIGdldERPTU9iamVjdE1hcCgpLnZpc2l0KDAsICZhZGFwdGVyKTsKKworfQorCiBzaXpl
X3QgU2NyaXB0UHJvZmlsZXI6OnByb2ZpbGVyU25hcHNob3RzU2l6ZSgpCiB7CiAgICAgcmV0dXJu
IHY4OjpIZWFwUHJvZmlsZXI6OkdldE1lbW9yeVNpemVVc2VkQnlQcm9maWxlcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmgKaW5kZXggMzMyNmRiNDQyZjRj
NmY4MDM3ZTZlYjE4MzZmZjU5MWU1YjIyZDU1Ny4uYTYwMmFmZTdjOTk2MjE5NjNlNjRkMTIyYTQy
ZDU3MTk3M2Q2M2YzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0UHJvZmlsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9m
aWxlci5oCkBAIC03OCw2ICs3OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFs
aXplKCk7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRKU0RPTVdyYXBwZXJzKERPTVdyYXBwZXJWaXNp
dG9yKik7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRFeHRlcm5hbEpTU3RyaW5ncyhET01XcmFwcGVy
VmlzaXRvciopOworICAgIHN0YXRpYyB2b2lkIHZpc2l0RXh0ZXJuYWxKU0FycmF5cyhET01XcmFw
cGVyVmlzaXRvciopOwogICAgIHN0YXRpYyBzaXplX3QgcHJvZmlsZXJTbmFwc2hvdHNTaXplKCk7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NV3JhcHBlclZp
c2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01XcmFwcGVyVmlzaXRvci5oCmlu
ZGV4IDRiZjI0NmYzNTE4NjM5YTJiNTY2ZjVjODZlMWM2NzU2N2ViMjFiZjIuLmFhNjJmZmM1Nzdl
MDY3OGIxZTlkZjZmZjY5MzAxZjAwNDQ2ZmEwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9ET01XcmFwcGVyVmlzaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9ET01XcmFwcGVyVmlzaXRvci5oCkBAIC0yOSwxNCArMjksMjAgQEAKICNpZm5kZWYgRE9N
V3JhcHBlclZpc2l0b3JfaAogI2RlZmluZSBET01XcmFwcGVyVmlzaXRvcl9oCiAKK25hbWVzcGFj
ZSBXVEYgeworY2xhc3MgQXJyYXlCdWZmZXJWaWV3OworY2xhc3MgU3RyaW5nSW1wbDsKK30KKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOb2RlOwogCiBjbGFzcyBET01XcmFwcGVyVmlz
aXRvciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0Tm9kZShOb2RlKikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdEpTRXh0ZXJuYWxTdHJpbmcoU3RyaW5nSW1wbCopID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdmlzaXROb2RlKE5vZGUqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dmlzaXRKU0V4dGVybmFsU3RyaW5nKFdURjo6U3RyaW5nSW1wbCopIHsgfQorICAgIHZpcnR1YWwg
dm9pZCB2aXNpdEpTRXh0ZXJuYWxBcnJheShXVEY6OkFycmF5QnVmZmVyVmlldyopIHsgfQogcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgfkRPTVdyYXBwZXJWaXNpdG9yKCkgeyB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5kZXgg
MGZiMmFhYzMzYWE1MTE1YzQxYmM1MTBhMjI5MTg4MGU2MTBhM2EzNC4uOTkyYTlmYzVhOTBhZTU2
YTliZmQ3MDRhMGU2YjRhMjJjOGI4M2NkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCkBAIC01MCw2ICs1MCw4IEBACiAjaW5jbHVk
ZSAiU2NyaXB0R0NFdmVudC5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCiAjaW5jbHVk
ZSAiU3R5bGVkRWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgorI2luY2x1
ZGUgPHd0Zi9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtNjYsNiArNjgsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTWVtb3J5QmxvY2tOYW1lIHsKIHN0YXRpYyBjb25z
dCBjaGFyIGpzSGVhcEFsbG9jYXRlZFtdID0gIkpTSGVhcEFsbG9jYXRlZCI7CiBzdGF0aWMgY29u
c3QgY2hhciBqc0hlYXBVc2VkW10gPSAiSlNIZWFwVXNlZCI7CitzdGF0aWMgY29uc3QgY2hhciBq
c0V4dGVybmFsUmVzb3VyY2VzW10gPSAiSlNFeHRlcm5hbFJlc291cmNlcyI7CitzdGF0aWMgY29u
c3QgY2hhciBqc0V4dGVybmFsQXJyYXlzW10gPSAiSlNFeHRlcm5hbEFycmF5cyI7CitzdGF0aWMg
Y29uc3QgY2hhciBqc0V4dGVybmFsU3RyaW5nc1tdID0gIkpTRXh0ZXJuYWxTdHJpbmdzIjsKIHN0
YXRpYyBjb25zdCBjaGFyIGluc3BlY3RvckRhdGFbXSA9ICJJbnNwZWN0b3JEYXRhIjsKIHN0YXRp
YyBjb25zdCBjaGFyIG1lbW9yeUNhY2hlW10gPSAiTWVtb3J5Q2FjaGUiOwogc3RhdGljIGNvbnN0
IGNoYXIgcHJvY2Vzc1ByaXZhdGVNZW1vcnlbXSA9ICJQcm9jZXNzUHJpdmF0ZU1lbW9yeSI7CkBA
IC0zMDYsNiArMzExLDM0IEBAIHByaXZhdGU6CiAgICAgaW50IG1fc2hhcmVkU3RyaW5nU2l6ZTsK
IH07CiAKK2NsYXNzIEV4dGVybmFsUmVzb3VyY2VWaXNpdG9yIDogcHVibGljIERPTVdyYXBwZXJW
aXNpdG9yIHsKK3B1YmxpYzoKKyAgICBFeHRlcm5hbFJlc291cmNlVmlzaXRvcigpCisgICAgICAg
IDogbV9qc0V4dGVybmFsU3RyaW5nU2l6ZSgwKQorICAgICAgICAsIG1fZXh0ZXJuYWxBcnJheVNp
emUoMCkKKyAgICB7IH0KKworICAgIGludCBleHRlcm5hbFN0cmluZ1NpemUoKSBjb25zdCB7IHJl
dHVybiBtX2pzRXh0ZXJuYWxTdHJpbmdTaXplOyB9CisgICAgaW50IGV4dGVybmFsQXJyYXlTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9leHRlcm5hbEFycmF5U2l6ZTsgfQorCitwcml2YXRlOgorICAg
IHZpcnR1YWwgdm9pZCB2aXNpdEpTRXh0ZXJuYWxBcnJheShBcnJheUJ1ZmZlclZpZXcqIGJ1ZmZl
clZpZXcpCisgICAgeworICAgICAgICBBcnJheUJ1ZmZlciogYnVmZmVyID0gYnVmZmVyVmlldy0+
YnVmZmVyKCkuZ2V0KCk7CisgICAgICAgIGlmIChtX2FycmF5QnVmZmVycy5hZGQoYnVmZmVyKS5p
c05ld0VudHJ5KQorICAgICAgICAgICAgbV9leHRlcm5hbEFycmF5U2l6ZSArPSBidWZmZXItPmJ5
dGVMZW5ndGgoKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIHZpc2l0SlNFeHRlcm5hbFN0cmlu
ZyhTdHJpbmdJbXBsKiBzdHJpbmcpCisgICAgeworICAgICAgICBpbnQgc2l6ZSA9IHN0cmluZ1Np
emUoc3RyaW5nKTsKKyAgICAgICAgbV9qc0V4dGVybmFsU3RyaW5nU2l6ZSArPSBzaXplOworICAg
IH0KKworICAgIGludCBtX2pzRXh0ZXJuYWxTdHJpbmdTaXplOworICAgIGludCBtX2V4dGVybmFs
QXJyYXlTaXplOworICAgIEhhc2hTZXQ8QXJyYXlCdWZmZXIqPiBtX2FycmF5QnVmZmVyczsKK307
CisKIH0gLy8gbmFtZXNwYWNlCiAKIEluc3BlY3Rvck1lbW9yeUFnZW50Ojp+SW5zcGVjdG9yTWVt
b3J5QWdlbnQoKQpAQCAtNDAwLDYgKzQzMywyNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JNZW1vcnlCbG9jaz4gbWVtb3J5Q2FjaGVJbmZvKCkKICAgICByZXR1cm4gbWVtb3J5Q2FjaGVT
dGF0cy5yZWxlYXNlKCk7CiB9CiAKK3N0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJs
b2NrPiBqc0V4dGVybmFsUmVzb3VyY2VzSW5mbygpCit7CisgICAgRXh0ZXJuYWxSZXNvdXJjZVZp
c2l0b3IgdmlzaXRvcjsKKyAgICBTY3JpcHRQcm9maWxlcjo6dmlzaXRFeHRlcm5hbEpTU3RyaW5n
cygmdmlzaXRvcik7CisgICAgU2NyaXB0UHJvZmlsZXI6OnZpc2l0RXh0ZXJuYWxKU0FycmF5cygm
dmlzaXRvcik7CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGV4dGVybmFsUmVz
b3VyY2VzU3RhdHMgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShNZW1v
cnlCbG9ja05hbWU6OmpzRXh0ZXJuYWxSZXNvdXJjZXMpOworICAgIGV4dGVybmFsUmVzb3VyY2Vz
U3RhdHMtPnNldFNpemUodmlzaXRvci5leHRlcm5hbFN0cmluZ1NpemUoKSArIHZpc2l0b3IuZXh0
ZXJuYWxBcnJheVNpemUoKSk7CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0
b3JNZW1vcnlCbG9jaz4gPiBjaGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JN
ZW1vcnlCbG9jaz46OmNyZWF0ZSgpOworCisgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2Nr
PiBleHRlcm5hbFN0cmluZ1N0YXRzID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNl
dE5hbWUoTWVtb3J5QmxvY2tOYW1lOjpqc0V4dGVybmFsU3RyaW5ncyk7CisgICAgZXh0ZXJuYWxT
dHJpbmdTdGF0cy0+c2V0U2l6ZSh2aXNpdG9yLmV4dGVybmFsU3RyaW5nU2l6ZSgpKTsKKyAgICBj
aGlsZHJlbi0+YWRkSXRlbShleHRlcm5hbFN0cmluZ1N0YXRzKTsKKworICAgIFJlZlB0cjxJbnNw
ZWN0b3JNZW1vcnlCbG9jaz4gZXh0ZXJuYWxBcnJheVN0YXRzID0gSW5zcGVjdG9yTWVtb3J5Qmxv
Y2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5QmxvY2tOYW1lOjpqc0V4dGVybmFsQXJyYXlzKTsK
KyAgICBleHRlcm5hbEFycmF5U3RhdHMtPnNldFNpemUodmlzaXRvci5leHRlcm5hbEFycmF5U2l6
ZSgpKTsKKyAgICBjaGlsZHJlbi0+YWRkSXRlbShleHRlcm5hbEFycmF5U3RhdHMpOworCisgICAg
cmV0dXJuIGV4dGVybmFsUmVzb3VyY2VzU3RhdHMucmVsZWFzZSgpOworfQorCiB2b2lkIEluc3Bl
Y3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5n
KiwgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiYgcHJvY2Vzc01lbW9yeSkKIHsKICAgICBz
aXplX3QgcHJpdmF0ZUJ5dGVzID0gMDsKQEAgLTQxMCw2ICs0NjQsNyBAQCB2b2lkIEluc3BlY3Rv
ck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5nKiwg
UmVmUHRyPElucwogCiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1v
cnlCbG9jaz4gPiBjaGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlC
bG9jaz46OmNyZWF0ZSgpOwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKGpzSGVhcEluZm8oKSk7Cisg
ICAgY2hpbGRyZW4tPmFkZEl0ZW0oanNFeHRlcm5hbFJlc291cmNlc0luZm8oKSk7CiAgICAgY2hp
bGRyZW4tPmFkZEl0ZW0oaW5zcGVjdG9yRGF0YSgpKTsKICAgICBjaGlsZHJlbi0+YWRkSXRlbSht
ZW1vcnlDYWNoZUluZm8oKSk7CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0ocmVuZGVyVHJlZUluZm8o
bV9wYWdlKSk7IC8vIFRPRE86IGNvbGxlY3QgZm9yIGFsbCBwYWdlcz8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1vcnlTbmFw
c2hvdFZpZXcuanMKaW5kZXggOTliODBhYWRmNTU2Mjg5ZWRmNzVkOTZlMzU5MDlkNTkxYzJkMjI3
NS4uZTEyM2I4ZmE1MmFhYzE1N2ZjNTBiN2FjODZmMjhjYWUxNGU3NzlmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1vcnlTbmFwc2hvdFZp
ZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1v
cnlTbmFwc2hvdFZpZXcuanMKQEAgLTIxOCw2ICsyMTgsOSBAQCBXZWJJbnNwZWN0b3IuTWVtb3J5
QmxvY2tWaWV3UHJvcGVydGllcy5faW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKCkKICAgICBhZGRCbG9j
aygiaHNsKCAgMCwgIDAlLCAgODAlKSIsICJPdGhlciIsICJPdGhlciIpOwogICAgIGFkZEJsb2Nr
KCJoc2woIDkwLCA2MCUsICA4MCUpIiwgIkpTSGVhcEFsbG9jYXRlZCIsICJKYXZhU2NyaXB0IGhl
YXAiKTsKICAgICBhZGRCbG9jaygiaHNsKCA5MCwgODAlLCAgODAlKSIsICJKU0hlYXBVc2VkIiwg
IlVzZWQgSmF2YVNjcmlwdCBoZWFwIik7CisgICAgYWRkQmxvY2soImhzbCggOTAsIDMwJSwgIDgw
JSkiLCAiSlNFeHRlcm5hbFJlc291cmNlcyIsICJKYXZhU2NyaXB0IGV4dGVybmFsIHJlc291cmNl
cyIpOworICAgIGFkZEJsb2NrKCJoc2woIDkwLCA0MCUsICA4MCUpIiwgIkpTRXh0ZXJuYWxBcnJh
eXMiLCAiSmF2YVNjcmlwdCBleHRlcm5hbCBhcnJheXMiKTsKKyAgICBhZGRCbG9jaygiaHNsKCA5
MCwgNTAlLCAgODAlKSIsICJKU0V4dGVybmFsU3RyaW5ncyIsICJKYXZhU2NyaXB0IGV4dGVybmFs
IHN0cmluZ3MiKTsKICAgICBhZGRCbG9jaygiaHNsKDIxMCwgNjAlLCAgODAlKSIsICJJbnNwZWN0
b3JEYXRhIiwgIkluc3BlY3RvciBkYXRhIik7CiAgICAgYWRkQmxvY2soImhzbCggMzAsIDYwJSwg
IDgwJSkiLCAiTWVtb3J5Q2FjaGUiLCAiTWVtb3J5IGNhY2hlIHJlc291cmNlcyIpOwogICAgIGFk
ZEJsb2NrKCJoc2woIDYwLCA2MCUsICA4MCUpIiwgIlJlbmRlclRyZWVBbGxvY2F0ZWQiLCAiUmVu
ZGVyIHRyZWUiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149011</attachid>
            <date>2012-06-22 06:06:54 -0700</date>
            <delta_ts>2012-06-22 06:53:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89754-20120622170653.patch</filename>
            <type>text/plain</type>
            <size>28600</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmU5M2Q4MTMzZmUyODg5
ZGUyNGM1NDQ0OWIwN2E2OTdiNmQ0MzkwZC4uNzE4ZTYyNTkxMWVmYTdmNjcyOGFlZWNiNTlmZWU5
NTM2NDUxMzRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA2LTIyICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGFkZCBleHRlcm5hbCByZXNvdXJjZXMgc2l6ZSB0byB0aGUgbmF0aXZlIG1lbW9yeSBkaWFn
cmFtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTc1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpemUg
b2YgZXh0ZXJuYWwgc3RyaW5ncyBhbmQgYXJyYXlzIGlzIG5vdyByZXBvcnRlZCB0aHJvdWdoIHRo
ZSBpbnNwZWN0b3IKKyAgICAgICAgcHJvdG9jb2wgYW5kIGRpc3BsYXllZCBvbiB0aGUgbmF0aXZl
IG1lbW9yeSBjaGFydC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2ZpbGVyOjp2aXNp
dEpTRE9NV3JhcHBlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OnZpc2l0
RXh0ZXJuYWxKU1N0cmluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OnZp
c2l0RXh0ZXJuYWxKU0FycmF5cyk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0UHJvZmls
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OnZpc2l0SlNET01XcmFw
cGVycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9maWxlcjo6dmlzaXRFeHRlcm5hbEpT
U3RyaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9maWxlcjo6dmlzaXRFeHRlcm5h
bEpTQXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Nj
cmlwdFByb2ZpbGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNjcmlwdFByb2Zp
bGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQ29yZVN0cmluZ1Jlc291cmNlOjp2aXNpdFN0cmluZ3MpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnZpc2l0SlNFeHRlcm5hbFN0cmluZ3MpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL0Jp
bmRpbmdWaXNpdG9ycy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RP
TVdyYXBwZXJWaXNpdG9yLmguCisgICAgICAgIChXVEYpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChOb2RlV3JhcHBlclZpc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVdyYXBw
ZXJWaXNpdG9yOjp+Tm9kZVdyYXBwZXJWaXNpdG9yKToKKyAgICAgICAgKEV4dGVybmFsU3RyaW5n
VmlzaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpFeHRlcm5hbFN0cmluZ1Zpc2l0b3I6On5FeHRl
cm5hbFN0cmluZ1Zpc2l0b3IpOgorICAgICAgICAoRXh0ZXJuYWxBcnJheVZpc2l0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZXJuYWxBcnJheVZpc2l0b3I6On5FeHRlcm5hbEFycmF5VmlzaXRv
cik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAg
ICAgKE1lbW9yeUJsb2NrTmFtZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzRXh0ZXJuYWxSZXNvdXJjZXNJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL05hdGl2ZU1lbW9yeVNuYXBzaG90Vmlldy5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5NZW1vcnlCbG9ja1ZpZXdQcm9wZXJ0aWVzLl9pbml0aWFsaXplKToKKwog
MjAxMi0wNi0yMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMDk4Mi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDc4YWI5MWM4MzViMWE4ZTM4ZGIwZDkzZWUxNTQxYWEwNTRmMDMz
NjEuLjg2OTc0MjI0MjZlNmE4OTdhNjc4NmI1YTU3ZWYxMTUyN2Q5NWU2YWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjY0MSw2ICsyNjQxLDcgQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9pY3UvdW5pY29kZS91dGZfb2xkLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2ljdS91bmljb2RlL3V0eXBlcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pY3UvdW5pY29k
ZS91dmVyc2lvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQmluZGluZ1Zpc2l0b3Jz
LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcCBcCkBAIC0yNjUxLDcgKzI2NTIsNiBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2Rl
SGlnaGxpZ2h0ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9y
dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuaCBcCi0J
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVdyYXBwZXJWaXNpdG9yLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggYjI1MjBlYjFiMWE3NjZk
MWNiMzRkOTRlN2M2MmNiMDUyOWIxZDg4MS4uNjZhYzNhMDRkMDA3OTEwZjJkNjdkMTU0N2ZiOTQ1
ZWVmZGI5ZDEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0yMDM0LDEyICsyMDM0LDEyIEBAIEhFQURFUlMg
Kz0gXAogICAgIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmggXAogICAgIGh0bWwvdHJhY2svV2Vi
VlRUVG9rZW4uaCBcCiAgICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuaCBcCisgICAgaW5z
cGVjdG9yL0JpbmRpbmdWaXNpdG9yLmggXAogICAgIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5o
IFwKICAgICBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmggXAogICAgIGluc3BlY3Rvci9E
T01FZGl0b3IuaCBcCiAgICAgaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5oIFwKICAgICBp
bnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmggXAotICAgIGluc3BlY3Rvci9ET01XcmFwcGVyVmlz
aXRvci5oIFwKICAgICBpbnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5LmggXAogICAgIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5oIFwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNl
LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDQzYjZlYTY4ZWJkYmM0ODFlZDAxZjJkOTAwMWFiNGIz
ZjgxMDgzNTYuLjZhZDI1M2YwM2U1NjEwYzg2MTExYjE0ZTg1NWZlNjUzYjdmMmY1YjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTI3NTIsNiArMjc1Miw3IEBACiAgICAgICAgICAgICAnaWN1L3VuaWNv
ZGUvdXRmX29sZC5oJywKICAgICAgICAgICAgICdpY3UvdW5pY29kZS91dHlwZXMuaCcsCiAgICAg
ICAgICAgICAnaWN1L3VuaWNvZGUvdXZlcnNpb24uaCcsCisgICAgICAgICAgICAnaW5zcGVjdG9y
L0JpbmRpbmdWaXNpdG9ycy5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaCcsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAnLApAQCAtMjc2Miw3ICsy
NzYzLDYgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmgnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmgnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9E
T01XcmFwcGVyVmlzaXRvci5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSWRlbnRpZmllcnNG
YWN0b3J5LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5o
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZWVkODU0MTk3MmZh
YWM4MTkxNDkxMGY0NmY1MDE1MWQzODFjZWE3Yy4uMGQ2Nzc4YjE3ZjE4NWFmOTU4YTk5ODkyNWE0
NjNiMzIxOWQyODI2YSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKQEAgLTczMTgzLDYgKzczMTgzLDEwIEBACiAJCQlOYW1lPSJpbnNwZWN0b3IiCiAJ
CQk+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEJpbmRpbmdWaXNp
dG9ycy5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIu
LlxpbnNwZWN0b3JcQ29uc29sZU1lc3NhZ2UuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KQEAgLTczMzAzLDEwICs3MzMwNyw2IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZp
bGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxET01XcmFwcGVyVmlzaXRvci5oIgot
CQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0
b3JcSWRlbnRpZmllcnNGYWN0b3J5LmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMmFjYjBjYjAwNTQ4YTI5YzI5NTY2MTQwNjUzNWZlY2Y1NzE0OTA4ZS4uYmU0ZWUzMDU1
NjAyNTcwOTk0MzJiOGZhNDVkNWJiMmMwNzY5ZTlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjExOSw3ICs2MTE5LDcgQEAK
IAkJRjM0NzQyRTgxMzQzNjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNDc0MkU2
MTM0MzYzNTAwMDUzMUJDMiAvKiBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi87IH07CiAJ
CUYzNDc0MkU5MTM0MzYzNTAwMDUzMUJDMiAvKiBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM0NzQyRTcxMzQz
NjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmggKi87IH07CiAJCUYzNTBC
NzM1MTNGMTM3N0QwMDg4MEM0MyAvKiBJbnN0cnVtZW50aW5nQWdlbnRzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNTBCNzM0MTNGMTM3N0QwMDg4
MEM0MyAvKiBJbnN0cnVtZW50aW5nQWdlbnRzLmNwcCAqLzsgfTsKLQkJRjM1QUU1QUMxNDkyNUY1
QjAwNEQ1Nzc2IC8qIERPTVdyYXBwZXJWaXNpdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzVBRTVBQjE0OTI1RjVCMDA0RDU3NzYgLyogRE9NV3Jh
cHBlclZpc2l0b3IuaCAqLzsgfTsKKwkJRjM1QUU1QUMxNDkyNUY1QjAwNEQ1Nzc2IC8qIEJpbmRp
bmdWaXNpdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjM1QUU1QUIxNDkyNUY1QjAwNEQ1Nzc2IC8qIEJpbmRpbmdWaXNpdG9ycy5oICovOyB9Owog
CQlGMzY0NEFGRjExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM2NDRBRkQxMTE5ODA1OTAw
RTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmNwcCAqLzsgfTsKIAkJRjM2NDRCMDAxMTE5ODA1OTAw
RTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGMzY0NEFGRTExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3Jp
cHQuaCAqLzsgfTsKIAkJRjM2RTA3QTQxMzU4QThCRTAwQUFDQkM5IC8qIFdvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjM2RTA3QTIxMzU4QThCRTAwQUFDQkM5IC8qIFdvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXIuY3BwICovOyB9OwpAQCAtMTMzODUsNyArMTMzODUsNyBAQAogCQlGMzQ3NDJFNjEzNDM2MzUw
MDA1MzFCQzIgLyogV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGMzQ3NDJFNzEzNDM2MzUwMDA1MzFCQzIgLyogV29ya2Vy
U2NyaXB0RGVidWdTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29y
a2VyU2NyaXB0RGVidWdTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjM1
MEI3MzQxM0YxMzc3RDAwODgwQzQzIC8qIEluc3RydW1lbnRpbmdBZ2VudHMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zdHJ1bWVudGluZ0FnZW50cy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUYzNUFFNUFCMTQ5MjVGNUIwMDRENTc3NiAvKiBE
T01XcmFwcGVyVmlzaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01X
cmFwcGVyVmlzaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGMzVBRTVBQjE0
OTI1RjVCMDA0RDU3NzYgLyogQmluZGluZ1Zpc2l0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEJpbmRpbmdWaXNpdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGMzY0NEFGRDExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzY0NEFGRTExMTk4MDU5MDBFMEQ1MzcgLyogSW5q
ZWN0ZWRTY3JpcHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRT
Y3JpcHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjM2RTA3QTIxMzU4QThCRTAw
QUFDQkM5IC8qIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDQxMSw2ICsxNDQxMSw3IEBACiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFDODFCOTU5MEU5NzMzMDgwMDI2NkUwNyAv
KiBmcm9udC1lbmQgKi8sCisJCQkJRjM1QUU1QUIxNDkyNUY1QjAwNEQ1Nzc2IC8qIEJpbmRpbmdW
aXNpdG9ycy5oICovLAogCQkJCTQxRjA2MThEMEY1RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVz
c2FnZS5jcHAgKi8sCiAJCQkJNDFGMDYxOEMwRjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNz
YWdlLmggKi8sCiAJCQkJNTkxMDJGQjkxNDMyN0QzQjAwM0M5RDA0IC8qIENvbnRlbnRTZWFyY2hV
dGlscy5jcHAgKi8sCkBAIC0xNDQyMSw3ICsxNDQyMiw2IEBACiAJCQkJNEYxNDQyMjcxMzM5RkQ2
MjAwRTBENkY4IC8qIERPTU5vZGVIaWdobGlnaHRlci5oICovLAogCQkJCTdBNTQ4ODE2MTRFNDMy
QTEwMDZBRTA1QSAvKiBET01QYXRjaFN1cHBvcnQuY3BwICovLAogCQkJCTdBNTQ4ODE1MTRFNDMy
QTEwMDZBRTA1QSAvKiBET01QYXRjaFN1cHBvcnQuaCAqLywKLQkJCQlGMzVBRTVBQjE0OTI1RjVC
MDA0RDU3NzYgLyogRE9NV3JhcHBlclZpc2l0b3IuaCAqLywKIAkJCQk1OTEzQTIzRjEzRDQ5RUJB
MDBGNUIwNUMgLyogSWRlbnRpZmllcnNGYWN0b3J5LmNwcCAqLywKIAkJCQk1OTEzQTI0MDEzRDQ5
RUJBMDBGNUIwNUMgLyogSWRlbnRpZmllcnNGYWN0b3J5LmggKi8sCiAJCQkJRjM2NDRBRkQxMTE5
ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmNwcCAqLywKQEAgLTIyMDMxLDYgKzIyMDMx
LDcgQEAKIAkJCQk5MzgxOTIwNTBGODdFMUVDMDBENTM1MkEgLyogQmluYXJ5UHJvcGVydHlMaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNjIyQThGQjEyMkM0NEE2MDBBNzg1QjMgLyogQmluZGlu
Z1NlY3VyaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNjIyQThGRDEyMkM0NEE2MDBBNzg1QjMg
LyogQmluZGluZ1NlY3VyaXR5QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjM1QUU1QUMxNDky
NUY1QjAwNEQ1Nzc2IC8qIEJpbmRpbmdWaXNpdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwOEQxMkIwMjZGNzAwQzFBMzU5IC8qIEJpcXVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwMjUxMkIwMjY3NjAwQzFBMzU5IC8qIEJpcXVhZERTUEtlcm5lbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkRDNTRGMDUxMzk5QjBEQTAwOEQ5MTE3IC8qIEJpcXVhZEZpbHRlck5vZGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjI5MTUsNyArMjI5MTYsNiBAQAogCQkJCTk3RDJBRDA0MTRCODIzQTYw
MDkzREYzMiAvKiBET01XaW5kb3dQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODlGNjBC
MTExNTdGNjg2RTAwNzVFMTU3IC8qIERPTVdpbmRvd1F1b3RhLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOENDQkI0OTE1MUY4MzE2MDBBQjdDRTkgLyogRE9NV2luZG93V2ViRGF0YWJhc2UuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUYzNUFFNUFDMTQ5MjVGNUIwMDRENTc3NiAvKiBET01XcmFwcGVyVmlz
aXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1M0RBMkUxMTQzMTIxRTAwMEQ4MTdFIC8qIERP
TVdyYXBwZXJXb3JsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExRDEzODAwQTUzMjU1MjAwNjRC
RjVGIC8qIERPTVhQYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTgwMTVDRTBBQkNBNzVEMDA4
MDU4OEQgLyogRE9NWFBhdGhFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmgKaW5kZXggMDRhNjE1ZGRiZDg0OWIyZjUx
MTViNzM3MDdlNGM2ZmU5ZmM2N2I5NC4uZTNiMmZjMDlkMzljY2MyNDJmZDUzMjAzZmU0MWIzYWY2
ODYzZDRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJv
ZmlsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5o
CkBAIC0zNiw3ICszNiw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRE9NV3Jh
cHBlclZpc2l0b3I7CitjbGFzcyBFeHRlcm5hbEFycmF5VmlzaXRvcjsKK2NsYXNzIEV4dGVybmFs
U3RyaW5nVmlzaXRvcjsKK2NsYXNzIE5vZGVXcmFwcGVyVmlzaXRvcjsKIGNsYXNzIFBhZ2U7CiBj
bGFzcyBTY3JpcHRPYmplY3Q7CiBjbGFzcyBTY3JpcHRWYWx1ZTsKQEAgLTcyLDggKzc0LDkgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIGlzU2FtcGxpbmcoKSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHN0YXRpYyBib29sIGhhc0hlYXBQcm9maWxlcigpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCB0aGlzIGNvdW50ZXIgZm9yIEpTQy4gU2VlIGJ1ZyA3MzkzNiBm
b3IgbW9yZSBkZXRhaWxzLgotICAgIHN0YXRpYyB2b2lkIHZpc2l0SlNET01XcmFwcGVycyhET01X
cmFwcGVyVmlzaXRvciopIHsgfQotICAgIHN0YXRpYyB2b2lkIHZpc2l0RXh0ZXJuYWxKU1N0cmlu
Z3MoRE9NV3JhcHBlclZpc2l0b3IqKSB7IH0KKyAgICBzdGF0aWMgdm9pZCB2aXNpdEpTRE9NV3Jh
cHBlcnMoTm9kZVdyYXBwZXJWaXNpdG9yKikgeyB9CisgICAgc3RhdGljIHZvaWQgdmlzaXRFeHRl
cm5hbEpTU3RyaW5ncyhFeHRlcm5hbFN0cmluZ1Zpc2l0b3IqKSB7IH0KKyAgICBzdGF0aWMgdm9p
ZCB2aXNpdEV4dGVybmFsSlNBcnJheXMoRXh0ZXJuYWxBcnJheVZpc2l0b3IqKSB7IH0KICAgICBz
dGF0aWMgc2l6ZV90IHByb2ZpbGVyU25hcHNob3RzU2l6ZSgpIHsgcmV0dXJuIDA7IH0KIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcAppbmRleCA4
MDIxNjFiYzdmNjlhODk2YTFiYWI2MGQzODQ2YTllMmU4ZTc3M2U0Li45MGM3ZTUwNzk2ZGYwNWE3
Y2ZiMmUyY2EyYjNlMjczOTE4OTg4MDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0UHJvZmlsZXIuY3BwCkBAIC0zMiw5ICszMiwxMCBAQAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKIAotI2luY2x1ZGUgIkRPTVdyYXBw
ZXJWaXNpdG9yLmgiCisjaW5jbHVkZSAiQmluZGluZ1Zpc2l0b3JzLmgiCiAjaW5jbHVkZSAiUmV0
YWluZWRET01JbmZvLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiVjhB
cnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOERP
TU1hcC5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgpAQCAtMTc1LDI3ICsxNzYsNDkgQEAgdm9pZCBT
Y3JpcHRQcm9maWxlcjo6aW5pdGlhbGl6ZSgpCiAgICAgdjg6OkhlYXBQcm9maWxlcjo6RGVmaW5l
V3JhcHBlckNsYXNzKHY4RE9NU3VidHJlZUNsYXNzSWQsICZyZXRhaW5lZERPTUluZm8pOwogfQog
Ci12b2lkIFNjcmlwdFByb2ZpbGVyOjp2aXNpdEpTRE9NV3JhcHBlcnMoRE9NV3JhcHBlclZpc2l0
b3IqIHZpc2l0b3IpCit2b2lkIFNjcmlwdFByb2ZpbGVyOjp2aXNpdEpTRE9NV3JhcHBlcnMoTm9k
ZVdyYXBwZXJWaXNpdG9yKiB2aXNpdG9yKQogewogICAgIGNsYXNzIFZpc2l0b3JBZGFwdGVyIDog
cHVibGljIERPTVdyYXBwZXJNYXA8Tm9kZT46OlZpc2l0b3IgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgVmlzaXRvckFkYXB0ZXIoRE9NV3JhcHBlclZpc2l0b3IqIHZpc2l0b3IpIDogbV92aXNpdG9y
KHZpc2l0b3IpIHsgfQorICAgICAgICBWaXNpdG9yQWRhcHRlcihOb2RlV3JhcHBlclZpc2l0b3Iq
IHZpc2l0b3IpIDogbV92aXNpdG9yKHZpc2l0b3IpIHsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdERPTVdyYXBwZXIoRE9NRGF0YVN0b3JlKiwgTm9kZSogbm9kZSwgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4pCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fdmlzaXRvci0+dmlzaXRO
b2RlKG5vZGUpOwogICAgICAgICB9CiAgICAgcHJpdmF0ZToKLSAgICAgICAgRE9NV3JhcHBlclZp
c2l0b3IqIG1fdmlzaXRvcjsKKyAgICAgICAgTm9kZVdyYXBwZXJWaXNpdG9yKiBtX3Zpc2l0b3I7
CiAgICAgfSBhZGFwdGVyKHZpc2l0b3IpOwogICAgIHZpc2l0RE9NTm9kZXMoJmFkYXB0ZXIpOwog
fQogCi12b2lkIFNjcmlwdFByb2ZpbGVyOjp2aXNpdEV4dGVybmFsSlNTdHJpbmdzKERPTVdyYXBw
ZXJWaXNpdG9yKiB2aXNpdG9yKQordm9pZCBTY3JpcHRQcm9maWxlcjo6dmlzaXRFeHRlcm5hbEpT
U3RyaW5ncyhFeHRlcm5hbFN0cmluZ1Zpc2l0b3IqIHZpc2l0b3IpCiB7CiAgICAgVjhCaW5kaW5n
UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+dmlzaXRKU0V4dGVybmFsU3RyaW5ncyh2aXNpdG9y
KTsKIH0KIAordm9pZCBTY3JpcHRQcm9maWxlcjo6dmlzaXRFeHRlcm5hbEpTQXJyYXlzKEV4dGVy
bmFsQXJyYXlWaXNpdG9yKiB2aXNpdG9yKQoreworICAgIGNsYXNzIFZpc2l0b3JBZGFwdGVyIDog
cHVibGljIERPTVdyYXBwZXJNYXA8dm9pZD46OlZpc2l0b3IgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgVmlzaXRvckFkYXB0ZXIoRXh0ZXJuYWxBcnJheVZpc2l0b3IqIHZpc2l0b3IpIDogbV92aXNp
dG9yKHZpc2l0b3IpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdERPTVdyYXBwZXIo
RE9NRGF0YVN0b3JlKiwgdm9pZCogaW1wbCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gdjhP
YmplY3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIFdyYXBwZXJUeXBlSW5mbyogdHlwZSA9IFY4
RE9NV3JhcHBlcjo6ZG9tV3JhcHBlclR5cGUodjhPYmplY3QpOworICAgICAgICAgICAgaWYgKCF0
eXBlLT5pc1N1YmNsYXNzKCZWOEFycmF5QnVmZmVyVmlldzo6aW5mbykpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgQXJyYXlCdWZmZXJWaWV3KiBhcnJheUJ1ZmZlclZpZXcg
PSBWOEFycmF5QnVmZmVyVmlldzo6dG9OYXRpdmUodjhPYmplY3QpOworICAgICAgICAgICAgbV92
aXNpdG9yLT52aXNpdEpTRXh0ZXJuYWxBcnJheShhcnJheUJ1ZmZlclZpZXcpOworICAgICAgICB9
CisgICAgcHJpdmF0ZToKKyAgICAgICAgRXh0ZXJuYWxBcnJheVZpc2l0b3IqIG1fdmlzaXRvcjsK
KyAgICB9IGFkYXB0ZXIodmlzaXRvcik7CisKKyAgICBnZXRET01PYmplY3RNYXAoKS52aXNpdCgw
LCAmYWRhcHRlcik7CisKK30KKwogc2l6ZV90IFNjcmlwdFByb2ZpbGVyOjpwcm9maWxlclNuYXBz
aG90c1NpemUoKQogewogICAgIHJldHVybiB2ODo6SGVhcFByb2ZpbGVyOjpHZXRNZW1vcnlTaXpl
VXNlZEJ5UHJvZmlsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdFByb2ZpbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9m
aWxlci5oCmluZGV4IDMzMjZkYjQ0MmY0YzZmODAzN2U2ZWIxODM2ZmY1OTFlNWIyMmQ1NTcuLjcx
ZDdhYmI5NTNhYWQyNTgwNTI0MWU0ZDM2Y2Y0OWNiZTcwYzQwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuaApAQCAtNDAsNyArNDAsOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERPTVdyYXBwZXJWaXNpdG9yOworY2xhc3MgRXh0ZXJu
YWxBcnJheVZpc2l0b3I7CitjbGFzcyBFeHRlcm5hbFN0cmluZ1Zpc2l0b3I7CitjbGFzcyBOb2Rl
V3JhcHBlclZpc2l0b3I7CiBjbGFzcyBQYWdlOwogY2xhc3MgU2NyaXB0T2JqZWN0OwogY2xhc3Mg
U2NyaXB0VmFsdWU7CkBAIC03Niw4ICs3OCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBp
c1NhbXBsaW5nKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHN0YXRpYyBib29sIGhhc0hlYXBQcm9m
aWxlcigpIHsgcmV0dXJuIHRydWU7IH0KICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7Ci0g
ICAgc3RhdGljIHZvaWQgdmlzaXRKU0RPTVdyYXBwZXJzKERPTVdyYXBwZXJWaXNpdG9yKik7Ci0g
ICAgc3RhdGljIHZvaWQgdmlzaXRFeHRlcm5hbEpTU3RyaW5ncyhET01XcmFwcGVyVmlzaXRvciop
OworICAgIHN0YXRpYyB2b2lkIHZpc2l0SlNET01XcmFwcGVycyhOb2RlV3JhcHBlclZpc2l0b3Iq
KTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdEV4dGVybmFsSlNTdHJpbmdzKEV4dGVybmFsU3RyaW5n
VmlzaXRvciopOworICAgIHN0YXRpYyB2b2lkIHZpc2l0RXh0ZXJuYWxKU0FycmF5cyhFeHRlcm5h
bEFycmF5VmlzaXRvciopOwogICAgIHN0YXRpYyBzaXplX3QgcHJvZmlsZXJTbmFwc2hvdHNTaXpl
KCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCA5
NzRkYTA1Y2E5MmRjNTcyZGVjZTQ4MmJhMjhlZGEzZWZjYWNmN2ZiLi4xYWMwZTIxMGE5OTc5MTg1
ZmI4MGI5MDk0YzhlODQ1MjRjMDM5NGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
QmluZGluZy5jcHAKQEAgLTMxLDggKzMxLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJWOEJpbmRpbmcuaCIKIAorI2luY2x1ZGUgIkJpbmRpbmdWaXNpdG9ycy5oIgogI2luY2x1
ZGUgIkRPTVN0cmluZ0xpc3QuaCIKLSNpbmNsdWRlICJET01XcmFwcGVyVmlzaXRvci5oIgogI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUg
IlF1YWxpZmllZE5hbWUuaCIKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtX2F0b21pY1N0cmluZzsKICAgICB9CiAKLSAgICB2b2lkIHZpc2l0U3RyaW5ncyhET01X
cmFwcGVyVmlzaXRvciogdmlzaXRvcikKKyAgICB2b2lkIHZpc2l0U3RyaW5ncyhFeHRlcm5hbFN0
cmluZ1Zpc2l0b3IqIHZpc2l0b3IpCiAgICAgewogICAgICAgICB2aXNpdG9yLT52aXNpdEpTRXh0
ZXJuYWxTdHJpbmcobV9wbGFpblN0cmluZy5pbXBsKCkpOwogICAgICAgICBpZiAobV9wbGFpblN0
cmluZy5pbXBsKCkgIT0gbV9hdG9taWNTdHJpbmcuaW1wbCgpICYmICFtX2F0b21pY1N0cmluZy5p
c051bGwoKSkKQEAgLTE3OCwxMiArMTc4LDEyIEBAIHByaXZhdGU6CiB9OwogCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKLXZvaWQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnZpc2l0SlNFeHRlcm5h
bFN0cmluZ3MoRE9NV3JhcHBlclZpc2l0b3IqIHZpc2l0b3IpCit2b2lkIFY4QmluZGluZ1Blcklz
b2xhdGVEYXRhOjp2aXNpdEpTRXh0ZXJuYWxTdHJpbmdzKEV4dGVybmFsU3RyaW5nVmlzaXRvciog
dmlzaXRvcikKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgY2xhc3Mg
VmlzaXRvckltcGwgOiBwdWJsaWMgdjg6OkV4dGVybmFsUmVzb3VyY2VWaXNpdG9yIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFZpc2l0b3JJbXBsKERPTVdyYXBwZXJWaXNpdG9yKiB2aXNpdG9yKSA6
IG1fdmlzaXRvcih2aXNpdG9yKSB7IH0KKyAgICAgICAgVmlzaXRvckltcGwoRXh0ZXJuYWxTdHJp
bmdWaXNpdG9yKiB2aXNpdG9yKSA6IG1fdmlzaXRvcih2aXNpdG9yKSB7IH0KICAgICAgICAgdmly
dHVhbCB+VmlzaXRvckltcGwoKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIFZpc2l0RXh0ZXJu
YWxTdHJpbmcodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBzdHJpbmcpCiAgICAgICAgIHsKQEAgLTE5
Miw3ICsxOTIsNyBAQCB2b2lkIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjp2aXNpdEpTRXh0ZXJu
YWxTdHJpbmdzKERPTVdyYXBwZXJWaXNpdG9yKiB2aXNpdG9yKQogICAgICAgICAgICAgICAgIHJl
c291cmNlLT52aXNpdFN0cmluZ3MobV92aXNpdG9yKTsKICAgICAgICAgfQogICAgIHByaXZhdGU6
Ci0gICAgICAgIERPTVdyYXBwZXJWaXNpdG9yKiBtX3Zpc2l0b3I7CisgICAgICAgIEV4dGVybmFs
U3RyaW5nVmlzaXRvciogbV92aXNpdG9yOwogICAgIH0gdjhWaXNpdG9yKHZpc2l0b3IpOwogICAg
IHY4OjpWODo6VmlzaXRFeHRlcm5hbFJlc291cmNlcygmdjhWaXNpdG9yKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggZjg3ZTRiOTI0NGRhMzU0MjczZTRjYTlk
YmQxNmFiODA0YzNkMzE3YS4uZGU3OTE0YjZmYzk5OWYxMmYyOGZjY2NmM2ZiMjFhNzAwOThkYWYx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTQ2LDkgKzQ2LDkg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIERPTVN0cmluZ0xpc3Q7Ci0gICAg
Y2xhc3MgRE9NV3JhcHBlclZpc2l0b3I7CiAgICAgY2xhc3MgRXZlbnRMaXN0ZW5lcjsKICAgICBj
bGFzcyBFdmVudFRhcmdldDsKKyAgICBjbGFzcyBFeHRlcm5hbFN0cmluZ1Zpc2l0b3I7CiAKICAg
ICAvLyBGSVhNRTogUmVtb3ZlIFY4QmluZGluZy4KICAgICBjbGFzcyBWOEJpbmRpbmcgewpAQCAt
MTQ2LDcgKzE0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBTdHJpbmdDYWNo
ZSogc3RyaW5nQ2FjaGUoKSB7IHJldHVybiAmbV9zdHJpbmdDYWNoZTsgfQogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCi0gICAgICAgIHZvaWQgdmlzaXRKU0V4dGVybmFsU3RyaW5ncyhET01XcmFwcGVy
VmlzaXRvciopOworICAgICAgICB2b2lkIHZpc2l0SlNFeHRlcm5hbFN0cmluZ3MoRXh0ZXJuYWxT
dHJpbmdWaXNpdG9yKik7CiAjZW5kaWYKICAgICAgICAgRE9NRGF0YUxpc3QmIGFsbFN0b3Jlcygp
IHsgcmV0dXJuIG1fZG9tRGF0YUxpc3Q7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0JpbmRpbmdWaXNpdG9ycy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0Jp
bmRpbmdWaXNpdG9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1MzBjOTI0NzMyYTYzZjg5Mzg0NzliNjVlNDU0
NzM4ZGQ1YjFmMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
QmluZGluZ1Zpc2l0b3JzLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQmluZGluZ1Zpc2l0
b3JzX2gKKyNkZWZpbmUgQmluZGluZ1Zpc2l0b3JzX2gKKworbmFtZXNwYWNlIFdURiB7CitjbGFz
cyBBcnJheUJ1ZmZlclZpZXc7CitjbGFzcyBTdHJpbmdJbXBsOworfQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIE5vZGU7CisKK2NsYXNzIE5vZGVXcmFwcGVyVmlzaXRvciB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB2b2lkIHZpc2l0Tm9kZShOb2RlKikgPSAwOworcHJvdGVjdGVkOgor
ICAgIHZpcnR1YWwgfk5vZGVXcmFwcGVyVmlzaXRvcigpIHsgfQorfTsKKworY2xhc3MgRXh0ZXJu
YWxTdHJpbmdWaXNpdG9yIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRKU0V4dGVy
bmFsU3RyaW5nKFdURjo6U3RyaW5nSW1wbCopID0gMDsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFs
IH5FeHRlcm5hbFN0cmluZ1Zpc2l0b3IoKSB7IH0KK307CisKKworY2xhc3MgRXh0ZXJuYWxBcnJh
eVZpc2l0b3IgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCB2aXNpdEpTRXh0ZXJuYWxBcnJh
eShXVEY6OkFycmF5QnVmZmVyVmlldyopID0gMDsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5F
eHRlcm5hbEFycmF5VmlzaXRvcigpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gQmluZGluZ1Zpc2l0b3JzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9ET01XcmFwcGVyVmlzaXRvci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0RPTVdyYXBwZXJWaXNpdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiZjI0
NmYzNTE4NjM5YTJiNTY2ZjVjODZlMWM2NzU2N2ViMjFiZjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVdy
YXBwZXJWaXNpdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBE
T01XcmFwcGVyVmlzaXRvcl9oCi0jZGVmaW5lIERPTVdyYXBwZXJWaXNpdG9yX2gKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBOb2RlOwotCi1jbGFzcyBET01XcmFwcGVyVmlzaXRvciB7
Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0Tm9kZShOb2RlKikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCB2aXNpdEpTRXh0ZXJuYWxTdHJpbmcoU3RyaW5nSW1wbCopID0gMDsKLXByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIH5ET01XcmFwcGVyVmlzaXRvcigpIHsgfQotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRE9NV3JhcHBlclZpc2l0b3JfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5kZXgg
MGZiMmFhYzMzYWE1MTE1YzQxYmM1MTBhMjI5MTg4MGU2MTBhM2EzNC4uYmZkZDEyMWNiNmU1NDVk
YTdhZDlkYzQ5YzhlNTg4ZDI2Y2E4ZjFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCkBAIC0zNCw4ICszNCw4IEBACiAKICNpbmNs
dWRlICJJbnNwZWN0b3JNZW1vcnlBZ2VudC5oIgogCisjaW5jbHVkZSAiQmluZGluZ1Zpc2l0b3Jz
LmgiCiAjaW5jbHVkZSAiQ2hhcmFjdGVyRGF0YS5oIgotI2luY2x1ZGUgIkRPTVdyYXBwZXJWaXNp
dG9yLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyTWFw
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTUwLDYgKzUwLDggQEAKICNpbmNsdWRlICJTY3Jp
cHRHQ0V2ZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKICNpbmNsdWRlICJTdHls
ZWRFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8d3Rm
L0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC02Niw2ICs2OCw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIG5hbWVzcGFjZSBNZW1vcnlCbG9ja05hbWUgewogc3RhdGljIGNvbnN0IGNoYXIg
anNIZWFwQWxsb2NhdGVkW10gPSAiSlNIZWFwQWxsb2NhdGVkIjsKIHN0YXRpYyBjb25zdCBjaGFy
IGpzSGVhcFVzZWRbXSA9ICJKU0hlYXBVc2VkIjsKK3N0YXRpYyBjb25zdCBjaGFyIGpzRXh0ZXJu
YWxSZXNvdXJjZXNbXSA9ICJKU0V4dGVybmFsUmVzb3VyY2VzIjsKK3N0YXRpYyBjb25zdCBjaGFy
IGpzRXh0ZXJuYWxBcnJheXNbXSA9ICJKU0V4dGVybmFsQXJyYXlzIjsKK3N0YXRpYyBjb25zdCBj
aGFyIGpzRXh0ZXJuYWxTdHJpbmdzW10gPSAiSlNFeHRlcm5hbFN0cmluZ3MiOwogc3RhdGljIGNv
bnN0IGNoYXIgaW5zcGVjdG9yRGF0YVtdID0gIkluc3BlY3RvckRhdGEiOwogc3RhdGljIGNvbnN0
IGNoYXIgbWVtb3J5Q2FjaGVbXSA9ICJNZW1vcnlDYWNoZSI7CiBzdGF0aWMgY29uc3QgY2hhciBw
cm9jZXNzUHJpdmF0ZU1lbW9yeVtdID0gIlByb2Nlc3NQcml2YXRlTWVtb3J5IjsKQEAgLTIxNiw3
ICsyMjEsNyBAQCBwcml2YXRlOgogICAgIENoYXJhY3RlckRhdGFTdGF0aXN0aWNzJiBtX2NoYXJh
Y3RlckRhdGFTdGF0aXN0aWNzOwogfTsKIAotY2xhc3MgQ291bnRlclZpc2l0b3IgOiBwdWJsaWMg
RE9NV3JhcHBlclZpc2l0b3IgeworY2xhc3MgQ291bnRlclZpc2l0b3IgOiBwdWJsaWMgTm9kZVdy
YXBwZXJWaXNpdG9yLCBwdWJsaWMgRXh0ZXJuYWxTdHJpbmdWaXNpdG9yIHsKIHB1YmxpYzoKICAg
ICBDb3VudGVyVmlzaXRvcihQYWdlKiBwYWdlKQogICAgICAgICA6IG1fcGFnZShwYWdlKQpAQCAt
MzA2LDYgKzMxMSwzNCBAQCBwcml2YXRlOgogICAgIGludCBtX3NoYXJlZFN0cmluZ1NpemU7CiB9
OwogCitjbGFzcyBFeHRlcm5hbFJlc291cmNlVmlzaXRvciA6IHB1YmxpYyBFeHRlcm5hbFN0cmlu
Z1Zpc2l0b3IsIHB1YmxpYyBFeHRlcm5hbEFycmF5VmlzaXRvciB7CitwdWJsaWM6CisgICAgRXh0
ZXJuYWxSZXNvdXJjZVZpc2l0b3IoKQorICAgICAgICA6IG1fanNFeHRlcm5hbFN0cmluZ1NpemUo
MCkKKyAgICAgICAgLCBtX2V4dGVybmFsQXJyYXlTaXplKDApCisgICAgeyB9CisKKyAgICBpbnQg
ZXh0ZXJuYWxTdHJpbmdTaXplKCkgY29uc3QgeyByZXR1cm4gbV9qc0V4dGVybmFsU3RyaW5nU2l6
ZTsgfQorICAgIGludCBleHRlcm5hbEFycmF5U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXh0ZXJu
YWxBcnJheVNpemU7IH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRKU0V4dGVy
bmFsQXJyYXkoQXJyYXlCdWZmZXJWaWV3KiBidWZmZXJWaWV3KQorICAgIHsKKyAgICAgICAgQXJy
YXlCdWZmZXIqIGJ1ZmZlciA9IGJ1ZmZlclZpZXctPmJ1ZmZlcigpLmdldCgpOworICAgICAgICBp
ZiAobV9hcnJheUJ1ZmZlcnMuYWRkKGJ1ZmZlcikuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIG1f
ZXh0ZXJuYWxBcnJheVNpemUgKz0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgfQorICAgIHZp
cnR1YWwgdm9pZCB2aXNpdEpTRXh0ZXJuYWxTdHJpbmcoU3RyaW5nSW1wbCogc3RyaW5nKQorICAg
IHsKKyAgICAgICAgaW50IHNpemUgPSBzdHJpbmdTaXplKHN0cmluZyk7CisgICAgICAgIG1fanNF
eHRlcm5hbFN0cmluZ1NpemUgKz0gc2l6ZTsKKyAgICB9CisKKyAgICBpbnQgbV9qc0V4dGVybmFs
U3RyaW5nU2l6ZTsKKyAgICBpbnQgbV9leHRlcm5hbEFycmF5U2l6ZTsKKyAgICBIYXNoU2V0PEFy
cmF5QnVmZmVyKj4gbV9hcnJheUJ1ZmZlcnM7Cit9OworCiB9IC8vIG5hbWVzcGFjZQogCiBJbnNw
ZWN0b3JNZW1vcnlBZ2VudDo6fkluc3BlY3Rvck1lbW9yeUFnZW50KCkKQEAgLTQwMCw2ICs0MzMs
MjcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IG1lbW9yeUNhY2hl
SW5mbygpCiAgICAgcmV0dXJuIG1lbW9yeUNhY2hlU3RhdHMucmVsZWFzZSgpOwogfQogCitzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4ganNFeHRlcm5hbFJlc291cmNlc0lu
Zm8oKQoreworICAgIEV4dGVybmFsUmVzb3VyY2VWaXNpdG9yIHZpc2l0b3I7CisgICAgU2NyaXB0
UHJvZmlsZXI6OnZpc2l0RXh0ZXJuYWxKU1N0cmluZ3MoJnZpc2l0b3IpOworICAgIFNjcmlwdFBy
b2ZpbGVyOjp2aXNpdEV4dGVybmFsSlNBcnJheXMoJnZpc2l0b3IpOworCisgICAgUmVmUHRyPElu
c3BlY3Rvck1lbW9yeUJsb2NrPiBleHRlcm5hbFJlc291cmNlc1N0YXRzID0gSW5zcGVjdG9yTWVt
b3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5QmxvY2tOYW1lOjpqc0V4dGVybmFsUmVz
b3VyY2VzKTsKKyAgICBleHRlcm5hbFJlc291cmNlc1N0YXRzLT5zZXRTaXplKHZpc2l0b3IuZXh0
ZXJuYWxTdHJpbmdTaXplKCkgKyB2aXNpdG9yLmV4dGVybmFsQXJyYXlTaXplKCkpOworICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+ID4gY2hpbGRyZW4g
PSBUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+OjpjcmVhdGUoKTsKKwor
ICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gZXh0ZXJuYWxTdHJpbmdTdGF0cyA9IElu
c3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKE1lbW9yeUJsb2NrTmFtZTo6anNF
eHRlcm5hbFN0cmluZ3MpOworICAgIGV4dGVybmFsU3RyaW5nU3RhdHMtPnNldFNpemUodmlzaXRv
ci5leHRlcm5hbFN0cmluZ1NpemUoKSk7CisgICAgY2hpbGRyZW4tPmFkZEl0ZW0oZXh0ZXJuYWxT
dHJpbmdTdGF0cyk7CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGV4dGVybmFs
QXJyYXlTdGF0cyA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKE1lbW9y
eUJsb2NrTmFtZTo6anNFeHRlcm5hbEFycmF5cyk7CisgICAgZXh0ZXJuYWxBcnJheVN0YXRzLT5z
ZXRTaXplKHZpc2l0b3IuZXh0ZXJuYWxBcnJheVNpemUoKSk7CisgICAgY2hpbGRyZW4tPmFkZEl0
ZW0oZXh0ZXJuYWxBcnJheVN0YXRzKTsKKworICAgIHJldHVybiBleHRlcm5hbFJlc291cmNlc1N0
YXRzLnJlbGVhc2UoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJvY2Vz
c01lbW9yeURpc3RyaWJ1dGlvbihFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlC
bG9jaz4mIHByb2Nlc3NNZW1vcnkpCiB7CiAgICAgc2l6ZV90IHByaXZhdGVCeXRlcyA9IDA7CkBA
IC00MTAsNiArNDY0LDcgQEAgdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJvY2Vzc01l
bW9yeURpc3RyaWJ1dGlvbihFcnJvclN0cmluZyosIFJlZlB0cjxJbnMKIAogICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+ID4gY2hpbGRyZW4gPSBUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+OjpjcmVhdGUoKTsKICAgICBjaGls
ZHJlbi0+YWRkSXRlbShqc0hlYXBJbmZvKCkpOworICAgIGNoaWxkcmVuLT5hZGRJdGVtKGpzRXh0
ZXJuYWxSZXNvdXJjZXNJbmZvKCkpOwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKGluc3BlY3RvckRh
dGEoKSk7CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0obWVtb3J5Q2FjaGVJbmZvKCkpOwogICAgIGNo
aWxkcmVuLT5hZGRJdGVtKHJlbmRlclRyZWVJbmZvKG1fcGFnZSkpOyAvLyBUT0RPOiBjb2xsZWN0
IGZvciBhbGwgcGFnZXM/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL05hdGl2ZU1lbW9yeVNuYXBzaG90Vmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzCmluZGV4IDk5YjgwYWFk
ZjU1NjI4OWVkZjc1ZDk2ZTM1OTA5ZDU5MWMyZDIyNzUuLmUxMjNiOGZhNTJhYWMxNTdmYzUwYjdh
Yzg2ZjI4Y2FlMTRlNzc5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzCkBAIC0yMTgs
NiArMjE4LDkgQEAgV2ViSW5zcGVjdG9yLk1lbW9yeUJsb2NrVmlld1Byb3BlcnRpZXMuX2luaXRp
YWxpemUgPSBmdW5jdGlvbigpCiAgICAgYWRkQmxvY2soImhzbCggIDAsICAwJSwgIDgwJSkiLCAi
T3RoZXIiLCAiT3RoZXIiKTsKICAgICBhZGRCbG9jaygiaHNsKCA5MCwgNjAlLCAgODAlKSIsICJK
U0hlYXBBbGxvY2F0ZWQiLCAiSmF2YVNjcmlwdCBoZWFwIik7CiAgICAgYWRkQmxvY2soImhzbCgg
OTAsIDgwJSwgIDgwJSkiLCAiSlNIZWFwVXNlZCIsICJVc2VkIEphdmFTY3JpcHQgaGVhcCIpOwor
ICAgIGFkZEJsb2NrKCJoc2woIDkwLCAzMCUsICA4MCUpIiwgIkpTRXh0ZXJuYWxSZXNvdXJjZXMi
LCAiSmF2YVNjcmlwdCBleHRlcm5hbCByZXNvdXJjZXMiKTsKKyAgICBhZGRCbG9jaygiaHNsKCA5
MCwgNDAlLCAgODAlKSIsICJKU0V4dGVybmFsQXJyYXlzIiwgIkphdmFTY3JpcHQgZXh0ZXJuYWwg
YXJyYXlzIik7CisgICAgYWRkQmxvY2soImhzbCggOTAsIDUwJSwgIDgwJSkiLCAiSlNFeHRlcm5h
bFN0cmluZ3MiLCAiSmF2YVNjcmlwdCBleHRlcm5hbCBzdHJpbmdzIik7CiAgICAgYWRkQmxvY2so
ImhzbCgyMTAsIDYwJSwgIDgwJSkiLCAiSW5zcGVjdG9yRGF0YSIsICJJbnNwZWN0b3IgZGF0YSIp
OwogICAgIGFkZEJsb2NrKCJoc2woIDMwLCA2MCUsICA4MCUpIiwgIk1lbW9yeUNhY2hlIiwgIk1l
bW9yeSBjYWNoZSByZXNvdXJjZXMiKTsKICAgICBhZGRCbG9jaygiaHNsKCA2MCwgNjAlLCAgODAl
KSIsICJSZW5kZXJUcmVlQWxsb2NhdGVkIiwgIlJlbmRlciB0cmVlIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149017</attachid>
            <date>2012-06-22 06:53:50 -0700</date>
            <delta_ts>2012-06-24 23:54:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89754-20120622175349.patch</filename>
            <type>text/plain</type>
            <size>29535</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmU5M2Q4MTMzZmUyODg5
ZGUyNGM1NDQ0OWIwN2E2OTdiNmQ0MzkwZC4uNzE4ZTYyNTkxMWVmYTdmNjcyOGFlZWNiNTlmZWU5
NTM2NDUxMzRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA2LTIyICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGFkZCBleHRlcm5hbCByZXNvdXJjZXMgc2l6ZSB0byB0aGUgbmF0aXZlIG1lbW9yeSBkaWFn
cmFtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTc1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpemUg
b2YgZXh0ZXJuYWwgc3RyaW5ncyBhbmQgYXJyYXlzIGlzIG5vdyByZXBvcnRlZCB0aHJvdWdoIHRo
ZSBpbnNwZWN0b3IKKyAgICAgICAgcHJvdG9jb2wgYW5kIGRpc3BsYXllZCBvbiB0aGUgbmF0aXZl
IG1lbW9yeSBjaGFydC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2ZpbGVyOjp2aXNp
dEpTRE9NV3JhcHBlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OnZpc2l0
RXh0ZXJuYWxKU1N0cmluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OnZp
c2l0RXh0ZXJuYWxKU0FycmF5cyk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0UHJvZmls
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OnZpc2l0SlNET01XcmFw
cGVycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9maWxlcjo6dmlzaXRFeHRlcm5hbEpT
U3RyaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9maWxlcjo6dmlzaXRFeHRlcm5h
bEpTQXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Nj
cmlwdFByb2ZpbGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNjcmlwdFByb2Zp
bGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQ29yZVN0cmluZ1Jlc291cmNlOjp2aXNpdFN0cmluZ3MpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnZpc2l0SlNFeHRlcm5hbFN0cmluZ3MpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL0Jp
bmRpbmdWaXNpdG9ycy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RP
TVdyYXBwZXJWaXNpdG9yLmguCisgICAgICAgIChXVEYpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChOb2RlV3JhcHBlclZpc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVdyYXBw
ZXJWaXNpdG9yOjp+Tm9kZVdyYXBwZXJWaXNpdG9yKToKKyAgICAgICAgKEV4dGVybmFsU3RyaW5n
VmlzaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpFeHRlcm5hbFN0cmluZ1Zpc2l0b3I6On5FeHRl
cm5hbFN0cmluZ1Zpc2l0b3IpOgorICAgICAgICAoRXh0ZXJuYWxBcnJheVZpc2l0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZXJuYWxBcnJheVZpc2l0b3I6On5FeHRlcm5hbEFycmF5VmlzaXRv
cik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAg
ICAgKE1lbW9yeUJsb2NrTmFtZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzRXh0ZXJuYWxSZXNvdXJjZXNJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL05hdGl2ZU1lbW9yeVNuYXBzaG90Vmlldy5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5NZW1vcnlCbG9ja1ZpZXdQcm9wZXJ0aWVzLl9pbml0aWFsaXplKToKKwog
MjAxMi0wNi0yMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMDk4Mi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDc4YWI5MWM4MzViMWE4ZTM4ZGIwZDkzZWUxNTQxYWEwNTRmMDMz
NjEuLjg2OTc0MjI0MjZlNmE4OTdhNjc4NmI1YTU3ZWYxMTUyN2Q5NWU2YWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjY0MSw2ICsyNjQxLDcgQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9pY3UvdW5pY29kZS91dGZfb2xkLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2ljdS91bmljb2RlL3V0eXBlcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pY3UvdW5pY29k
ZS91dmVyc2lvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQmluZGluZ1Zpc2l0b3Jz
LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcCBcCkBAIC0yNjUxLDcgKzI2NTIsNiBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2Rl
SGlnaGxpZ2h0ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9y
dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuaCBcCi0J
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVdyYXBwZXJWaXNpdG9yLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggYjI1MjBlYjFiMWE3NjZk
MWNiMzRkOTRlN2M2MmNiMDUyOWIxZDg4MS4uNjZhYzNhMDRkMDA3OTEwZjJkNjdkMTU0N2ZiOTQ1
ZWVmZGI5ZDEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0yMDM0LDEyICsyMDM0LDEyIEBAIEhFQURFUlMg
Kz0gXAogICAgIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmggXAogICAgIGh0bWwvdHJhY2svV2Vi
VlRUVG9rZW4uaCBcCiAgICAgaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuaCBcCisgICAgaW5z
cGVjdG9yL0JpbmRpbmdWaXNpdG9yLmggXAogICAgIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5o
IFwKICAgICBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmggXAogICAgIGluc3BlY3Rvci9E
T01FZGl0b3IuaCBcCiAgICAgaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5oIFwKICAgICBp
bnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmggXAotICAgIGluc3BlY3Rvci9ET01XcmFwcGVyVmlz
aXRvci5oIFwKICAgICBpbnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5LmggXAogICAgIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5oIFwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNl
LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDQzYjZlYTY4ZWJkYmM0ODFlZDAxZjJkOTAwMWFiNGIz
ZjgxMDgzNTYuLjZhZDI1M2YwM2U1NjEwYzg2MTExYjE0ZTg1NWZlNjUzYjdmMmY1YjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTI3NTIsNiArMjc1Miw3IEBACiAgICAgICAgICAgICAnaWN1L3VuaWNv
ZGUvdXRmX29sZC5oJywKICAgICAgICAgICAgICdpY3UvdW5pY29kZS91dHlwZXMuaCcsCiAgICAg
ICAgICAgICAnaWN1L3VuaWNvZGUvdXZlcnNpb24uaCcsCisgICAgICAgICAgICAnaW5zcGVjdG9y
L0JpbmRpbmdWaXNpdG9ycy5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaCcsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAnLApAQCAtMjc2Miw3ICsy
NzYzLDYgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmgnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmgnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9E
T01XcmFwcGVyVmlzaXRvci5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSWRlbnRpZmllcnNG
YWN0b3J5LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5o
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZWVkODU0MTk3MmZh
YWM4MTkxNDkxMGY0NmY1MDE1MWQzODFjZWE3Yy4uMGQ2Nzc4YjE3ZjE4NWFmOTU4YTk5ODkyNWE0
NjNiMzIxOWQyODI2YSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKQEAgLTczMTgzLDYgKzczMTgzLDEwIEBACiAJCQlOYW1lPSJpbnNwZWN0b3IiCiAJ
CQk+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEJpbmRpbmdWaXNp
dG9ycy5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIu
LlxpbnNwZWN0b3JcQ29uc29sZU1lc3NhZ2UuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KQEAgLTczMzAzLDEwICs3MzMwNyw2IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZp
bGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxET01XcmFwcGVyVmlzaXRvci5oIgot
CQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0
b3JcSWRlbnRpZmllcnNGYWN0b3J5LmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMmFjYjBjYjAwNTQ4YTI5YzI5NTY2MTQwNjUzNWZlY2Y1NzE0OTA4ZS4uYmU0ZWUzMDU1
NjAyNTcwOTk0MzJiOGZhNDVkNWJiMmMwNzY5ZTlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjExOSw3ICs2MTE5LDcgQEAK
IAkJRjM0NzQyRTgxMzQzNjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNDc0MkU2
MTM0MzYzNTAwMDUzMUJDMiAvKiBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi87IH07CiAJ
CUYzNDc0MkU5MTM0MzYzNTAwMDUzMUJDMiAvKiBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM0NzQyRTcxMzQz
NjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmggKi87IH07CiAJCUYzNTBC
NzM1MTNGMTM3N0QwMDg4MEM0MyAvKiBJbnN0cnVtZW50aW5nQWdlbnRzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNTBCNzM0MTNGMTM3N0QwMDg4
MEM0MyAvKiBJbnN0cnVtZW50aW5nQWdlbnRzLmNwcCAqLzsgfTsKLQkJRjM1QUU1QUMxNDkyNUY1
QjAwNEQ1Nzc2IC8qIERPTVdyYXBwZXJWaXNpdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzVBRTVBQjE0OTI1RjVCMDA0RDU3NzYgLyogRE9NV3Jh
cHBlclZpc2l0b3IuaCAqLzsgfTsKKwkJRjM1QUU1QUMxNDkyNUY1QjAwNEQ1Nzc2IC8qIEJpbmRp
bmdWaXNpdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjM1QUU1QUIxNDkyNUY1QjAwNEQ1Nzc2IC8qIEJpbmRpbmdWaXNpdG9ycy5oICovOyB9Owog
CQlGMzY0NEFGRjExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM2NDRBRkQxMTE5ODA1OTAw
RTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmNwcCAqLzsgfTsKIAkJRjM2NDRCMDAxMTE5ODA1OTAw
RTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGMzY0NEFGRTExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3Jp
cHQuaCAqLzsgfTsKIAkJRjM2RTA3QTQxMzU4QThCRTAwQUFDQkM5IC8qIFdvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjM2RTA3QTIxMzU4QThCRTAwQUFDQkM5IC8qIFdvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXIuY3BwICovOyB9OwpAQCAtMTMzODUsNyArMTMzODUsNyBAQAogCQlGMzQ3NDJFNjEzNDM2MzUw
MDA1MzFCQzIgLyogV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGMzQ3NDJFNzEzNDM2MzUwMDA1MzFCQzIgLyogV29ya2Vy
U2NyaXB0RGVidWdTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29y
a2VyU2NyaXB0RGVidWdTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjM1
MEI3MzQxM0YxMzc3RDAwODgwQzQzIC8qIEluc3RydW1lbnRpbmdBZ2VudHMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zdHJ1bWVudGluZ0FnZW50cy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUYzNUFFNUFCMTQ5MjVGNUIwMDRENTc3NiAvKiBE
T01XcmFwcGVyVmlzaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01X
cmFwcGVyVmlzaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGMzVBRTVBQjE0
OTI1RjVCMDA0RDU3NzYgLyogQmluZGluZ1Zpc2l0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEJpbmRpbmdWaXNpdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGMzY0NEFGRDExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRTY3JpcHQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzY0NEFGRTExMTk4MDU5MDBFMEQ1MzcgLyogSW5q
ZWN0ZWRTY3JpcHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRT
Y3JpcHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjM2RTA3QTIxMzU4QThCRTAw
QUFDQkM5IC8qIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDQxMSw2ICsxNDQxMSw3IEBACiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFDODFCOTU5MEU5NzMzMDgwMDI2NkUwNyAv
KiBmcm9udC1lbmQgKi8sCisJCQkJRjM1QUU1QUIxNDkyNUY1QjAwNEQ1Nzc2IC8qIEJpbmRpbmdW
aXNpdG9ycy5oICovLAogCQkJCTQxRjA2MThEMEY1RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVz
c2FnZS5jcHAgKi8sCiAJCQkJNDFGMDYxOEMwRjVGMDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNz
YWdlLmggKi8sCiAJCQkJNTkxMDJGQjkxNDMyN0QzQjAwM0M5RDA0IC8qIENvbnRlbnRTZWFyY2hV
dGlscy5jcHAgKi8sCkBAIC0xNDQyMSw3ICsxNDQyMiw2IEBACiAJCQkJNEYxNDQyMjcxMzM5RkQ2
MjAwRTBENkY4IC8qIERPTU5vZGVIaWdobGlnaHRlci5oICovLAogCQkJCTdBNTQ4ODE2MTRFNDMy
QTEwMDZBRTA1QSAvKiBET01QYXRjaFN1cHBvcnQuY3BwICovLAogCQkJCTdBNTQ4ODE1MTRFNDMy
QTEwMDZBRTA1QSAvKiBET01QYXRjaFN1cHBvcnQuaCAqLywKLQkJCQlGMzVBRTVBQjE0OTI1RjVC
MDA0RDU3NzYgLyogRE9NV3JhcHBlclZpc2l0b3IuaCAqLywKIAkJCQk1OTEzQTIzRjEzRDQ5RUJB
MDBGNUIwNUMgLyogSWRlbnRpZmllcnNGYWN0b3J5LmNwcCAqLywKIAkJCQk1OTEzQTI0MDEzRDQ5
RUJBMDBGNUIwNUMgLyogSWRlbnRpZmllcnNGYWN0b3J5LmggKi8sCiAJCQkJRjM2NDRBRkQxMTE5
ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmNwcCAqLywKQEAgLTIyMDMxLDYgKzIyMDMx
LDcgQEAKIAkJCQk5MzgxOTIwNTBGODdFMUVDMDBENTM1MkEgLyogQmluYXJ5UHJvcGVydHlMaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNjIyQThGQjEyMkM0NEE2MDBBNzg1QjMgLyogQmluZGlu
Z1NlY3VyaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNjIyQThGRDEyMkM0NEE2MDBBNzg1QjMg
LyogQmluZGluZ1NlY3VyaXR5QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjM1QUU1QUMxNDky
NUY1QjAwNEQ1Nzc2IC8qIEJpbmRpbmdWaXNpdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwOEQxMkIwMjZGNzAwQzFBMzU5IC8qIEJpcXVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwMjUxMkIwMjY3NjAwQzFBMzU5IC8qIEJpcXVhZERTUEtlcm5lbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkRDNTRGMDUxMzk5QjBEQTAwOEQ5MTE3IC8qIEJpcXVhZEZpbHRlck5vZGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjI5MTUsNyArMjI5MTYsNiBAQAogCQkJCTk3RDJBRDA0MTRCODIzQTYw
MDkzREYzMiAvKiBET01XaW5kb3dQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODlGNjBC
MTExNTdGNjg2RTAwNzVFMTU3IC8qIERPTVdpbmRvd1F1b3RhLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOENDQkI0OTE1MUY4MzE2MDBBQjdDRTkgLyogRE9NV2luZG93V2ViRGF0YWJhc2UuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUYzNUFFNUFDMTQ5MjVGNUIwMDRENTc3NiAvKiBET01XcmFwcGVyVmlz
aXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1M0RBMkUxMTQzMTIxRTAwMEQ4MTdFIC8qIERP
TVdyYXBwZXJXb3JsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExRDEzODAwQTUzMjU1MjAwNjRC
RjVGIC8qIERPTVhQYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTgwMTVDRTBBQkNBNzVEMDA4
MDU4OEQgLyogRE9NWFBhdGhFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmgKaW5kZXggMDRhNjE1ZGRiZDg0OWIyZjUx
MTViNzM3MDdlNGM2ZmU5ZmM2N2I5NC4uNTc2ODUzNTRmZDIyZTYwZGE1MWI1Yjg4YjViYTMyNjUw
YTA3Njg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJv
ZmlsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5o
CkBAIC0zNiw3ICszNiw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRE9NV3Jh
cHBlclZpc2l0b3I7CitjbGFzcyBFeHRlcm5hbEFycmF5VmlzaXRvcjsKK2NsYXNzIEV4dGVybmFs
U3RyaW5nVmlzaXRvcjsKK2NsYXNzIE5vZGVXcmFwcGVyVmlzaXRvcjsKIGNsYXNzIFBhZ2U7CiBj
bGFzcyBTY3JpcHRPYmplY3Q7CiBjbGFzcyBTY3JpcHRWYWx1ZTsKQEAgLTcyLDggKzc0LDkgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIGlzU2FtcGxpbmcoKSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHN0YXRpYyBib29sIGhhc0hlYXBQcm9maWxlcigpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCB0aGlzIGNvdW50ZXIgZm9yIEpTQy4gU2VlIGJ1ZyA3MzkzNiBm
b3IgbW9yZSBkZXRhaWxzLgotICAgIHN0YXRpYyB2b2lkIHZpc2l0SlNET01XcmFwcGVycyhET01X
cmFwcGVyVmlzaXRvciopIHsgfQotICAgIHN0YXRpYyB2b2lkIHZpc2l0RXh0ZXJuYWxKU1N0cmlu
Z3MoRE9NV3JhcHBlclZpc2l0b3IqKSB7IH0KKyAgICBzdGF0aWMgdm9pZCB2aXNpdE5vZGVXcmFw
cGVycyhOb2RlV3JhcHBlclZpc2l0b3IqKSB7IH0KKyAgICBzdGF0aWMgdm9pZCB2aXNpdEV4dGVy
bmFsU3RyaW5ncyhFeHRlcm5hbFN0cmluZ1Zpc2l0b3IqKSB7IH0KKyAgICBzdGF0aWMgdm9pZCB2
aXNpdEV4dGVybmFsQXJyYXlzKEV4dGVybmFsQXJyYXlWaXNpdG9yKikgeyB9CiAgICAgc3RhdGlj
IHNpemVfdCBwcm9maWxlclNuYXBzaG90c1NpemUoKSB7IHJldHVybiAwOyB9CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAKaW5kZXggODAyMTYx
YmM3ZjY5YTg5NmExYmFiNjBkMzg0NmE5ZTJlOGU3NzNlNC4uNTdiYjgwODBlZmUxMDM1NmU4NmI4
Y2MwNzE1ZWJlMGFjZWIwZGRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0UHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdFByb2ZpbGVyLmNwcApAQCAtMzIsOSArMzIsMTAgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCiAKLSNpbmNsdWRlICJET01XcmFwcGVyVmlz
aXRvci5oIgorI2luY2x1ZGUgIkJpbmRpbmdWaXNpdG9ycy5oIgogI2luY2x1ZGUgIlJldGFpbmVk
RE9NSW5mby5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgIlY4QXJyYXlC
dWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhET01NYXAu
aCIKICNpbmNsdWRlICJWOE5vZGUuaCIKQEAgLTE3NSwyNSArMTc2LDQ3IEBAIHZvaWQgU2NyaXB0
UHJvZmlsZXI6OmluaXRpYWxpemUoKQogICAgIHY4OjpIZWFwUHJvZmlsZXI6OkRlZmluZVdyYXBw
ZXJDbGFzcyh2OERPTVN1YnRyZWVDbGFzc0lkLCAmcmV0YWluZWRET01JbmZvKTsKIH0KIAotdm9p
ZCBTY3JpcHRQcm9maWxlcjo6dmlzaXRKU0RPTVdyYXBwZXJzKERPTVdyYXBwZXJWaXNpdG9yKiB2
aXNpdG9yKQordm9pZCBTY3JpcHRQcm9maWxlcjo6dmlzaXROb2RlV3JhcHBlcnMoTm9kZVdyYXBw
ZXJWaXNpdG9yKiB2aXNpdG9yKQogewogICAgIGNsYXNzIFZpc2l0b3JBZGFwdGVyIDogcHVibGlj
IERPTVdyYXBwZXJNYXA8Tm9kZT46OlZpc2l0b3IgewogICAgIHB1YmxpYzoKLSAgICAgICAgVmlz
aXRvckFkYXB0ZXIoRE9NV3JhcHBlclZpc2l0b3IqIHZpc2l0b3IpIDogbV92aXNpdG9yKHZpc2l0
b3IpIHsgfQorICAgICAgICBWaXNpdG9yQWRhcHRlcihOb2RlV3JhcHBlclZpc2l0b3IqIHZpc2l0
b3IpIDogbV92aXNpdG9yKHZpc2l0b3IpIHsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNp
dERPTVdyYXBwZXIoRE9NRGF0YVN0b3JlKiwgTm9kZSogbm9kZSwgdjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdD4pCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fdmlzaXRvci0+dmlzaXROb2RlKG5v
ZGUpOwogICAgICAgICB9CiAgICAgcHJpdmF0ZToKLSAgICAgICAgRE9NV3JhcHBlclZpc2l0b3Iq
IG1fdmlzaXRvcjsKKyAgICAgICAgTm9kZVdyYXBwZXJWaXNpdG9yKiBtX3Zpc2l0b3I7CiAgICAg
fSBhZGFwdGVyKHZpc2l0b3IpOwogICAgIHZpc2l0RE9NTm9kZXMoJmFkYXB0ZXIpOwogfQogCi12
b2lkIFNjcmlwdFByb2ZpbGVyOjp2aXNpdEV4dGVybmFsSlNTdHJpbmdzKERPTVdyYXBwZXJWaXNp
dG9yKiB2aXNpdG9yKQordm9pZCBTY3JpcHRQcm9maWxlcjo6dmlzaXRFeHRlcm5hbFN0cmluZ3Mo
RXh0ZXJuYWxTdHJpbmdWaXNpdG9yKiB2aXNpdG9yKQogewotICAgIFY4QmluZGluZ1Blcklzb2xh
dGVEYXRhOjpjdXJyZW50KCktPnZpc2l0SlNFeHRlcm5hbFN0cmluZ3ModmlzaXRvcik7CisgICAg
VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+dmlzaXRFeHRlcm5hbFN0cmluZ3Mo
dmlzaXRvcik7Cit9CisKK3ZvaWQgU2NyaXB0UHJvZmlsZXI6OnZpc2l0RXh0ZXJuYWxBcnJheXMo
RXh0ZXJuYWxBcnJheVZpc2l0b3IqIHZpc2l0b3IpCit7CisgICAgY2xhc3MgVmlzaXRvckFkYXB0
ZXIgOiBwdWJsaWMgRE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRvciB7CisgICAgcHVibGljOgor
ICAgICAgICBWaXNpdG9yQWRhcHRlcihFeHRlcm5hbEFycmF5VmlzaXRvciogdmlzaXRvcikgOiBt
X3Zpc2l0b3IodmlzaXRvcikgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0RE9NV3Jh
cHBlcihET01EYXRhU3RvcmUqLCB2b2lkKiBpbXBsLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0
PiB2OE9iamVjdCkKKyAgICAgICAgeworICAgICAgICAgICAgV3JhcHBlclR5cGVJbmZvKiB0eXBl
ID0gVjhET01XcmFwcGVyOjpkb21XcmFwcGVyVHlwZSh2OE9iamVjdCk7CisgICAgICAgICAgICBp
ZiAoIXR5cGUtPmlzU3ViY2xhc3MoJlY4QXJyYXlCdWZmZXJWaWV3OjppbmZvKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBBcnJheUJ1ZmZlclZpZXcqIGFycmF5QnVmZmVy
VmlldyA9IFY4QXJyYXlCdWZmZXJWaWV3Ojp0b05hdGl2ZSh2OE9iamVjdCk7CisgICAgICAgICAg
ICBtX3Zpc2l0b3ItPnZpc2l0SlNFeHRlcm5hbEFycmF5KGFycmF5QnVmZmVyVmlldyk7CisgICAg
ICAgIH0KKyAgICBwcml2YXRlOgorICAgICAgICBFeHRlcm5hbEFycmF5VmlzaXRvciogbV92aXNp
dG9yOworICAgIH0gYWRhcHRlcih2aXNpdG9yKTsKKworICAgIGdldERPTU9iamVjdE1hcCgpLnZp
c2l0KDAsICZhZGFwdGVyKTsKKwogfQogCiBzaXplX3QgU2NyaXB0UHJvZmlsZXI6OnByb2ZpbGVy
U25hcHNob3RzU2l6ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRQcm9maWxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmls
ZXIuaAppbmRleCAzMzI2ZGI0NDJmNGM2ZjgwMzdlNmViMTgzNmZmNTkxZTViMjJkNTU3Li4yNWY2
ZTEyOWViMmQ5MDg1NWY4OWEzNTQ3YTJmOTk3MjIzNjVhNjMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmgKQEAgLTQwLDcgKzQwLDkgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBET01XcmFwcGVyVmlzaXRvcjsKK2NsYXNzIEV4dGVybmFs
QXJyYXlWaXNpdG9yOworY2xhc3MgRXh0ZXJuYWxTdHJpbmdWaXNpdG9yOworY2xhc3MgTm9kZVdy
YXBwZXJWaXNpdG9yOwogY2xhc3MgUGFnZTsKIGNsYXNzIFNjcmlwdE9iamVjdDsKIGNsYXNzIFNj
cmlwdFZhbHVlOwpAQCAtNzYsOCArNzgsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNT
YW1wbGluZygpIHsgcmV0dXJuIHRydWU7IH0KICAgICBzdGF0aWMgYm9vbCBoYXNIZWFwUHJvZmls
ZXIoKSB7IHJldHVybiB0cnVlOyB9CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwotICAg
IHN0YXRpYyB2b2lkIHZpc2l0SlNET01XcmFwcGVycyhET01XcmFwcGVyVmlzaXRvciopOwotICAg
IHN0YXRpYyB2b2lkIHZpc2l0RXh0ZXJuYWxKU1N0cmluZ3MoRE9NV3JhcHBlclZpc2l0b3IqKTsK
KyAgICBzdGF0aWMgdm9pZCB2aXNpdE5vZGVXcmFwcGVycyhOb2RlV3JhcHBlclZpc2l0b3IqKTsK
KyAgICBzdGF0aWMgdm9pZCB2aXNpdEV4dGVybmFsU3RyaW5ncyhFeHRlcm5hbFN0cmluZ1Zpc2l0
b3IqKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdEV4dGVybmFsQXJyYXlzKEV4dGVybmFsQXJyYXlW
aXNpdG9yKik7CiAgICAgc3RhdGljIHNpemVfdCBwcm9maWxlclNuYXBzaG90c1NpemUoKTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmluZGV4IDk3NGRhMDVj
YTkyZGM1NzJkZWNlNDgyYmEyOGVkYTNlZmNhY2Y3ZmIuLjY5OTAxODY5MmFhZWViMWNlMDk4OTc4
YTFhZWQzYzI4ZTBiMmMzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5n
LmNwcApAQCAtMzEsOCArMzEsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlY4
QmluZGluZy5oIgogCisjaW5jbHVkZSAiQmluZGluZ1Zpc2l0b3JzLmgiCiAjaW5jbHVkZSAiRE9N
U3RyaW5nTGlzdC5oIgotI2luY2x1ZGUgIkRPTVdyYXBwZXJWaXNpdG9yLmgiCiAjaW5jbHVkZSAi
RWxlbWVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUXVhbGlm
aWVkTmFtZS5oIgpAQCAtMTUwLDcgKzE1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1f
YXRvbWljU3RyaW5nOwogICAgIH0KIAotICAgIHZvaWQgdmlzaXRTdHJpbmdzKERPTVdyYXBwZXJW
aXNpdG9yKiB2aXNpdG9yKQorICAgIHZvaWQgdmlzaXRTdHJpbmdzKEV4dGVybmFsU3RyaW5nVmlz
aXRvciogdmlzaXRvcikKICAgICB7CiAgICAgICAgIHZpc2l0b3ItPnZpc2l0SlNFeHRlcm5hbFN0
cmluZyhtX3BsYWluU3RyaW5nLmltcGwoKSk7CiAgICAgICAgIGlmIChtX3BsYWluU3RyaW5nLmlt
cGwoKSAhPSBtX2F0b21pY1N0cmluZy5pbXBsKCkgJiYgIW1fYXRvbWljU3RyaW5nLmlzTnVsbCgp
KQpAQCAtMTc4LDEyICsxNzgsMTIgQEAgcHJpdmF0ZToKIH07CiAKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotdm9pZCBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6dmlzaXRKU0V4dGVybmFsU3RyaW5n
cyhET01XcmFwcGVyVmlzaXRvciogdmlzaXRvcikKK3ZvaWQgVjhCaW5kaW5nUGVySXNvbGF0ZURh
dGE6OnZpc2l0RXh0ZXJuYWxTdHJpbmdzKEV4dGVybmFsU3RyaW5nVmlzaXRvciogdmlzaXRvcikK
IHsKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgY2xhc3MgVmlzaXRvcklt
cGwgOiBwdWJsaWMgdjg6OkV4dGVybmFsUmVzb3VyY2VWaXNpdG9yIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIFZpc2l0b3JJbXBsKERPTVdyYXBwZXJWaXNpdG9yKiB2aXNpdG9yKSA6IG1fdmlzaXRv
cih2aXNpdG9yKSB7IH0KKyAgICAgICAgVmlzaXRvckltcGwoRXh0ZXJuYWxTdHJpbmdWaXNpdG9y
KiB2aXNpdG9yKSA6IG1fdmlzaXRvcih2aXNpdG9yKSB7IH0KICAgICAgICAgdmlydHVhbCB+Vmlz
aXRvckltcGwoKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIFZpc2l0RXh0ZXJuYWxTdHJpbmco
djg6OkhhbmRsZTx2ODo6U3RyaW5nPiBzdHJpbmcpCiAgICAgICAgIHsKQEAgLTE5Miw3ICsxOTIs
NyBAQCB2b2lkIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjp2aXNpdEpTRXh0ZXJuYWxTdHJpbmdz
KERPTVdyYXBwZXJWaXNpdG9yKiB2aXNpdG9yKQogICAgICAgICAgICAgICAgIHJlc291cmNlLT52
aXNpdFN0cmluZ3MobV92aXNpdG9yKTsKICAgICAgICAgfQogICAgIHByaXZhdGU6Ci0gICAgICAg
IERPTVdyYXBwZXJWaXNpdG9yKiBtX3Zpc2l0b3I7CisgICAgICAgIEV4dGVybmFsU3RyaW5nVmlz
aXRvciogbV92aXNpdG9yOwogICAgIH0gdjhWaXNpdG9yKHZpc2l0b3IpOwogICAgIHY4OjpWODo6
VmlzaXRFeHRlcm5hbFJlc291cmNlcygmdjhWaXNpdG9yKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggZjg3ZTRiOTI0NGRhMzU0MjczZTRjYTlkYmQxNmFiODA0
YzNkMzE3YS4uMTAyOTZhNzAwYjVlMzQ2MDQwOWVkZWU4NDM4ZTk5MDJlMzkwNmI5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTQ2LDkgKzQ2LDkgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIERPTVN0cmluZ0xpc3Q7Ci0gICAgY2xhc3MgRE9N
V3JhcHBlclZpc2l0b3I7CiAgICAgY2xhc3MgRXZlbnRMaXN0ZW5lcjsKICAgICBjbGFzcyBFdmVu
dFRhcmdldDsKKyAgICBjbGFzcyBFeHRlcm5hbFN0cmluZ1Zpc2l0b3I7CiAKICAgICAvLyBGSVhN
RTogUmVtb3ZlIFY4QmluZGluZy4KICAgICBjbGFzcyBWOEJpbmRpbmcgewpAQCAtMTQ2LDcgKzE0
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBTdHJpbmdDYWNoZSogc3RyaW5n
Q2FjaGUoKSB7IHJldHVybiAmbV9zdHJpbmdDYWNoZTsgfQogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0gICAgICAgIHZvaWQgdmlzaXRKU0V4dGVybmFsU3RyaW5ncyhET01XcmFwcGVyVmlzaXRvciop
OworICAgICAgICB2b2lkIHZpc2l0RXh0ZXJuYWxTdHJpbmdzKEV4dGVybmFsU3RyaW5nVmlzaXRv
ciopOwogI2VuZGlmCiAgICAgICAgIERPTURhdGFMaXN0JiBhbGxTdG9yZXMoKSB7IHJldHVybiBt
X2RvbURhdGFMaXN0OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9C
aW5kaW5nVmlzaXRvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9CaW5kaW5nVmlzaXRv
cnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43NTMwYzkyNDczMmE2M2Y4OTM4NDc5YjY1ZTQ1NDczOGRkNWIxZjI4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0JpbmRpbmdWaXNp
dG9ycy5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEJpbmRpbmdWaXNpdG9yc19oCisjZGVm
aW5lIEJpbmRpbmdWaXNpdG9yc19oCisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgQXJyYXlCdWZm
ZXJWaWV3OworY2xhc3MgU3RyaW5nSW1wbDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBOb2RlOworCitjbGFzcyBOb2RlV3JhcHBlclZpc2l0b3IgeworcHVibGljOgorICAgIHZp
cnR1YWwgdm9pZCB2aXNpdE5vZGUoTm9kZSopID0gMDsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFs
IH5Ob2RlV3JhcHBlclZpc2l0b3IoKSB7IH0KK307CisKK2NsYXNzIEV4dGVybmFsU3RyaW5nVmlz
aXRvciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHZpc2l0SlNFeHRlcm5hbFN0cmluZyhX
VEY6OlN0cmluZ0ltcGwqKSA9IDA7Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+RXh0ZXJuYWxT
dHJpbmdWaXNpdG9yKCkgeyB9Cit9OworCisKK2NsYXNzIEV4dGVybmFsQXJyYXlWaXNpdG9yIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRKU0V4dGVybmFsQXJyYXkoV1RGOjpBcnJh
eUJ1ZmZlclZpZXcqKSA9IDA7Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+RXh0ZXJuYWxBcnJh
eVZpc2l0b3IoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEJpbmRpbmdWaXNpdG9yc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NV3JhcHBlclZpc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01XcmFwcGVy
VmlzaXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmYyNDZmMzUxODYzOWEy
YjU2NmY1Yzg2ZTFjNjc1NjdlYjIxYmYyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01XcmFwcGVyVmlzaXRv
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRE9NV3JhcHBlclZp
c2l0b3JfaAotI2RlZmluZSBET01XcmFwcGVyVmlzaXRvcl9oCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgTm9kZTsKLQotY2xhc3MgRE9NV3JhcHBlclZpc2l0b3IgewotcHVibGljOgot
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdE5vZGUoTm9kZSopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
dmlzaXRKU0V4dGVybmFsU3RyaW5nKFN0cmluZ0ltcGwqKSA9IDA7Ci1wcm90ZWN0ZWQ6Ci0gICAg
dmlydHVhbCB+RE9NV3JhcHBlclZpc2l0b3IoKSB7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIERPTVdyYXBwZXJWaXNpdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IDBmYjJhYWMzM2Fh
NTExNWM0MWJjNTEwYTIyOTE4ODBlNjEwYTNhMzQuLjczNjJjZGIxOTJkYTc4ZGNjMzljYjgwNTY5
N2M5NWIyNzNhZjg3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck1lbW9yeUFnZW50LmNwcApAQCAtMzQsOCArMzQsOCBAQAogCiAjaW5jbHVkZSAiSW5zcGVj
dG9yTWVtb3J5QWdlbnQuaCIKIAorI2luY2x1ZGUgIkJpbmRpbmdWaXNpdG9ycy5oIgogI2luY2x1
ZGUgIkNoYXJhY3RlckRhdGEuaCIKLSNpbmNsdWRlICJET01XcmFwcGVyVmlzaXRvci5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lck1hcC5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCkBAIC01MCw2ICs1MCw4IEBACiAjaW5jbHVkZSAiU2NyaXB0R0NFdmVudC5o
IgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5o
IgorI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZl
clZpZXcuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KIApAQCAtNjYsNiArNjgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBu
YW1lc3BhY2UgTWVtb3J5QmxvY2tOYW1lIHsKIHN0YXRpYyBjb25zdCBjaGFyIGpzSGVhcEFsbG9j
YXRlZFtdID0gIkpTSGVhcEFsbG9jYXRlZCI7CiBzdGF0aWMgY29uc3QgY2hhciBqc0hlYXBVc2Vk
W10gPSAiSlNIZWFwVXNlZCI7CitzdGF0aWMgY29uc3QgY2hhciBqc0V4dGVybmFsUmVzb3VyY2Vz
W10gPSAiSlNFeHRlcm5hbFJlc291cmNlcyI7CitzdGF0aWMgY29uc3QgY2hhciBqc0V4dGVybmFs
QXJyYXlzW10gPSAiSlNFeHRlcm5hbEFycmF5cyI7CitzdGF0aWMgY29uc3QgY2hhciBqc0V4dGVy
bmFsU3RyaW5nc1tdID0gIkpTRXh0ZXJuYWxTdHJpbmdzIjsKIHN0YXRpYyBjb25zdCBjaGFyIGlu
c3BlY3RvckRhdGFbXSA9ICJJbnNwZWN0b3JEYXRhIjsKIHN0YXRpYyBjb25zdCBjaGFyIG1lbW9y
eUNhY2hlW10gPSAiTWVtb3J5Q2FjaGUiOwogc3RhdGljIGNvbnN0IGNoYXIgcHJvY2Vzc1ByaXZh
dGVNZW1vcnlbXSA9ICJQcm9jZXNzUHJpdmF0ZU1lbW9yeSI7CkBAIC0yMTYsNyArMjIxLDcgQEAg
cHJpdmF0ZToKICAgICBDaGFyYWN0ZXJEYXRhU3RhdGlzdGljcyYgbV9jaGFyYWN0ZXJEYXRhU3Rh
dGlzdGljczsKIH07CiAKLWNsYXNzIENvdW50ZXJWaXNpdG9yIDogcHVibGljIERPTVdyYXBwZXJW
aXNpdG9yIHsKK2NsYXNzIENvdW50ZXJWaXNpdG9yIDogcHVibGljIE5vZGVXcmFwcGVyVmlzaXRv
ciwgcHVibGljIEV4dGVybmFsU3RyaW5nVmlzaXRvciB7CiBwdWJsaWM6CiAgICAgQ291bnRlclZp
c2l0b3IoUGFnZSogcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkKQEAgLTMwNiw2ICszMTEs
MzQgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9zaGFyZWRTdHJpbmdTaXplOwogfTsKIAorY2xhc3Mg
RXh0ZXJuYWxSZXNvdXJjZVZpc2l0b3IgOiBwdWJsaWMgRXh0ZXJuYWxTdHJpbmdWaXNpdG9yLCBw
dWJsaWMgRXh0ZXJuYWxBcnJheVZpc2l0b3IgeworcHVibGljOgorICAgIEV4dGVybmFsUmVzb3Vy
Y2VWaXNpdG9yKCkKKyAgICAgICAgOiBtX2pzRXh0ZXJuYWxTdHJpbmdTaXplKDApCisgICAgICAg
ICwgbV9leHRlcm5hbEFycmF5U2l6ZSgwKQorICAgIHsgfQorCisgICAgaW50IGV4dGVybmFsU3Ry
aW5nU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fanNFeHRlcm5hbFN0cmluZ1NpemU7IH0KKyAgICBp
bnQgZXh0ZXJuYWxBcnJheVNpemUoKSBjb25zdCB7IHJldHVybiBtX2V4dGVybmFsQXJyYXlTaXpl
OyB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHZpc2l0SlNFeHRlcm5hbEFycmF5KEFy
cmF5QnVmZmVyVmlldyogYnVmZmVyVmlldykKKyAgICB7CisgICAgICAgIEFycmF5QnVmZmVyKiBi
dWZmZXIgPSBidWZmZXJWaWV3LT5idWZmZXIoKS5nZXQoKTsKKyAgICAgICAgaWYgKG1fYXJyYXlC
dWZmZXJzLmFkZChidWZmZXIpLmlzTmV3RW50cnkpCisgICAgICAgICAgICBtX2V4dGVybmFsQXJy
YXlTaXplICs9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQg
dmlzaXRKU0V4dGVybmFsU3RyaW5nKFN0cmluZ0ltcGwqIHN0cmluZykKKyAgICB7CisgICAgICAg
IGludCBzaXplID0gc3RyaW5nU2l6ZShzdHJpbmcpOworICAgICAgICBtX2pzRXh0ZXJuYWxTdHJp
bmdTaXplICs9IHNpemU7CisgICAgfQorCisgICAgaW50IG1fanNFeHRlcm5hbFN0cmluZ1NpemU7
CisgICAgaW50IG1fZXh0ZXJuYWxBcnJheVNpemU7CisgICAgSGFzaFNldDxBcnJheUJ1ZmZlcio+
IG1fYXJyYXlCdWZmZXJzOworfTsKKwogfSAvLyBuYW1lc3BhY2UKIAogSW5zcGVjdG9yTWVtb3J5
QWdlbnQ6On5JbnNwZWN0b3JNZW1vcnlBZ2VudCgpCkBAIC0zMTUsNyArMzQ4LDcgQEAgSW5zcGVj
dG9yTWVtb3J5QWdlbnQ6On5JbnNwZWN0b3JNZW1vcnlBZ2VudCgpCiB2b2lkIEluc3BlY3Rvck1l
bW9yeUFnZW50OjpnZXRET01Ob2RlQ291bnQoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpNZW1vcnk6OkRPTUdyb3VwPiA+JiBkb21Hcm91cHMsIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6TWVtb3J5OjpTdHJpbmdTdGF0aXN0aWNzPiYgc3RyaW5ncykKIHsK
ICAgICBDb3VudGVyVmlzaXRvciBjb3VudGVyVmlzaXRvcihtX3BhZ2UpOwotICAgIFNjcmlwdFBy
b2ZpbGVyOjp2aXNpdEpTRE9NV3JhcHBlcnMoJmNvdW50ZXJWaXNpdG9yKTsKKyAgICBTY3JpcHRQ
cm9maWxlcjo6dmlzaXROb2RlV3JhcHBlcnMoJmNvdW50ZXJWaXNpdG9yKTsKIAogICAgIC8vIE1h
a2Ugc3VyZSBhbGwgZG9jdW1lbnRzIHJlYWNoYWJsZSBmcm9tIHRoZSBtYWluIGZyYW1lIGFyZSBh
Y2NvdW50ZWQuCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewpAQCAtMzIzLDcg
KzM1Niw3IEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldERPTU5vZGVDb3VudChFcnJv
clN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyCiAgICAgICAgICAgICBjb3VudGVyVmlz
aXRvci52aXNpdE5vZGUoZG9jKTsKICAgICB9CiAKLSAgICBTY3JpcHRQcm9maWxlcjo6dmlzaXRF
eHRlcm5hbEpTU3RyaW5ncygmY291bnRlclZpc2l0b3IpOworICAgIFNjcmlwdFByb2ZpbGVyOjp2
aXNpdEV4dGVybmFsU3RyaW5ncygmY291bnRlclZpc2l0b3IpOwogCiAgICAgZG9tR3JvdXBzID0g
Y291bnRlclZpc2l0b3IuZG9tR3JvdXBzKCk7CiAgICAgc3RyaW5ncyA9IGNvdW50ZXJWaXNpdG9y
LnN0cmluZ3MoKTsKQEAgLTQwMCw2ICs0MzMsMjcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVj
dG9yTWVtb3J5QmxvY2s+IG1lbW9yeUNhY2hlSW5mbygpCiAgICAgcmV0dXJuIG1lbW9yeUNhY2hl
U3RhdHMucmVsZWFzZSgpOwogfQogCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlC
bG9jaz4ganNFeHRlcm5hbFJlc291cmNlc0luZm8oKQoreworICAgIEV4dGVybmFsUmVzb3VyY2VW
aXNpdG9yIHZpc2l0b3I7CisgICAgU2NyaXB0UHJvZmlsZXI6OnZpc2l0RXh0ZXJuYWxTdHJpbmdz
KCZ2aXNpdG9yKTsKKyAgICBTY3JpcHRQcm9maWxlcjo6dmlzaXRFeHRlcm5hbEFycmF5cygmdmlz
aXRvcik7CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGV4dGVybmFsUmVzb3Vy
Y2VzU3RhdHMgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShNZW1vcnlC
bG9ja05hbWU6OmpzRXh0ZXJuYWxSZXNvdXJjZXMpOworICAgIGV4dGVybmFsUmVzb3VyY2VzU3Rh
dHMtPnNldFNpemUodmlzaXRvci5leHRlcm5hbFN0cmluZ1NpemUoKSArIHZpc2l0b3IuZXh0ZXJu
YWxBcnJheVNpemUoKSk7CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JN
ZW1vcnlCbG9jaz4gPiBjaGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1v
cnlCbG9jaz46OmNyZWF0ZSgpOworCisgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBl
eHRlcm5hbFN0cmluZ1N0YXRzID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5h
bWUoTWVtb3J5QmxvY2tOYW1lOjpqc0V4dGVybmFsU3RyaW5ncyk7CisgICAgZXh0ZXJuYWxTdHJp
bmdTdGF0cy0+c2V0U2l6ZSh2aXNpdG9yLmV4dGVybmFsU3RyaW5nU2l6ZSgpKTsKKyAgICBjaGls
ZHJlbi0+YWRkSXRlbShleHRlcm5hbFN0cmluZ1N0YXRzKTsKKworICAgIFJlZlB0cjxJbnNwZWN0
b3JNZW1vcnlCbG9jaz4gZXh0ZXJuYWxBcnJheVN0YXRzID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6
OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5QmxvY2tOYW1lOjpqc0V4dGVybmFsQXJyYXlzKTsKKyAg
ICBleHRlcm5hbEFycmF5U3RhdHMtPnNldFNpemUodmlzaXRvci5leHRlcm5hbEFycmF5U2l6ZSgp
KTsKKyAgICBjaGlsZHJlbi0+YWRkSXRlbShleHRlcm5hbEFycmF5U3RhdHMpOworCisgICAgcmV0
dXJuIGV4dGVybmFsUmVzb3VyY2VzU3RhdHMucmVsZWFzZSgpOworfQorCiB2b2lkIEluc3BlY3Rv
ck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5nKiwg
UmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiYgcHJvY2Vzc01lbW9yeSkKIHsKICAgICBzaXpl
X3QgcHJpdmF0ZUJ5dGVzID0gMDsKQEAgLTQxMCw2ICs0NjQsNyBAQCB2b2lkIEluc3BlY3Rvck1l
bW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5nKiwgUmVm
UHRyPElucwogCiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlC
bG9jaz4gPiBjaGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9j
az46OmNyZWF0ZSgpOwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKGpzSGVhcEluZm8oKSk7CisgICAg
Y2hpbGRyZW4tPmFkZEl0ZW0oanNFeHRlcm5hbFJlc291cmNlc0luZm8oKSk7CiAgICAgY2hpbGRy
ZW4tPmFkZEl0ZW0oaW5zcGVjdG9yRGF0YSgpKTsKICAgICBjaGlsZHJlbi0+YWRkSXRlbShtZW1v
cnlDYWNoZUluZm8oKSk7CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0ocmVuZGVyVHJlZUluZm8obV9w
YWdlKSk7IC8vIFRPRE86IGNvbGxlY3QgZm9yIGFsbCBwYWdlcz8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3Lmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1vcnlTbmFwc2hv
dFZpZXcuanMKaW5kZXggOTliODBhYWRmNTU2Mjg5ZWRmNzVkOTZlMzU5MDlkNTkxYzJkMjI3NS4u
ZTEyM2I4ZmE1MmFhYzE1N2ZjNTBiN2FjODZmMjhjYWUxNGU3NzlmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1vcnlTbmFwc2hvdFZpZXcu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1vcnlT
bmFwc2hvdFZpZXcuanMKQEAgLTIxOCw2ICsyMTgsOSBAQCBXZWJJbnNwZWN0b3IuTWVtb3J5Qmxv
Y2tWaWV3UHJvcGVydGllcy5faW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKCkKICAgICBhZGRCbG9jaygi
aHNsKCAgMCwgIDAlLCAgODAlKSIsICJPdGhlciIsICJPdGhlciIpOwogICAgIGFkZEJsb2NrKCJo
c2woIDkwLCA2MCUsICA4MCUpIiwgIkpTSGVhcEFsbG9jYXRlZCIsICJKYXZhU2NyaXB0IGhlYXAi
KTsKICAgICBhZGRCbG9jaygiaHNsKCA5MCwgODAlLCAgODAlKSIsICJKU0hlYXBVc2VkIiwgIlVz
ZWQgSmF2YVNjcmlwdCBoZWFwIik7CisgICAgYWRkQmxvY2soImhzbCggOTAsIDMwJSwgIDgwJSki
LCAiSlNFeHRlcm5hbFJlc291cmNlcyIsICJKYXZhU2NyaXB0IGV4dGVybmFsIHJlc291cmNlcyIp
OworICAgIGFkZEJsb2NrKCJoc2woIDkwLCA0MCUsICA4MCUpIiwgIkpTRXh0ZXJuYWxBcnJheXMi
LCAiSmF2YVNjcmlwdCBleHRlcm5hbCBhcnJheXMiKTsKKyAgICBhZGRCbG9jaygiaHNsKCA5MCwg
NTAlLCAgODAlKSIsICJKU0V4dGVybmFsU3RyaW5ncyIsICJKYXZhU2NyaXB0IGV4dGVybmFsIHN0
cmluZ3MiKTsKICAgICBhZGRCbG9jaygiaHNsKDIxMCwgNjAlLCAgODAlKSIsICJJbnNwZWN0b3JE
YXRhIiwgIkluc3BlY3RvciBkYXRhIik7CiAgICAgYWRkQmxvY2soImhzbCggMzAsIDYwJSwgIDgw
JSkiLCAiTWVtb3J5Q2FjaGUiLCAiTWVtb3J5IGNhY2hlIHJlc291cmNlcyIpOwogICAgIGFkZEJs
b2NrKCJoc2woIDYwLCA2MCUsICA4MCUpIiwgIlJlbmRlclRyZWVBbGxvY2F0ZWQiLCAiUmVuZGVy
IHRyZWUiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149252</attachid>
            <date>2012-06-24 23:54:53 -0700</date>
            <delta_ts>2012-06-25 02:14:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89754-20120625105452.patch</filename>
            <type>text/plain</type>
            <size>30837</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA2Y2QyMDE0NTQwNDZk
ZmY3YzdkYWZlMWIzZGJkMzliN2RkNjgyZC4uZTBlNDIyMTZjNTVkODVlOTY0Y2Y4ZmQ4Y2NmYmIy
NDIxMWFmZjdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA2LTIyICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGFkZCBleHRlcm5hbCByZXNvdXJjZXMgc2l6ZSB0byB0aGUgbmF0aXZlIG1lbW9yeSBkaWFn
cmFtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTc1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpemUg
b2YgZXh0ZXJuYWwgc3RyaW5ncyBhbmQgYXJyYXlzIGlzIG5vdyByZXBvcnRlZCB0aHJvdWdoIHRo
ZSBpbnNwZWN0b3IKKyAgICAgICAgcHJvdG9jb2wgYW5kIGRpc3BsYXllZCBvbiB0aGUgbmF0aXZl
IG1lbW9yeSBjaGFydC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2ZpbGVyOjp2aXNp
dEpTRE9NV3JhcHBlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OnZpc2l0
RXh0ZXJuYWxKU1N0cmluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OnZp
c2l0RXh0ZXJuYWxKU0FycmF5cyk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0UHJvZmls
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OnZpc2l0SlNET01XcmFw
cGVycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9maWxlcjo6dmlzaXRFeHRlcm5hbEpT
U3RyaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9maWxlcjo6dmlzaXRFeHRlcm5h
bEpTQXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Nj
cmlwdFByb2ZpbGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNjcmlwdFByb2Zp
bGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQ29yZVN0cmluZ1Jlc291cmNlOjp2aXNpdFN0cmluZ3MpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnZpc2l0SlNFeHRlcm5hbFN0cmluZ3MpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL0Jp
bmRpbmdWaXNpdG9ycy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RP
TVdyYXBwZXJWaXNpdG9yLmguCisgICAgICAgIChXVEYpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChOb2RlV3JhcHBlclZpc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVdyYXBw
ZXJWaXNpdG9yOjp+Tm9kZVdyYXBwZXJWaXNpdG9yKToKKyAgICAgICAgKEV4dGVybmFsU3RyaW5n
VmlzaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpFeHRlcm5hbFN0cmluZ1Zpc2l0b3I6On5FeHRl
cm5hbFN0cmluZ1Zpc2l0b3IpOgorICAgICAgICAoRXh0ZXJuYWxBcnJheVZpc2l0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZXJuYWxBcnJheVZpc2l0b3I6On5FeHRlcm5hbEFycmF5VmlzaXRv
cik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAg
ICAgKE1lbW9yeUJsb2NrTmFtZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzRXh0ZXJuYWxSZXNvdXJjZXNJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL05hdGl2ZU1lbW9yeVNuYXBzaG90Vmlldy5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5NZW1vcnlCbG9ja1ZpZXdQcm9wZXJ0aWVzLl9pbml0aWFsaXplKToKKwog
MjAxMi0wNi0yNCAgRnVtaXRvc2hpIFVrYWkgIDx1a2FpQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkIGNvbXBpbGUgZXJyb3IgZml4IG9mIENocm9taXVtIFdpbiBSZWxlYXNlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMWJhMWE2ZDI5MzQyMWZlZGJmYzMzMGE3
MDQyNjEyM2Y0ZDU3NmFkZS4uOTg3MmUwMDJlY2UxOWE3NjM5YzQ4NDAwYWRjZmVmNTAzMTUyZWMz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yNjQyLDYgKzI2NDIsNyBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2ljdS91bmljb2RlL3V0Zl9vbGQu
aCBcCiAJU291cmNlL1dlYkNvcmUvaWN1L3VuaWNvZGUvdXR5cGVzLmggXAogCVNvdXJjZS9XZWJD
b3JlL2ljdS91bmljb2RlL3V2ZXJzaW9uLmggXAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9C
aW5kaW5nVmlzaXRvcnMuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNz
YWdlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmggXAog
CVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuY3BwIFwKQEAgLTI2
NTIsNyArMjY1Myw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NUGF0Y2hTdXBwb3J0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNo
U3VwcG9ydC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NV3JhcHBlclZpc2l0b3Iu
aCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuaCBcCiAJU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA0
N2Q1MjMwNTY3ZjIyNDJmMzEyMjBlN2FhMzY3MTQzNmY5ODhmMTE2Li5lNTFmMTJlMjAzOGJmNWE3
MzEwMjcyNThhMDJjOTcyZTY2NzIwYWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTIwMzUsMTIgKzIwMzUs
MTIgQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaCBcCiAgICAg
aHRtbC90cmFjay9XZWJWVFRUb2tlbi5oIFwKICAgICBodG1sL3RyYWNrL1dlYlZUVFRva2VuaXpl
ci5oIFwKKyAgICBpbnNwZWN0b3IvQmluZGluZ1Zpc2l0b3IuaCBcCiAgICAgaW5zcGVjdG9yL0Nv
bnNvbGVNZXNzYWdlLmggXAogICAgIGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuaCBcCiAg
ICAgaW5zcGVjdG9yL0RPTUVkaXRvci5oIFwKICAgICBpbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdo
dGVyLmggXAogICAgIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuaCBcCi0gICAgaW5zcGVjdG9y
L0RPTVdyYXBwZXJWaXNpdG9yLmggXAogICAgIGluc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3Rvcnku
aCBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmggXAogICAgIGluc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEJhc2UuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYjNkYTcwYmE0OGJkMjYxNjE3
NjQzODgyMzcxOTc1ODUzMzQ1MGJlYi4uZDczZTY3MGVhZTI1ZTg1NTgxOWI1M2I4ZWIxYjU3ZDg1
NzM0MmI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjc1Myw2ICsyNzUzLDcgQEAKICAgICAgICAg
ICAgICdpY3UvdW5pY29kZS91dGZfb2xkLmgnLAogICAgICAgICAgICAgJ2ljdS91bmljb2RlL3V0
eXBlcy5oJywKICAgICAgICAgICAgICdpY3UvdW5pY29kZS91dmVyc2lvbi5oJywKKyAgICAgICAg
ICAgICdpbnNwZWN0b3IvQmluZGluZ1Zpc2l0b3JzLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9Db25zb2xlTWVzc2FnZS5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9Db25zb2xlTWVz
c2FnZS5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcCcs
CkBAIC0yNzYzLDcgKzI3NjQsNiBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9ET01Ob2RlSGln
aGxpZ2h0ZXIuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuaCcsCi0gICAgICAgICAg
ICAnaW5zcGVjdG9yL0RPTVdyYXBwZXJWaXNpdG9yLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9JZGVudGlmaWVyc0ZhY3RvcnkuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSWRlbnRp
ZmllcnNGYWN0b3J5LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5j
cHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRl
eCBiYzM0YjUyMDAzYmMxMDJlZGU0ZWFlNWUzZDUzOWIyOGM2NzE2ZDRlLi5hMDAyZTI5ZGE0N2I2
OTg1ZmI3ZWI2Y2RkNGI1NmYyYzBhMDc0NjYwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzMxODcsNiArNzMxODcsMTAgQEAKIAkJCU5hbWU9
Imluc3BlY3RvciIKIAkJCT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0
b3JcQmluZGluZ1Zpc2l0b3JzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxDb25zb2xlTWVzc2FnZS5jcHAiCiAJCQkJPgogCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgpAQCAtNzMzMDcsMTAgKzczMzExLDYgQEAKIAkJCQk+CiAJCQk8
L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXERPTVdyYXBw
ZXJWaXNpdG9yLmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGluc3BlY3RvclxJZGVudGlmaWVyc0ZhY3RvcnkuY3BwIgogCQkJCT4KIAkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBjNWFkOGU3NzE0M2NkNTQyYWZjYzk2OTJiYjMzMzk5MzE0Nzgy
YzQ3Li4wN2Y5MjkyMzZkMzdmYjQ2NTlhOGI2MTBiYWQ0YzlmMzkzOTA0MmYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MTIw
LDcgKzYxMjAsNyBAQAogCQlGMzQ3NDJFODEzNDM2MzUwMDA1MzFCQzIgLyogV29ya2VyU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjM0NzQyRTYxMzQzNjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlwdERlYnVnU2VydmVy
LmNwcCAqLzsgfTsKIAkJRjM0NzQyRTkxMzQzNjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlwdERl
YnVnU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGMzQ3NDJFNzEzNDM2MzUwMDA1MzFCQzIgLyogV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCAq
LzsgfTsKIAkJRjM1MEI3MzUxM0YxMzc3RDAwODgwQzQzIC8qIEluc3RydW1lbnRpbmdBZ2VudHMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM1MEI3
MzQxM0YxMzc3RDAwODgwQzQzIC8qIEluc3RydW1lbnRpbmdBZ2VudHMuY3BwICovOyB9OwotCQlG
MzVBRTVBQzE0OTI1RjVCMDA0RDU3NzYgLyogRE9NV3JhcHBlclZpc2l0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNUFFNUFCMTQ5MjVGNUIwMDRE
NTc3NiAvKiBET01XcmFwcGVyVmlzaXRvci5oICovOyB9OworCQlGMzVBRTVBQzE0OTI1RjVCMDA0
RDU3NzYgLyogQmluZGluZ1Zpc2l0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGMzVBRTVBQjE0OTI1RjVCMDA0RDU3NzYgLyogQmluZGluZ1Zpc2l0
b3JzLmggKi87IH07CiAJCUYzNjQ0QUZGMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlw
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzY0
NEFGRDExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuY3BwICovOyB9OwogCQlGMzY0
NEIwMDExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNjQ0QUZFMTExOTgwNTkwMEUwRDUzNyAv
KiBJbmplY3RlZFNjcmlwdC5oICovOyB9OwogCQlGMzZFMDdBNDEzNThBOEJFMDBBQUNCQzkgLyog
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGMzZFMDdBMjEzNThBOEJFMDBBQUNCQzkgLyogV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlci5jcHAgKi87IH07CkBAIC0xMzM4OCw3ICsxMzM4OCw3IEBACiAJCUYz
NDc0MkU2MTM0MzYzNTAwMDUzMUJDMiAvKiBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzNDc0MkU3MTM0MzYzNTAwMDUz
MUJDMiAvKiBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGMzUwQjczNDEzRjEzNzdEMDA4ODBDNDMgLyogSW5zdHJ1bWVudGluZ0FnZW50
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnN0cnVtZW50aW5n
QWdlbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjM1QUU1QUIxNDkyNUY1
QjAwNEQ1Nzc2IC8qIERPTVdyYXBwZXJWaXNpdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTVdyYXBwZXJWaXNpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUYzNUFFNUFCMTQ5MjVGNUIwMDRENTc3NiAvKiBCaW5kaW5nVmlzaXRvcnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmluZGluZ1Zpc2l0b3JzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUYzNjQ0QUZEMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNj
cmlwdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZFNj
cmlwdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzNjQ0QUZFMTExOTgwNTkw
MEUwRDUzNyAvKiBJbmplY3RlZFNjcmlwdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbmplY3RlZFNjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzZF
MDdBMjEzNThBOEJFMDBBQUNCQzkgLyogV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NDE0LDYgKzE0NDE0LDcg
QEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMUM4MUI5NTkwRTk3
MzMwODAwMjY2RTA3IC8qIGZyb250LWVuZCAqLywKKwkJCQlGMzVBRTVBQjE0OTI1RjVCMDA0RDU3
NzYgLyogQmluZGluZ1Zpc2l0b3JzLmggKi8sCiAJCQkJNDFGMDYxOEQwRjVGMDY5ODAwQTA3RUFD
IC8qIENvbnNvbGVNZXNzYWdlLmNwcCAqLywKIAkJCQk0MUYwNjE4QzBGNUYwNjk4MDBBMDdFQUMg
LyogQ29uc29sZU1lc3NhZ2UuaCAqLywKIAkJCQk1OTEwMkZCOTE0MzI3RDNCMDAzQzlEMDQgLyog
Q29udGVudFNlYXJjaFV0aWxzLmNwcCAqLywKQEAgLTE0NDI0LDcgKzE0NDI1LDYgQEAKIAkJCQk0
RjE0NDIyNzEzMzlGRDYyMDBFMEQ2RjggLyogRE9NTm9kZUhpZ2hsaWdodGVyLmggKi8sCiAJCQkJ
N0E1NDg4MTYxNEU0MzJBMTAwNkFFMDVBIC8qIERPTVBhdGNoU3VwcG9ydC5jcHAgKi8sCiAJCQkJ
N0E1NDg4MTUxNEU0MzJBMTAwNkFFMDVBIC8qIERPTVBhdGNoU3VwcG9ydC5oICovLAotCQkJCUYz
NUFFNUFCMTQ5MjVGNUIwMDRENTc3NiAvKiBET01XcmFwcGVyVmlzaXRvci5oICovLAogCQkJCTU5
MTNBMjNGMTNENDlFQkEwMEY1QjA1QyAvKiBJZGVudGlmaWVyc0ZhY3RvcnkuY3BwICovLAogCQkJ
CTU5MTNBMjQwMTNENDlFQkEwMEY1QjA1QyAvKiBJZGVudGlmaWVyc0ZhY3RvcnkuaCAqLywKIAkJ
CQlGMzY0NEFGRDExMTk4MDU5MDBFMEQ1MzcgLyogSW5qZWN0ZWRTY3JpcHQuY3BwICovLApAQCAt
MjIwMzYsNiArMjIwMzYsNyBAQAogCQkJCTkzODE5MjA1MEY4N0UxRUMwMEQ1MzUyQSAvKiBCaW5h
cnlQcm9wZXJ0eUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE2MjJBOEZCMTIyQzQ0QTYwMEE3
ODVCMyAvKiBCaW5kaW5nU2VjdXJpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE2MjJBOEZEMTIy
QzQ0QTYwMEE3ODVCMyAvKiBCaW5kaW5nU2VjdXJpdHlCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGMzVBRTVBQzE0OTI1RjVCMDA0RDU3NzYgLyogQmluZGluZ1Zpc2l0b3JzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjA4RDEyQjAyNkY3MDBDMUEzNTkgLyogQmlxdWFkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDMxNjAyNTEyQjAyNjc2MDBDMUEzNTkgLyogQmlxdWFkRFNQS2VybmVsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGREM1NEYwNTEzOTlCMERBMDA4RDkxMTcgLyogQmlxdWFkRmls
dGVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjkyMCw3ICsyMjkyMSw2IEBACiAJCQkJOTdE
MkFEMDQxNEI4MjNBNjAwOTNERjMyIC8qIERPTVdpbmRvd1Byb3BlcnR5LmggaW4gSGVhZGVycyAq
LywKIAkJCQk4OUY2MEIxMTE1N0Y2ODZFMDA3NUUxNTcgLyogRE9NV2luZG93UXVvdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4Q0NCQjQ5MTUxRjgzMTYwMEFCN0NFOSAvKiBET01XaW5kb3dXZWJE
YXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRjM1QUU1QUMxNDkyNUY1QjAwNEQ1Nzc2IC8q
IERPTVdyYXBwZXJWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzUzREEyRTExNDMxMjFF
MDAwRDgxN0UgLyogRE9NV3JhcHBlcldvcmxkLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTFEMTM4
MDBBNTMyNTUyMDA2NEJGNUYgLyogRE9NWFBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTg1ODAx
NUNFMEFCQ0E3NUQwMDgwNTg4RCAvKiBET01YUGF0aEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaAppbmRleCAwNGE2
MTVkZGJkODQ5YjJmNTExNWI3MzcwN2U0YzZmZTlmYzY3Yjk0Li41NzY4NTM1NGZkMjJlNjBkYTUx
YjViODhiNWJhMzI2NTBhMDc2ODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRQcm9maWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFByb2ZpbGVyLmgKQEAgLTM2LDcgKzM2LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBET01XcmFwcGVyVmlzaXRvcjsKK2NsYXNzIEV4dGVybmFsQXJyYXlWaXNpdG9yOwor
Y2xhc3MgRXh0ZXJuYWxTdHJpbmdWaXNpdG9yOworY2xhc3MgTm9kZVdyYXBwZXJWaXNpdG9yOwog
Y2xhc3MgUGFnZTsKIGNsYXNzIFNjcmlwdE9iamVjdDsKIGNsYXNzIFNjcmlwdFZhbHVlOwpAQCAt
NzIsOCArNzQsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNTYW1wbGluZygpIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgc3RhdGljIGJvb2wgaGFzSGVhcFByb2ZpbGVyKCkgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgY291bnRlciBmb3IgSlNDLiBT
ZWUgYnVnIDczOTM2IGZvciBtb3JlIGRldGFpbHMuCi0gICAgc3RhdGljIHZvaWQgdmlzaXRKU0RP
TVdyYXBwZXJzKERPTVdyYXBwZXJWaXNpdG9yKikgeyB9Ci0gICAgc3RhdGljIHZvaWQgdmlzaXRF
eHRlcm5hbEpTU3RyaW5ncyhET01XcmFwcGVyVmlzaXRvciopIHsgfQorICAgIHN0YXRpYyB2b2lk
IHZpc2l0Tm9kZVdyYXBwZXJzKE5vZGVXcmFwcGVyVmlzaXRvciopIHsgfQorICAgIHN0YXRpYyB2
b2lkIHZpc2l0RXh0ZXJuYWxTdHJpbmdzKEV4dGVybmFsU3RyaW5nVmlzaXRvciopIHsgfQorICAg
IHN0YXRpYyB2b2lkIHZpc2l0RXh0ZXJuYWxBcnJheXMoRXh0ZXJuYWxBcnJheVZpc2l0b3IqKSB7
IH0KICAgICBzdGF0aWMgc2l6ZV90IHByb2ZpbGVyU25hcHNob3RzU2l6ZSgpIHsgcmV0dXJuIDA7
IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFBy
b2ZpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNw
cAppbmRleCA4MDIxNjFiYzdmNjlhODk2YTFiYWI2MGQzODQ2YTllMmU4ZTc3M2U0Li41N2JiODA4
MGVmZTEwMzU2ZTg2YjhjYzA3MTVlYmUwYWNlYjBkZGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwCkBAIC0zMiw5ICszMiwxMCBAQAogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKIAotI2luY2x1ZGUg
IkRPTVdyYXBwZXJWaXNpdG9yLmgiCisjaW5jbHVkZSAiQmluZGluZ1Zpc2l0b3JzLmgiCiAjaW5j
bHVkZSAiUmV0YWluZWRET01JbmZvLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5j
bHVkZSAiVjhBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNs
dWRlICJWOERPTU1hcC5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgpAQCAtMTc1LDI1ICsxNzYsNDcg
QEAgdm9pZCBTY3JpcHRQcm9maWxlcjo6aW5pdGlhbGl6ZSgpCiAgICAgdjg6OkhlYXBQcm9maWxl
cjo6RGVmaW5lV3JhcHBlckNsYXNzKHY4RE9NU3VidHJlZUNsYXNzSWQsICZyZXRhaW5lZERPTUlu
Zm8pOwogfQogCi12b2lkIFNjcmlwdFByb2ZpbGVyOjp2aXNpdEpTRE9NV3JhcHBlcnMoRE9NV3Jh
cHBlclZpc2l0b3IqIHZpc2l0b3IpCit2b2lkIFNjcmlwdFByb2ZpbGVyOjp2aXNpdE5vZGVXcmFw
cGVycyhOb2RlV3JhcHBlclZpc2l0b3IqIHZpc2l0b3IpCiB7CiAgICAgY2xhc3MgVmlzaXRvckFk
YXB0ZXIgOiBwdWJsaWMgRE9NV3JhcHBlck1hcDxOb2RlPjo6VmlzaXRvciB7CiAgICAgcHVibGlj
OgotICAgICAgICBWaXNpdG9yQWRhcHRlcihET01XcmFwcGVyVmlzaXRvciogdmlzaXRvcikgOiBt
X3Zpc2l0b3IodmlzaXRvcikgeyB9CisgICAgICAgIFZpc2l0b3JBZGFwdGVyKE5vZGVXcmFwcGVy
VmlzaXRvciogdmlzaXRvcikgOiBtX3Zpc2l0b3IodmlzaXRvcikgeyB9CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIHZpc2l0RE9NV3JhcHBlcihET01EYXRhU3RvcmUqLCBOb2RlKiBub2RlLCB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PikKICAgICAgICAgewogICAgICAgICAgICAgbV92aXNpdG9y
LT52aXNpdE5vZGUobm9kZSk7CiAgICAgICAgIH0KICAgICBwcml2YXRlOgotICAgICAgICBET01X
cmFwcGVyVmlzaXRvciogbV92aXNpdG9yOworICAgICAgICBOb2RlV3JhcHBlclZpc2l0b3IqIG1f
dmlzaXRvcjsKICAgICB9IGFkYXB0ZXIodmlzaXRvcik7CiAgICAgdmlzaXRET01Ob2RlcygmYWRh
cHRlcik7CiB9CiAKLXZvaWQgU2NyaXB0UHJvZmlsZXI6OnZpc2l0RXh0ZXJuYWxKU1N0cmluZ3Mo
RE9NV3JhcHBlclZpc2l0b3IqIHZpc2l0b3IpCit2b2lkIFNjcmlwdFByb2ZpbGVyOjp2aXNpdEV4
dGVybmFsU3RyaW5ncyhFeHRlcm5hbFN0cmluZ1Zpc2l0b3IqIHZpc2l0b3IpCiB7Ci0gICAgVjhC
aW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+dmlzaXRKU0V4dGVybmFsU3RyaW5ncyh2
aXNpdG9yKTsKKyAgICBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT52aXNpdEV4
dGVybmFsU3RyaW5ncyh2aXNpdG9yKTsKK30KKwordm9pZCBTY3JpcHRQcm9maWxlcjo6dmlzaXRF
eHRlcm5hbEFycmF5cyhFeHRlcm5hbEFycmF5VmlzaXRvciogdmlzaXRvcikKK3sKKyAgICBjbGFz
cyBWaXNpdG9yQWRhcHRlciA6IHB1YmxpYyBET01XcmFwcGVyTWFwPHZvaWQ+OjpWaXNpdG9yIHsK
KyAgICBwdWJsaWM6CisgICAgICAgIFZpc2l0b3JBZGFwdGVyKEV4dGVybmFsQXJyYXlWaXNpdG9y
KiB2aXNpdG9yKSA6IG1fdmlzaXRvcih2aXNpdG9yKSB7IH0KKworICAgICAgICB2aXJ0dWFsIHZv
aWQgdmlzaXRET01XcmFwcGVyKERPTURhdGFTdG9yZSosIHZvaWQqIGltcGwsIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IHY4T2JqZWN0KQorICAgICAgICB7CisgICAgICAgICAgICBXcmFwcGVy
VHlwZUluZm8qIHR5cGUgPSBWOERPTVdyYXBwZXI6OmRvbVdyYXBwZXJUeXBlKHY4T2JqZWN0KTsK
KyAgICAgICAgICAgIGlmICghdHlwZS0+aXNTdWJjbGFzcygmVjhBcnJheUJ1ZmZlclZpZXc6Omlu
Zm8pKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIEFycmF5QnVmZmVyVmll
dyogYXJyYXlCdWZmZXJWaWV3ID0gVjhBcnJheUJ1ZmZlclZpZXc6OnRvTmF0aXZlKHY4T2JqZWN0
KTsKKyAgICAgICAgICAgIG1fdmlzaXRvci0+dmlzaXRKU0V4dGVybmFsQXJyYXkoYXJyYXlCdWZm
ZXJWaWV3KTsKKyAgICAgICAgfQorICAgIHByaXZhdGU6CisgICAgICAgIEV4dGVybmFsQXJyYXlW
aXNpdG9yKiBtX3Zpc2l0b3I7CisgICAgfSBhZGFwdGVyKHZpc2l0b3IpOworCisgICAgZ2V0RE9N
T2JqZWN0TWFwKCkudmlzaXQoMCwgJmFkYXB0ZXIpOworCiB9CiAKIHNpemVfdCBTY3JpcHRQcm9m
aWxlcjo6cHJvZmlsZXJTbmFwc2hvdHNTaXplKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRQcm9maWxlci5oCmluZGV4IDMzMjZkYjQ0MmY0YzZmODAzN2U2ZWIxODM2ZmY1OTFl
NWIyMmQ1NTcuLjI1ZjZlMTI5ZWIyZDkwODU1Zjg5YTM1NDdhMmY5OTcyMjM2NWE2MzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuaApAQCAtNDAsNyArNDAs
OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERPTVdyYXBwZXJWaXNpdG9yOwor
Y2xhc3MgRXh0ZXJuYWxBcnJheVZpc2l0b3I7CitjbGFzcyBFeHRlcm5hbFN0cmluZ1Zpc2l0b3I7
CitjbGFzcyBOb2RlV3JhcHBlclZpc2l0b3I7CiBjbGFzcyBQYWdlOwogY2xhc3MgU2NyaXB0T2Jq
ZWN0OwogY2xhc3MgU2NyaXB0VmFsdWU7CkBAIC03Niw4ICs3OCw5IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBpc1NhbXBsaW5nKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHN0YXRpYyBib29s
IGhhc0hlYXBQcm9maWxlcigpIHsgcmV0dXJuIHRydWU7IH0KICAgICBzdGF0aWMgdm9pZCBpbml0
aWFsaXplKCk7Ci0gICAgc3RhdGljIHZvaWQgdmlzaXRKU0RPTVdyYXBwZXJzKERPTVdyYXBwZXJW
aXNpdG9yKik7Ci0gICAgc3RhdGljIHZvaWQgdmlzaXRFeHRlcm5hbEpTU3RyaW5ncyhET01XcmFw
cGVyVmlzaXRvciopOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Tm9kZVdyYXBwZXJzKE5vZGVXcmFw
cGVyVmlzaXRvciopOworICAgIHN0YXRpYyB2b2lkIHZpc2l0RXh0ZXJuYWxTdHJpbmdzKEV4dGVy
bmFsU3RyaW5nVmlzaXRvciopOworICAgIHN0YXRpYyB2b2lkIHZpc2l0RXh0ZXJuYWxBcnJheXMo
RXh0ZXJuYWxBcnJheVZpc2l0b3IqKTsKICAgICBzdGF0aWMgc2l6ZV90IHByb2ZpbGVyU25hcHNo
b3RzU2l6ZSgpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAK
aW5kZXggOTc0ZGEwNWNhOTJkYzU3MmRlY2U0ODJiYTI4ZWRhM2VmY2FjZjdmYi4uNjk5MDE4Njky
YWFlZWIxY2UwOTg5NzhhMWFlZDNjMjhlMGIyYzM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEJpbmRpbmcuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAKKyNpbmNsdWRlICJCaW5kaW5nVmlzaXRvcnMuaCIK
ICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCi0jaW5jbHVkZSAiRE9NV3JhcHBlclZpc2l0b3Iu
aCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNp
bmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gbV9hdG9taWNTdHJpbmc7CiAgICAgfQogCi0gICAgdm9pZCB2aXNpdFN0cmlu
Z3MoRE9NV3JhcHBlclZpc2l0b3IqIHZpc2l0b3IpCisgICAgdm9pZCB2aXNpdFN0cmluZ3MoRXh0
ZXJuYWxTdHJpbmdWaXNpdG9yKiB2aXNpdG9yKQogICAgIHsKICAgICAgICAgdmlzaXRvci0+dmlz
aXRKU0V4dGVybmFsU3RyaW5nKG1fcGxhaW5TdHJpbmcuaW1wbCgpKTsKICAgICAgICAgaWYgKG1f
cGxhaW5TdHJpbmcuaW1wbCgpICE9IG1fYXRvbWljU3RyaW5nLmltcGwoKSAmJiAhbV9hdG9taWNT
dHJpbmcuaXNOdWxsKCkpCkBAIC0xNzgsMTIgKzE3OCwxMiBAQCBwcml2YXRlOgogfTsKIAogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCi12b2lkIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjp2aXNpdEpT
RXh0ZXJuYWxTdHJpbmdzKERPTVdyYXBwZXJWaXNpdG9yKiB2aXNpdG9yKQordm9pZCBWOEJpbmRp
bmdQZXJJc29sYXRlRGF0YTo6dmlzaXRFeHRlcm5hbFN0cmluZ3MoRXh0ZXJuYWxTdHJpbmdWaXNp
dG9yKiB2aXNpdG9yKQogewogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICBj
bGFzcyBWaXNpdG9ySW1wbCA6IHB1YmxpYyB2ODo6RXh0ZXJuYWxSZXNvdXJjZVZpc2l0b3Igewog
ICAgIHB1YmxpYzoKLSAgICAgICAgVmlzaXRvckltcGwoRE9NV3JhcHBlclZpc2l0b3IqIHZpc2l0
b3IpIDogbV92aXNpdG9yKHZpc2l0b3IpIHsgfQorICAgICAgICBWaXNpdG9ySW1wbChFeHRlcm5h
bFN0cmluZ1Zpc2l0b3IqIHZpc2l0b3IpIDogbV92aXNpdG9yKHZpc2l0b3IpIHsgfQogICAgICAg
ICB2aXJ0dWFsIH5WaXNpdG9ySW1wbCgpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgVmlzaXRF
eHRlcm5hbFN0cmluZyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHN0cmluZykKICAgICAgICAgewpA
QCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OnZpc2l0SlNF
eHRlcm5hbFN0cmluZ3MoRE9NV3JhcHBlclZpc2l0b3IqIHZpc2l0b3IpCiAgICAgICAgICAgICAg
ICAgcmVzb3VyY2UtPnZpc2l0U3RyaW5ncyhtX3Zpc2l0b3IpOwogICAgICAgICB9CiAgICAgcHJp
dmF0ZToKLSAgICAgICAgRE9NV3JhcHBlclZpc2l0b3IqIG1fdmlzaXRvcjsKKyAgICAgICAgRXh0
ZXJuYWxTdHJpbmdWaXNpdG9yKiBtX3Zpc2l0b3I7CiAgICAgfSB2OFZpc2l0b3IodmlzaXRvcik7
CiAgICAgdjg6OlY4OjpWaXNpdEV4dGVybmFsUmVzb3VyY2VzKCZ2OFZpc2l0b3IpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCBmODdlNGI5MjQ0ZGEzNTQyNzNl
NGNhOWRiZDE2YWI4MDRjM2QzMTdhLi4xMDI5NmE3MDBiNWUzNDYwNDA5ZWRlZTg0MzhlOTkwMmUz
OTA2Yjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApAQCAtNDYsOSAr
NDYsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRE9NU3RyaW5nTGlzdDsK
LSAgICBjbGFzcyBET01XcmFwcGVyVmlzaXRvcjsKICAgICBjbGFzcyBFdmVudExpc3RlbmVyOwog
ICAgIGNsYXNzIEV2ZW50VGFyZ2V0OworICAgIGNsYXNzIEV4dGVybmFsU3RyaW5nVmlzaXRvcjsK
IAogICAgIC8vIEZJWE1FOiBSZW1vdmUgVjhCaW5kaW5nLgogICAgIGNsYXNzIFY4QmluZGluZyB7
CkBAIC0xNDYsNyArMTQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFN0cmlu
Z0NhY2hlKiBzdHJpbmdDYWNoZSgpIHsgcmV0dXJuICZtX3N0cmluZ0NhY2hlOyB9CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKLSAgICAgICAgdm9pZCB2aXNpdEpTRXh0ZXJuYWxTdHJpbmdzKERPTVdy
YXBwZXJWaXNpdG9yKik7CisgICAgICAgIHZvaWQgdmlzaXRFeHRlcm5hbFN0cmluZ3MoRXh0ZXJu
YWxTdHJpbmdWaXNpdG9yKik7CiAjZW5kaWYKICAgICAgICAgRE9NRGF0YUxpc3QmIGFsbFN0b3Jl
cygpIHsgcmV0dXJuIG1fZG9tRGF0YUxpc3Q7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0JpbmRpbmdWaXNpdG9ycy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0JpbmRpbmdWaXNpdG9ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1MzBjOTI0NzMyYTYzZjg5Mzg0NzliNjVl
NDU0NzM4ZGQ1YjFmMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQmluZGluZ1Zpc2l0b3JzLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQmluZGluZ1Zp
c2l0b3JzX2gKKyNkZWZpbmUgQmluZGluZ1Zpc2l0b3JzX2gKKworbmFtZXNwYWNlIFdURiB7Citj
bGFzcyBBcnJheUJ1ZmZlclZpZXc7CitjbGFzcyBTdHJpbmdJbXBsOworfQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIE5vZGU7CisKK2NsYXNzIE5vZGVXcmFwcGVyVmlzaXRvciB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHZpc2l0Tm9kZShOb2RlKikgPSAwOworcHJvdGVjdGVk
OgorICAgIHZpcnR1YWwgfk5vZGVXcmFwcGVyVmlzaXRvcigpIHsgfQorfTsKKworY2xhc3MgRXh0
ZXJuYWxTdHJpbmdWaXNpdG9yIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRKU0V4
dGVybmFsU3RyaW5nKFdURjo6U3RyaW5nSW1wbCopID0gMDsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0
dWFsIH5FeHRlcm5hbFN0cmluZ1Zpc2l0b3IoKSB7IH0KK307CisKKworY2xhc3MgRXh0ZXJuYWxB
cnJheVZpc2l0b3IgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCB2aXNpdEpTRXh0ZXJuYWxB
cnJheShXVEY6OkFycmF5QnVmZmVyVmlldyopID0gMDsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFs
IH5FeHRlcm5hbEFycmF5VmlzaXRvcigpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gQmluZGluZ1Zpc2l0b3JzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9ET01XcmFwcGVyVmlzaXRvci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0RPTVdyYXBwZXJWaXNpdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRi
ZjI0NmYzNTE4NjM5YTJiNTY2ZjVjODZlMWM2NzU2N2ViMjFiZjIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RP
TVdyYXBwZXJWaXNpdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0g
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBET01XcmFwcGVyVmlzaXRvcl9oCi0jZGVmaW5lIERPTVdyYXBwZXJWaXNpdG9yX2gKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBOb2RlOwotCi1jbGFzcyBET01XcmFwcGVyVmlzaXRv
ciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0Tm9kZShOb2RlKikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB2aXNpdEpTRXh0ZXJuYWxTdHJpbmcoU3RyaW5nSW1wbCopID0gMDsKLXBy
b3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5ET01XcmFwcGVyVmlzaXRvcigpIHsgfQotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRE9NV3JhcHBlclZpc2l0b3JfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5k
ZXggZTM5NjU0MjFhOWI0OTQ5ZTg0YTdhNzNiOGZhNzVmMDE4OTAzYjk1Ny4uYjA1ZjYyMmQwMGFj
ZjU2MmU0Zjk0ODAyYWU3MmY1NDE5ZWZjNjQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCkBAIC0zNCw4ICszNCw4IEBACiAKICNp
bmNsdWRlICJJbnNwZWN0b3JNZW1vcnlBZ2VudC5oIgogCisjaW5jbHVkZSAiQmluZGluZ1Zpc2l0
b3JzLmgiCiAjaW5jbHVkZSAiQ2hhcmFjdGVyRGF0YS5oIgotI2luY2x1ZGUgIkRPTVdyYXBwZXJW
aXNpdG9yLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVy
TWFwLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTUxLDYgKzUxLDggQEAKICNpbmNsdWRlICJT
Y3JpcHRHQ0V2ZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZXIuaCIKICNpbmNsdWRlICJT
dHlsZWRFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8
d3RmL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC02Nyw2ICs2OSw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBNZW1vcnlCbG9ja05hbWUgewogc3RhdGljIGNvbnN0IGNo
YXIganNIZWFwQWxsb2NhdGVkW10gPSAiSlNIZWFwQWxsb2NhdGVkIjsKIHN0YXRpYyBjb25zdCBj
aGFyIGpzSGVhcFVzZWRbXSA9ICJKU0hlYXBVc2VkIjsKK3N0YXRpYyBjb25zdCBjaGFyIGpzRXh0
ZXJuYWxSZXNvdXJjZXNbXSA9ICJKU0V4dGVybmFsUmVzb3VyY2VzIjsKK3N0YXRpYyBjb25zdCBj
aGFyIGpzRXh0ZXJuYWxBcnJheXNbXSA9ICJKU0V4dGVybmFsQXJyYXlzIjsKK3N0YXRpYyBjb25z
dCBjaGFyIGpzRXh0ZXJuYWxTdHJpbmdzW10gPSAiSlNFeHRlcm5hbFN0cmluZ3MiOwogc3RhdGlj
IGNvbnN0IGNoYXIgaW5zcGVjdG9yRGF0YVtdID0gIkluc3BlY3RvckRhdGEiOwogc3RhdGljIGNv
bnN0IGNoYXIgbWVtb3J5Q2FjaGVbXSA9ICJNZW1vcnlDYWNoZSI7CiBzdGF0aWMgY29uc3QgY2hh
ciBwcm9jZXNzUHJpdmF0ZU1lbW9yeVtdID0gIlByb2Nlc3NQcml2YXRlTWVtb3J5IjsKQEAgLTk0
LDkgKzk5LDkgQEAgU3RyaW5nIG5vZGVOYW1lKE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGUt
Pm5vZGVOYW1lKCkubG93ZXIoKTsKIH0KIAotaW50IHN0cmluZ1NpemUoU3RyaW5nSW1wbCogc3Ry
aW5nKQorc2l6ZV90IHN0cmluZ1NpemUoU3RyaW5nSW1wbCogc3RyaW5nKQogewotICAgIGludCBz
aXplID0gc3RyaW5nLT5sZW5ndGgoKTsKKyAgICBzaXplX3Qgc2l6ZSA9IHN0cmluZy0+bGVuZ3Ro
KCk7CiAgICAgaWYgKCFzdHJpbmctPmlzOEJpdCgpKQogICAgICAgICBzaXplICo9IDI7CiAgICAg
cmV0dXJuIHNpemUgKyBzaXplb2YoKnN0cmluZyk7CkBAIC0yMTgsNyArMjIzLDcgQEAgcHJpdmF0
ZToKICAgICBDaGFyYWN0ZXJEYXRhU3RhdGlzdGljcyYgbV9jaGFyYWN0ZXJEYXRhU3RhdGlzdGlj
czsKIH07CiAKLWNsYXNzIENvdW50ZXJWaXNpdG9yIDogcHVibGljIERPTVdyYXBwZXJWaXNpdG9y
IHsKK2NsYXNzIENvdW50ZXJWaXNpdG9yIDogcHVibGljIE5vZGVXcmFwcGVyVmlzaXRvciwgcHVi
bGljIEV4dGVybmFsU3RyaW5nVmlzaXRvciB7CiBwdWJsaWM6CiAgICAgQ291bnRlclZpc2l0b3Io
UGFnZSogcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkKQEAgLTMwOCw2ICszMTMsMzQgQEAg
cHJpdmF0ZToKICAgICBpbnQgbV9zaGFyZWRTdHJpbmdTaXplOwogfTsKIAorY2xhc3MgRXh0ZXJu
YWxSZXNvdXJjZVZpc2l0b3IgOiBwdWJsaWMgRXh0ZXJuYWxTdHJpbmdWaXNpdG9yLCBwdWJsaWMg
RXh0ZXJuYWxBcnJheVZpc2l0b3IgeworcHVibGljOgorICAgIEV4dGVybmFsUmVzb3VyY2VWaXNp
dG9yKCkKKyAgICAgICAgOiBtX2pzRXh0ZXJuYWxTdHJpbmdTaXplKDApCisgICAgICAgICwgbV9l
eHRlcm5hbEFycmF5U2l6ZSgwKQorICAgIHsgfQorCisgICAgc2l6ZV90IGV4dGVybmFsU3RyaW5n
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fanNFeHRlcm5hbFN0cmluZ1NpemU7IH0KKyAgICBzaXpl
X3QgZXh0ZXJuYWxBcnJheVNpemUoKSBjb25zdCB7IHJldHVybiBtX2V4dGVybmFsQXJyYXlTaXpl
OyB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHZpc2l0SlNFeHRlcm5hbEFycmF5KEFy
cmF5QnVmZmVyVmlldyogYnVmZmVyVmlldykKKyAgICB7CisgICAgICAgIEFycmF5QnVmZmVyKiBi
dWZmZXIgPSBidWZmZXJWaWV3LT5idWZmZXIoKS5nZXQoKTsKKyAgICAgICAgaWYgKG1fYXJyYXlC
dWZmZXJzLmFkZChidWZmZXIpLmlzTmV3RW50cnkpCisgICAgICAgICAgICBtX2V4dGVybmFsQXJy
YXlTaXplICs9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQg
dmlzaXRKU0V4dGVybmFsU3RyaW5nKFN0cmluZ0ltcGwqIHN0cmluZykKKyAgICB7CisgICAgICAg
IGludCBzaXplID0gc3RyaW5nU2l6ZShzdHJpbmcpOworICAgICAgICBtX2pzRXh0ZXJuYWxTdHJp
bmdTaXplICs9IHNpemU7CisgICAgfQorCisgICAgc2l6ZV90IG1fanNFeHRlcm5hbFN0cmluZ1Np
emU7CisgICAgc2l6ZV90IG1fZXh0ZXJuYWxBcnJheVNpemU7CisgICAgSGFzaFNldDxBcnJheUJ1
ZmZlcio+IG1fYXJyYXlCdWZmZXJzOworfTsKKwogfSAvLyBuYW1lc3BhY2UKIAogSW5zcGVjdG9y
TWVtb3J5QWdlbnQ6On5JbnNwZWN0b3JNZW1vcnlBZ2VudCgpCkBAIC0zMTcsNyArMzUwLDcgQEAg
SW5zcGVjdG9yTWVtb3J5QWdlbnQ6On5JbnNwZWN0b3JNZW1vcnlBZ2VudCgpCiB2b2lkIEluc3Bl
Y3Rvck1lbW9yeUFnZW50OjpnZXRET01Ob2RlQ291bnQoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpNZW1vcnk6OkRPTUdyb3VwPiA+JiBkb21Hcm91
cHMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6TWVtb3J5OjpTdHJpbmdTdGF0aXN0aWNzPiYgc3RyaW5n
cykKIHsKICAgICBDb3VudGVyVmlzaXRvciBjb3VudGVyVmlzaXRvcihtX3BhZ2UpOwotICAgIFNj
cmlwdFByb2ZpbGVyOjp2aXNpdEpTRE9NV3JhcHBlcnMoJmNvdW50ZXJWaXNpdG9yKTsKKyAgICBT
Y3JpcHRQcm9maWxlcjo6dmlzaXROb2RlV3JhcHBlcnMoJmNvdW50ZXJWaXNpdG9yKTsKIAogICAg
IC8vIE1ha2Ugc3VyZSBhbGwgZG9jdW1lbnRzIHJlYWNoYWJsZSBmcm9tIHRoZSBtYWluIGZyYW1l
IGFyZSBhY2NvdW50ZWQuCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFt
ZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewpAQCAt
MzI1LDcgKzM1OCw3IEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldERPTU5vZGVDb3Vu
dChFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyCiAgICAgICAgICAgICBjb3Vu
dGVyVmlzaXRvci52aXNpdE5vZGUoZG9jKTsKICAgICB9CiAKLSAgICBTY3JpcHRQcm9maWxlcjo6
dmlzaXRFeHRlcm5hbEpTU3RyaW5ncygmY291bnRlclZpc2l0b3IpOworICAgIFNjcmlwdFByb2Zp
bGVyOjp2aXNpdEV4dGVybmFsU3RyaW5ncygmY291bnRlclZpc2l0b3IpOwogCiAgICAgZG9tR3Jv
dXBzID0gY291bnRlclZpc2l0b3IuZG9tR3JvdXBzKCk7CiAgICAgc3RyaW5ncyA9IGNvdW50ZXJW
aXNpdG9yLnN0cmluZ3MoKTsKQEAgLTQyNCw3ICs0NTcsNyBAQCBwcml2YXRlOgogICAgIFZpc2l0
ZWRPYmplY3RzIG1fdmlzaXRlZE9iamVjdHM7CiB9OwogCi1jbGFzcyBET01UcmVlc0l0ZXJhdG9y
IDogcHVibGljIERPTVdyYXBwZXJWaXNpdG9yIHsKK2NsYXNzIERPTVRyZWVzSXRlcmF0b3IgOiBw
dWJsaWMgTm9kZVdyYXBwZXJWaXNpdG9yIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBET01UcmVl
c0l0ZXJhdG9yKFBhZ2UqIHBhZ2UpIDogbV9wYWdlKHBhZ2UpIHsgfQogCkBAIC00MzYsOCArNDY5
LDYgQEAgcHVibGljOgogICAgICAgICBtX2RvbU1lbW9yeVVzYWdlLnJlcG9ydEluc3RydW1lbnRl
ZFBvaW50ZXIobm9kZSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHZpc2l0SlNFeHRlcm5h
bFN0cmluZyhTdHJpbmdJbXBsKikgeyB9Ci0KICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9y
eUJsb2NrPiBkdW1wU3RhdGlzdGljcygpIHsgcmV0dXJuIG1fZG9tTWVtb3J5VXNhZ2UuZHVtcFN0
YXRpc3RpY3MoKTsgfQogCiBwcml2YXRlOgpAQCAtNDUwLDcgKzQ4MSw3IEBAIHByaXZhdGU6CiBz
dGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gZG9tVHJlZUluZm8oUGFnZSog
cGFnZSkKIHsKICAgICBET01UcmVlc0l0ZXJhdG9yIGRvbVRyZWVzSXRlcmF0b3IocGFnZSk7Ci0g
ICAgU2NyaXB0UHJvZmlsZXI6OnZpc2l0SlNET01XcmFwcGVycygmZG9tVHJlZXNJdGVyYXRvcik7
CisgICAgU2NyaXB0UHJvZmlsZXI6OnZpc2l0Tm9kZVdyYXBwZXJzKCZkb21UcmVlc0l0ZXJhdG9y
KTsKIAogICAgIC8vIE1ha2Ugc3VyZSBhbGwgZG9jdW1lbnRzIHJlYWNoYWJsZSBmcm9tIHRoZSBt
YWluIGZyYW1lIGFyZSBhY2NvdW50ZWQuCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5t
YWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkp
IHsKQEAgLTQ4Miw2ICs1MTMsMjcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5
QmxvY2s+IG1lbW9yeUNhY2hlSW5mbygpCiAgICAgcmV0dXJuIG1lbW9yeUNhY2hlU3RhdHMucmVs
ZWFzZSgpOwogfQogCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4ganNF
eHRlcm5hbFJlc291cmNlc0luZm8oKQoreworICAgIEV4dGVybmFsUmVzb3VyY2VWaXNpdG9yIHZp
c2l0b3I7CisgICAgU2NyaXB0UHJvZmlsZXI6OnZpc2l0RXh0ZXJuYWxTdHJpbmdzKCZ2aXNpdG9y
KTsKKyAgICBTY3JpcHRQcm9maWxlcjo6dmlzaXRFeHRlcm5hbEFycmF5cygmdmlzaXRvcik7CisK
KyAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGV4dGVybmFsUmVzb3VyY2VzU3RhdHMg
PSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShNZW1vcnlCbG9ja05hbWU6
OmpzRXh0ZXJuYWxSZXNvdXJjZXMpOworICAgIGV4dGVybmFsUmVzb3VyY2VzU3RhdHMtPnNldFNp
emUodmlzaXRvci5leHRlcm5hbFN0cmluZ1NpemUoKSArIHZpc2l0b3IuZXh0ZXJuYWxBcnJheVNp
emUoKSk7CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9j
az4gPiBjaGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46
OmNyZWF0ZSgpOworCisgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBleHRlcm5hbFN0
cmluZ1N0YXRzID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5
QmxvY2tOYW1lOjpqc0V4dGVybmFsU3RyaW5ncyk7CisgICAgZXh0ZXJuYWxTdHJpbmdTdGF0cy0+
c2V0U2l6ZSh2aXNpdG9yLmV4dGVybmFsU3RyaW5nU2l6ZSgpKTsKKyAgICBjaGlsZHJlbi0+YWRk
SXRlbShleHRlcm5hbFN0cmluZ1N0YXRzKTsKKworICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlC
bG9jaz4gZXh0ZXJuYWxBcnJheVN0YXRzID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgp
LnNldE5hbWUoTWVtb3J5QmxvY2tOYW1lOjpqc0V4dGVybmFsQXJyYXlzKTsKKyAgICBleHRlcm5h
bEFycmF5U3RhdHMtPnNldFNpemUodmlzaXRvci5leHRlcm5hbEFycmF5U2l6ZSgpKTsKKyAgICBj
aGlsZHJlbi0+YWRkSXRlbShleHRlcm5hbEFycmF5U3RhdHMpOworCisgICAgcmV0dXJuIGV4dGVy
bmFsUmVzb3VyY2VzU3RhdHMucmVsZWFzZSgpOworfQorCiB2b2lkIEluc3BlY3Rvck1lbW9yeUFn
ZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5nKiwgUmVmUHRyPElu
c3BlY3Rvck1lbW9yeUJsb2NrPiYgcHJvY2Vzc01lbW9yeSkKIHsKICAgICBzaXplX3QgcHJpdmF0
ZUJ5dGVzID0gMDsKQEAgLTQ5Miw2ICs1NDQsNyBAQCB2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50
OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5nKiwgUmVmUHRyPElucwog
CiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBj
aGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9jaz46OmNyZWF0
ZSgpOwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKGpzSGVhcEluZm8oKSk7CisgICAgY2hpbGRyZW4t
PmFkZEl0ZW0oanNFeHRlcm5hbFJlc291cmNlc0luZm8oKSk7CiAgICAgY2hpbGRyZW4tPmFkZEl0
ZW0oaW5zcGVjdG9yRGF0YSgpKTsKICAgICBjaGlsZHJlbi0+YWRkSXRlbShtZW1vcnlDYWNoZUlu
Zm8oKSk7CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0ocmVuZGVyVHJlZUluZm8obV9wYWdlKSk7IC8v
IFRPRE86IGNvbGxlY3QgZm9yIGFsbCBwYWdlcz8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3LmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1vcnlTbmFwc2hvdFZpZXcuanMK
aW5kZXggOTliODBhYWRmNTU2Mjg5ZWRmNzVkOTZlMzU5MDlkNTkxYzJkMjI3NS4uZTEyM2I4ZmE1
MmFhYzE1N2ZjNTBiN2FjODZmMjhjYWUxNGU3NzlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1vcnlTbmFwc2hvdFZpZXcuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1vcnlTbmFwc2hvdFZp
ZXcuanMKQEAgLTIxOCw2ICsyMTgsOSBAQCBXZWJJbnNwZWN0b3IuTWVtb3J5QmxvY2tWaWV3UHJv
cGVydGllcy5faW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKCkKICAgICBhZGRCbG9jaygiaHNsKCAgMCwg
IDAlLCAgODAlKSIsICJPdGhlciIsICJPdGhlciIpOwogICAgIGFkZEJsb2NrKCJoc2woIDkwLCA2
MCUsICA4MCUpIiwgIkpTSGVhcEFsbG9jYXRlZCIsICJKYXZhU2NyaXB0IGhlYXAiKTsKICAgICBh
ZGRCbG9jaygiaHNsKCA5MCwgODAlLCAgODAlKSIsICJKU0hlYXBVc2VkIiwgIlVzZWQgSmF2YVNj
cmlwdCBoZWFwIik7CisgICAgYWRkQmxvY2soImhzbCggOTAsIDMwJSwgIDgwJSkiLCAiSlNFeHRl
cm5hbFJlc291cmNlcyIsICJKYXZhU2NyaXB0IGV4dGVybmFsIHJlc291cmNlcyIpOworICAgIGFk
ZEJsb2NrKCJoc2woIDkwLCA0MCUsICA4MCUpIiwgIkpTRXh0ZXJuYWxBcnJheXMiLCAiSmF2YVNj
cmlwdCBleHRlcm5hbCBhcnJheXMiKTsKKyAgICBhZGRCbG9jaygiaHNsKCA5MCwgNTAlLCAgODAl
KSIsICJKU0V4dGVybmFsU3RyaW5ncyIsICJKYXZhU2NyaXB0IGV4dGVybmFsIHN0cmluZ3MiKTsK
ICAgICBhZGRCbG9jaygiaHNsKDIxMCwgNjAlLCAgODAlKSIsICJJbnNwZWN0b3JEYXRhIiwgIklu
c3BlY3RvciBkYXRhIik7CiAgICAgYWRkQmxvY2soImhzbCggMzAsIDYwJSwgIDgwJSkiLCAiTWVt
b3J5Q2FjaGUiLCAiTWVtb3J5IGNhY2hlIHJlc291cmNlcyIpOwogICAgIGFkZEJsb2NrKCJoc2wo
IDYwLCA2MCUsICA4MCUpIiwgIlJlbmRlclRyZWVBbGxvY2F0ZWQiLCAiUmVuZGVyIHRyZWUiKTsK
</data>
<flag name="review"
          id="157213"
          type_id="1"
          status="+"
          setter="vsevik"
    />
          </attachment>
      

    </bug>

</bugzilla>