<?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>33057</bug_id>
          
          <creation_ts>2009-12-30 09:51:18 -0800</creation_ts>
          <short_desc>REGRESSION(r49365): typeof(xhr.responseText) != &quot;string&quot; in Windows</short_desc>
          <delta_ts>2010-01-07 16:17:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Marshall Culpepper">mculpepper</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mjs</cc>
    
    <cc>mrobinson</cc>
    
    <cc>sfalken</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>175957</commentid>
    <comment_count>0</comment_count>
    <who name="Marshall Culpepper">mculpepper</who>
    <bug_when>2009-12-30 09:51:18 -0800</bug_when>
    <thetext>Hey guys.. this is a really odd one we noticed in the latest builds of the Win32/Cairo port, Brent Fulgham also verified this is happening in the official Windows port.

Basically in an XHR response, the responseText is correctly filled with data, but the &quot;typeof&quot; the responseText won&apos;t correctly compare against the string &quot;string&quot;, unless the typeof or the responseText itself is forced into a String context. To clarify, here are a few examples:

&quot;type=&quot;+typeof(xhr.responseText) // -&gt; type=string

typeof(xhr.responseText) == &quot;string&quot; // false, should be true

String(typeof(xhr.responseText)) == &quot;string&quot; // true

typeof(String(xhr.responseText)) == &quot;string&quot; // true

var t = typeof(xhr.responseText);
t == &quot;string&quot; // true .. weird right?

tyepof(xhr.responseText).substr(0,5) == &quot;string&quot; // true

It should be noted that performing any standard String operations on the responseText or the typeof seem to work fine.

If you load this test case in WinLauncher, you should see all red text with typeof(responseText) == &quot;string&quot; ? false :
http://arcaner.com/test/test.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176101</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-12-30 17:58:34 -0800</bug_when>
    <thetext>Just to clarify, did this work before? Can you check when exactly this broke (which is the latest nightly build where this works)?

Sounds like this could be related to recent JavaScript string refactoring work. I can&apos;t reproduce this with nightly r52591 on Mac OS X, and didn&apos;t try on Windows though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176251</commentid>
    <comment_count>2</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2009-12-31 19:07:22 -0800</bug_when>
    <thetext>A little more information: we are only seeing this on the Windows builds. Neither the Mac build or the Linux GTK+ port show this behavior. I&apos;m not sure how long this bug has been around, but I remember seeing it for at least a month. We can try to narrow it down a little.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176298</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-01 19:31:40 -0800</bug_when>
    <thetext>I cannot reproduce this on Windows with nightly r52686. Please attach a complete reduced test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177238</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-01-05 10:48:59 -0800</bug_when>
    <thetext>It could be that this is confined to the Win32 Cairo port. I&apos;ll double-check with the original reporter and update this ticket. Sorry for the confusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177837</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-06 16:07:40 -0800</bug_when>
    <thetext>I can reproduce this now. I don&apos;t know what went wrong with my testing before. The only difference I&apos;m aware of is that I was testing with XP, and am testing with Vista now - but that shouldn&apos;t affect behavior.

I&apos;m working on a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177930</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-06 19:48:38 -0800</bug_when>
    <thetext>The problem is due to the fact that jsString() and related functions are now inline, so JSString objects constructed from WebCore get a different virtual function table pointer. This breaks isJSString() function. I have added appropriate assertions to constructors, and saw them fire:

ASSERT(vptr() == globalData-&gt;jsStringVPtr);

The common way of telling the compiler to use the same vtable in DLL and EXE is to use __declspec(dllimport/dllexport). And this fixes the assertion indeed (that&apos;s equivalent to what we have on Mac OS X). But it doesn&apos;t fix the actual bug!

Turns out that MSVC changes the vptr AFTER constructor exits, trying to fix bugs in certain kinds of code for programmers: &lt;http://groups.google.com/group/microsoft.public.vc.language/msg/55cdcefeaf770212&gt;. I couldn&apos;t find a way to disable this behavior. Some possible ways to fix this are:
- don&apos;t construct inline (or only do that when building JSC);
- fix vptr in jsString() after constructing the object;
- check for type in some other way (maybe typeid().name, like dynamic_cast does? I&apos;m not sure if that works without RTTI though, or if MSVC breaks typename identity across DLL boundaries, too).

Suggestions are welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178415</commentid>
    <comment_count>7</comment_count>
      <attachid>46093</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-07 15:42:47 -0800</bug_when>
    <thetext>Created attachment 46093
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178419</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-07 15:47:40 -0800</bug_when>
    <thetext>Attachment 46093 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/cf/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
JavaScriptCore/runtime/JSString.h:359:  More than one command on the same line  [whitespace/newline] [4]
JavaScriptCore/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
JavaScriptCore/ChangeLog:10:  Line contains tab character.  [whitespace/tab] [5]
JavaScriptCore/ChangeLog:12:  Line contains tab character.  [whitespace/tab] [5]
JavaScriptCore/ChangeLog:13:  Line contains tab character.  [whitespace/tab] [5]
JavaScriptCore/ChangeLog:14:  Line contains tab character.  [whitespace/tab] [5]
JavaScriptCore/ChangeLog:15:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178426</commentid>
    <comment_count>9</comment_count>
      <attachid>46093</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-01-07 15:58:20 -0800</bug_when>
    <thetext>Comment on attachment 46093
proposed fix

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178437</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-07 16:17:32 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/52956&gt;.

This bug also affected PaceKeeper benchmark for Windows Safari, which now works for me.

For the record, the issue I had with my initial testing was that I was using Safari 4.0.3 - after updating to 4.0.4 on that machine, I could reproduce.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46093</attachid>
            <date>2010-01-07 15:42:47 -0800</date>
            <delta_ts>2010-01-07 15:58:20 -0800</delta_ts>
            <desc>proposed fix</desc>
            <filename>StringPatch.txt</filename>
            <type>text/plain</type>
            <size>25306</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUyOTUyKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTAtMDEtMDcgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMzMDU3CisgICAgICAgIFJFR1JFU1NJT04ocjQ5MzY1KTogdHlwZW9mKHhoci5yZXNwb25z
ZVRleHQpICE9ICJzdHJpbmciIGluIFdpbmRvd3MKKworCQk8cmRhcjovL3Byb2JsZW0vNzI5Njky
MD4gUkVHUkVTU0lPTjogV2ViS2l0IGZhaWxzIHRvIHN0YXJ0IFBlYWNlS2VlcGVyIGJlbmNobWFy
aworCisJCVRlc3Q6IGZhc3QvanMvd2ViY29yZS1zdHJpbmctY29tcGFyaXNvbi5odG1sCisKKwkJ
SW4gcjQ5MzY1LCBzb21lIGNvZGUgd2FzIG1vdmVkIGZyb20gSlNTdHJpbmcuY3BwIHRvIEpTU3Ry
aW5nLmgsIGFuZCBhcyBhIHJlc3VsdCwgV2ViQ29yZQorCQlnb3QgYSB3YXkgdG8gZGlyZWN0bHkg
aW5zdGFudGlhdGUgSlNTdHJpbmdzIG92ZXIgRExMIGJvcmRlcnMuIFNpbmNlIHZmdGFibGUgZm9y
IEpTU3RyaW5nIHdhcworCQlub3QgZXhwb3J0ZWQsIG9iamVjdHMgY3JlYXRlZCBmcm9tIFdlYkNv
cmUgZ290IGEgZGlmZmVyZW50IHZwdHIsIGFuZCBKYXZhU2NyaXB0Q29yZQorCQlvcHRpbWl6YXRp
b25zIHRoYXQgcmVsaWVkIG9uIHZwdHIgb2YgYWxsIEpTU3RyaW5nIG9iamVjdHMgYmVpbmcgZXF1
YWwgZmFpbGVkLgorCisgICAgICAgICogY29uZmlnLmg6IEFkZGVkIGEgSlNfRVhQT1JUQ0xBU1Mg
bWFjcm8gZm9yIGV4cG9ydGluZyBjbGFzc2VzLiBJdCdzIGN1cnJlbnRseSB0aGUgc2FtZSBhcwor
ICAgICAgICBKU19FWFBPUlREQVRBLCBidXQgaXQgY2xlYXJseSBuZWVkZWQgYSBuZXcgbmFtZS4K
KworICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChK
U0M6OmluaXRpYWxpemVUaHJlYWRpbmdPbmNlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6c3RvcmVWUHRycyk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxEYXRhOjpjcmVhdGVOb25EZWZhdWx0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRh
OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OnNoYXJlZEluc3RhbmNlKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICBTdG9yZSB2cHRycyBq
dXN0IG9uY2UsIG5vIG5lZWQgdG8gcmVwZWF0ZWRseSBwaWNrIGFuZCBjb3B5IHRoZW0uIFRoaXMg
bWFrZXMgaXQgcG9zc2libGUgdG8KKyAgICAgICAgYXNzZXJ0IHZwdHIgY29ycmVjdG5lc3MgaW4g
b2JqZWN0IGRlc3RydWN0b3JzICh3aGljaCBkb24ndCBoYXZlIGFjY2VzcyB0byBKU0dsb2JhbERh
dGEsCisgICAgICAgIGFuZCBldmVuIEhlYXA6OmhlYXAodGhpcykgd2lsbCBmYWlsIGZvciBmYWtl
IG9iamVjdHMgY3JlYXRlZCBmcm9tIHN0b3JlVlB0cnMoKSkuCisKKyAgICAgICAgKiBydW50aW1l
L0pTQXJyYXkuY3BwOiAoSlNDOjpKU0FycmF5Ojp+SlNBcnJheSk6IEFzc2VydCB0aGF0IHZwdHIg
aXMgd2hhdCB3ZSBleHBlY3QgaXQgdG8gYmUuCisgICAgICAgIEl0J3MgaW1wb3J0YW50IHRvIGFz
c2VydCBpbiBkZXN0cnVjdG9yLCBiZWNhdXNlIE1TVkMgY2hhbmdlcyB0aGUgdnB0ciBhZnRlciBj
b25zdHJ1Y3RvcgorICAgICAgICBpcyBpbnZva2VkLgorICAgICAgICAqIHJ1bnRpbWUvSlNCeXRl
QXJyYXkuY3BwOiAoSlNDOjpKU0J5dGVBcnJheTo6fkpTQnl0ZUFycmF5KTogRGl0dG8uCisgICAg
ICAgICogcnVudGltZS9KU0J5dGVBcnJheS5oOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uaDogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDogKEpT
Qzo6SlNGdW5jdGlvbjo6fkpTRnVuY3Rpb24pOiBEaXR0by4KKworICAgICAgICAqIHJ1bnRpbWUv
SlNDZWxsLmg6IChKU0M6OkpTQ2VsbDo6c2V0VlB0cik6IEFkZGVkIGEgbWV0aG9kIHRvIHN1YnN0
aXR1dGUgdnB0ciBmb3IgYW5vdGhlcgorICAgICAgICBvbmUuCisKKyAgICAgICAgKiBydW50aW1l
L0pTU3RyaW5nLmg6IEV4cG9ydCBKU1N0cmluZyBjbGFzcyB0b2dldGhlciB3aXRoIGl0cyB2ZnRh
YmxlLCBhbmQgdGVsbCBvdGhlcgorICAgICAgICBsaWJyYXJpZXMgdHAgaW1wb3J0IGl0LiBUaGlz
IGlzIG5lZWRlZCBvbiBwbGF0Zm9ybXMgdGhhdCBoYXZlIGEgc2VwYXJhdGUgSmF2YVNjcmlwdENv
cmUKKyAgICAgICAgZHluYW1pYyBsaWJyYXJ5IC0gYW5kIG9uIE1hYywgd2UgYWxyZWFkeSBkaWQg
dGhlIGV4cG9ydCB2aWEgSmF2YVNjcmlwdENvcmUuZXhwLgorICAgICAgICAoSlNDOjpKU1N0cmlu
Zzo6fkpTU3RyaW5nKTogQXNzZXJ0IHRoYSB2cHRyIGlzIHdoYXQgd2UgZXhwZWN0IGl0IHRvIGJl
LgorICAgICAgICAoSlNDOjpmaXh1cFZQdHIpOiBTdG9yZSBhIHByZXZpb3VzbHkgc2F2ZWQgcHJp
bWFyeSB2ZnRhYmxlIHBvaW50ZXIgKGRvIG5vdGhpbmcgaWYgYnVpbGRpbmcKKyAgICAgICAgSmF2
YVNjcmlwdENvcmUgaXRzZWxmKS4KKyAgICAgICAgKEpTQzo6anNTaW5nbGVDaGFyYWN0ZXJTdHJp
bmcpOiBDYWxsIGZpeHVwVlB0ciBpbiBjYXNlIHRoaXMgaXMgY2FsbCBhY3Jvc3MgRExMIGJvdW5k
YXJ5LgorICAgICAgICAoSlNDOjpqc1NpbmdsZUNoYXJhY3RlclN1YnN0cmluZyk6IERpdHRvLgor
ICAgICAgICAoSlNDOjpqc05vbnRyaXZpYWxTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKEpTQzo6
anNTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKEpTQzo6anNTdWJzdHJpbmcpOiBEaXR0by4KKyAg
ICAgICAgKEpTQzo6anNPd25lZFN0cmluZyk6IERpdHRvLgorCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjogRXhwb3J0IHRo
ZSBuZXcgc3RhdGljCisgICAgICAgIEpTR2xvYmFsRGF0YSBtZW1iZXJzIHRoYXQgYXJlIHVzZWQg
aW4gV2ViQ29yZSB2aWEgaW5saW5lIGZ1bmN0aW9ucy4KKwogMjAxMC0wMS0wNyAgR2VvZmZyZXkg
R2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWlu
aWcuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9jb25maWcuaAkocmV2aXNpb24gNTI5NTApCisrKyBKYXZhU2NyaXB0Q29yZS9jb25m
aWcuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsMTAgQEAKICNlbHNlCiAjZGVmaW5lIEpT
X0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjZW5kaWYKKyNkZWZpbmUgSlNfRVhQ
T1JUQ0xBU1MgSlNfRVhQT1JUREFUQQogI2Vsc2UKICNkZWZpbmUgSlNfRVhQT1JUREFUQQorI2Rl
ZmluZSBKU19FWFBPUlRDTEFTUwogI2VuZGlmCiAKICNpZiBPUyhXSU5ET1dTKQpJbmRleDogSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmRlZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCShyZXZpc2lvbiA1Mjk1MCkK
KysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTE4MCwxMiArMTgwLDE0IEBAIEVY
UE9SVFMKICAgICA/aXNIb3N0RnVuY3Rpb25Ob25JbmxpbmVASlNGdW5jdGlvbkBKU0NAQEFCRV9O
WFoKICAgICA/aXNNYWluVGhyZWFkQFdURkBAWUFfTlhaCiAgICAgP2lzVmFyaWFibGVPYmplY3RA
SlNWYXJpYWJsZU9iamVjdEBKU0NAQFVCRV9OWFoKKyAgICA/anNBcnJheVZQdHJASlNHbG9iYWxE
YXRhQEpTQ0BAMlBBWEEKICAgICA/anNOdW1iZXJDZWxsQEpTQ0BAWUE/QVZKU1ZhbHVlQDFAUEFW
RXhlY1N0YXRlQDFATkBaCiAgICAgP2pzT3duZWRTdHJpbmdASlNDQEBZQVBBVkpTU3RyaW5nQDFA
UEFWSlNHbG9iYWxEYXRhQDFAQUJWVVN0cmluZ0AxQEBaCiAgICAgP2pzUmVnRXhwQ29tcGlsZUBA
WUFQQVVKU1JlZ0V4cEBAUEJfV0hXNEpTUmVnRXhwSWdub3JlQ2FzZU9wdGlvbkBAVzRKU1JlZ0V4
cE11bHRpbGluZU9wdGlvbkBAUEFJUEFQQkRAWgogICAgID9qc1JlZ0V4cEV4ZWN1dGVAQFlBSFBC
VUpTUmVnRXhwQEBQQl9XSEhQQUhIQFoKICAgICA/anNSZWdFeHBGcmVlQEBZQVhQQVVKU1JlZ0V4
cEBAQFoKICAgICA/anNTdHJpbmdASlNDQEBZQVBBVkpTU3RyaW5nQDFAUEFWSlNHbG9iYWxEYXRh
QDFAQUJWVVN0cmluZ0AxQEBaCisgICAgP2pzU3RyaW5nVlB0ckBKU0dsb2JhbERhdGFASlNDQEAy
UEFYQQogICAgID9sb2NrQEpTTG9ja0BKU0NAQFNBWFc0SlNMb2NrQmVoYXZpb3JAMkBAWgogICAg
ID9sb2NrQE11dGV4QFdURkBAUUFFWFhaCiAgICAgP2xvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRT
dGF0aWNNdXRleEBXVEZAQFlBWFhaCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRp
YWxpemVUaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHJldmlzaW9uIDUyOTUwKQorKysgSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDks
NiArNDksNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nT25jZSgpCiB7CiAgICAg
V1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgaW5pdGlhbGl6ZVVTdHJpbmcoKTsKKyAg
ICBKU0dsb2JhbERhdGE6OnN0b3JlVlB0cnMoKTsKICNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RI
UkVBRFMpCiAgICAgc19kdG9hUDVNdXRleCA9IG5ldyBNdXRleDsKICAgICBpbml0aWFsaXplRGF0
ZXMoKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gNTI5NTAp
CisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODUsNiArMTg1LDcgQEAgSlNBcnJheTo6SlNBcnJheShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1
YwogCiBKU0FycmF5Ojp+SlNBcnJheSgpCiB7CisgICAgQVNTRVJUKHZwdHIoKSA9PSBKU0dsb2Jh
bERhdGE6OmpzQXJyYXlWUHRyKTsKICAgICBjaGVja0NvbnNpc3RlbmN5KERlc3RydWN0b3JDb25z
aXN0ZW5jeUNoZWNrKTsKIAogICAgIGRlbGV0ZSBtX3N0b3JhZ2UtPm1fc3BhcnNlVmFsdWVNYXA7
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcAkocmV2aXNpb24gNTI5
NTApCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNyArNDIsMTUgQEAgSlNCeXRlQXJyYXk6OkpTQnl0ZUFycmF5KEV4ZWNTdGF0
ZSogZXhlYwogewogICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcihleGVjLCBtX3N0b3JhZ2UtPmxlbmd0aCgpKSwgUmVhZE9ubHkg
fCBEb250RGVsZXRlKTsKIH0KLSAgICAKKworI2lmICFBU1NFUlRfRElTQUJMRUQKK0pTQnl0ZUFy
cmF5Ojp+SlNCeXRlQXJyYXkoKQoreworICAgIEFTU0VSVCh2cHRyKCkgPT0gSlNHbG9iYWxEYXRh
Ojpqc0J5dGVBcnJheVZQdHIpOworfQorI2VuZGlmCisKKwogUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IEpTQnl0ZUFycmF5OjpjcmVhdGVTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90b3R5cGUpCiB7CiAgICAg
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHJlc3VsdCA9IFN0cnVjdHVyZTo6Y3JlYXRlKHByb3RvdHlw
ZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpKTsKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgJKHJldmlzaW9uIDUyOTUwKQorKysgSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0J5dGVBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBA
CiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTQnl0ZUFycmF5IDogcHVibGljIEpTT2Jq
ZWN0IHsKLSAgICAgICAgZnJpZW5kIHN0cnVjdCBWUHRyU2V0OworICAgICAgICBmcmllbmQgY2xh
c3MgSlNHbG9iYWxEYXRhOwogICAgIHB1YmxpYzoKICAgICAgICAgYm9vbCBjYW5BY2Nlc3NJbmRl
eCh1bnNpZ25lZCBpKSB7IHJldHVybiBpIDwgbV9zdG9yYWdlLT5sZW5ndGgoKTsgfQogICAgICAg
ICBKU1ZhbHVlIGdldEluZGV4KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSkKQEAgLTkxLDYg
KzkxLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFdURjo6Qnl0ZUFycmF5KiBzdG9y
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlLmdldCgpOyB9CiAKKyNpZiAhQVNTRVJUX0RJ
U0FCTEVECisgICAgICAgIHZpcnR1YWwgfkpTQnl0ZUFycmF5KCk7CisjZW5kaWYKKwogICAgIHBy
b3RlY3RlZDoKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8
IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
CShyZXZpc2lvbiA1Mjk1MCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKU1ZhbHVlOwogICAgICAgICBmcmllbmQgY2xhc3MgSlNBUElWYWx1ZVdyYXBw
ZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU1pvbWJpZTsKLSAgICAgICAgZnJpZW5kIHN0cnVj
dCBWUHRyU2V0OworICAgICAgICBmcmllbmQgY2xhc3MgSlNHbG9iYWxEYXRhOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgZXhwbGljaXQgSlNDZWxsKFN0cnVjdHVyZSopOwpAQCAtMTExLDYgKzEx
MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIEpTU3RyaW5nKiB0b1RoaXNK
U1N0cmluZyhFeGVjU3RhdGUqKTsKICAgICAgICAgdmlydHVhbCBKU1ZhbHVlIGdldEpTTnVtYmVy
KCk7CiAgICAgICAgIHZvaWQqIHZwdHIoKSB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kio+KHRoaXMpOyB9CisgICAgICAgIHZvaWQgc2V0VlB0cih2b2lkKiB2cHRyKSB7ICpyZWludGVy
cHJldF9jYXN0PHZvaWQqKj4odGhpcykgPSB2cHRyOyB9CiAKICAgICBwcml2YXRlOgogICAgICAg
ICAvLyBCYXNlIGltcGxlbWVudGF0aW9uOyBmb3Igbm9uLW9iamVjdCBjbGFzc2VzIGltcGxlbWVu
dHMgZ2V0UHJvcGVydHlTbG90LgpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
Y3BwCShyZXZpc2lvbiA1Mjk1MCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDggQEAgSlNGdW5jdGlvbjo6SlNGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIAogCiBKU0Z1bmN0aW9uOjp+SlNGdW5jdGlvbigpCiB7Cisg
ICAgQVNTRVJUKHZwdHIoKSA9PSBKU0dsb2JhbERhdGE6OmpzRnVuY3Rpb25WUHRyKTsKKwogICAg
IC8vIEpJVCBjb2RlIGZvciBvdGhlciBmdW5jdGlvbnMgbWF5IGhhdmUgaGFkIGNhbGxzIGxpbmtl
ZCBkaXJlY3RseSB0byB0aGUgY29kZSBmb3IgdGhpcyBmdW5jdGlvbjsgdGhlc2UgbGlua3MKICAg
ICAvLyBhcmUgYmFzZWQgb24gYSBjaGVjayBmb3IgdGhlIHRoaXMgcG9pbnRlciB2YWx1ZSBmb3Ig
dGhpcyBKU0Z1bmN0aW9uIC0gd2hpY2ggd2lsbCBubyBsb25nZXIgYmUgdmFsaWQgb25jZQogICAg
IC8vIHRoaXMgbWVtb3J5IGlzIGZyZWVkIGFuZCBtYXkgYmUgcmV1c2VkIChwb3RlbnRpYWxseSBm
b3IgYW5vdGhlciwgZGlmZmVyZW50IEpTRnVuY3Rpb24pLgpJbmRleDogSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDUyOTUwKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBKU0Z1bmN0aW9uIDogcHVibGljIEludGVybmFsRnVuY3Rpb24g
ewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwotICAgICAgICBmcmllbmQgc3RydWN0IFZQdHJT
ZXQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBKU0dsb2JhbERhdGE7CiAKICAgICAgICAgdHlwZWRl
ZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDUyOTUwKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw0MiArNzEsMzggQEAgZXh0
ZXJuIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxlIHJlZwogZXh0ZXJuIEpTQ19DT05TVF9I
QVNIVEFCTEUgSGFzaFRhYmxlIHJlZ0V4cENvbnN0cnVjdG9yVGFibGU7CiBleHRlcm4gSlNDX0NP
TlNUX0hBU0hUQUJMRSBIYXNoVGFibGUgc3RyaW5nVGFibGU7CiAKLXN0cnVjdCBWUHRyU2V0IHsK
LSAgICBWUHRyU2V0KCk7Cit2b2lkKiBKU0dsb2JhbERhdGE6OmpzQXJyYXlWUHRyOwordm9pZCog
SlNHbG9iYWxEYXRhOjpqc0J5dGVBcnJheVZQdHI7Cit2b2lkKiBKU0dsb2JhbERhdGE6OmpzU3Ry
aW5nVlB0cjsKK3ZvaWQqIEpTR2xvYmFsRGF0YTo6anNGdW5jdGlvblZQdHI7CiAKLSAgICB2b2lk
KiBqc0FycmF5VlB0cjsKLSAgICB2b2lkKiBqc0J5dGVBcnJheVZQdHI7Ci0gICAgdm9pZCoganNT
dHJpbmdWUHRyOwotICAgIHZvaWQqIGpzRnVuY3Rpb25WUHRyOwotfTsKLQotVlB0clNldDo6VlB0
clNldCgpCit2b2lkIEpTR2xvYmFsRGF0YTo6c3RvcmVWUHRycygpCiB7CiAgICAgQ29sbGVjdG9y
Q2VsbCBjZWxsOwogICAgIHZvaWQqIHN0b3JhZ2UgPSAmY2VsbDsKIAogICAgIENPTVBJTEVfQVNT
RVJUKHNpemVvZihKU0FycmF5KSA8PSBzaXplb2YoQ29sbGVjdG9yQ2VsbCksIHNpemVvZl9KU0Fy
cmF5X211c3RfYmVfbGVzc190aGFuX0NvbGxlY3RvckNlbGwpOwogICAgIEpTQ2VsbCoganNBcnJh
eSA9IG5ldyAoc3RvcmFnZSkgSlNBcnJheShKU0FycmF5OjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxs
KCkpKTsKLSAgICBqc0FycmF5VlB0ciA9IGpzQXJyYXktPnZwdHIoKTsKKyAgICBKU0dsb2JhbERh
dGE6OmpzQXJyYXlWUHRyID0ganNBcnJheS0+dnB0cigpOwogICAgIGpzQXJyYXktPn5KU0NlbGwo
KTsKIAogICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihKU0J5dGVBcnJheSkgPD0gc2l6ZW9mKENv
bGxlY3RvckNlbGwpLCBzaXplb2ZfSlNCeXRlQXJyYXlfbXVzdF9iZV9sZXNzX3RoYW5fQ29sbGVj
dG9yQ2VsbCk7CiAgICAgSlNDZWxsKiBqc0J5dGVBcnJheSA9IG5ldyAoc3RvcmFnZSkgSlNCeXRl
QXJyYXkoSlNCeXRlQXJyYXk6OlZQdHJTdGVhbGluZ0hhY2spOwotICAgIGpzQnl0ZUFycmF5VlB0
ciA9IGpzQnl0ZUFycmF5LT52cHRyKCk7CisgICAgSlNHbG9iYWxEYXRhOjpqc0J5dGVBcnJheVZQ
dHIgPSBqc0J5dGVBcnJheS0+dnB0cigpOwogICAgIGpzQnl0ZUFycmF5LT5+SlNDZWxsKCk7CiAK
ICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoSlNTdHJpbmcpIDw9IHNpemVvZihDb2xsZWN0b3JD
ZWxsKSwgc2l6ZW9mX0pTU3RyaW5nX211c3RfYmVfbGVzc190aGFuX0NvbGxlY3RvckNlbGwpOwog
ICAgIEpTQ2VsbCoganNTdHJpbmcgPSBuZXcgKHN0b3JhZ2UpIEpTU3RyaW5nKEpTU3RyaW5nOjpW
UHRyU3RlYWxpbmdIYWNrKTsKLSAgICBqc1N0cmluZ1ZQdHIgPSBqc1N0cmluZy0+dnB0cigpOwor
ICAgIEpTR2xvYmFsRGF0YTo6anNTdHJpbmdWUHRyID0ganNTdHJpbmctPnZwdHIoKTsKICAgICBq
c1N0cmluZy0+fkpTQ2VsbCgpOwogCiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEpTRnVuY3Rp
b24pIDw9IHNpemVvZihDb2xsZWN0b3JDZWxsKSwgc2l6ZW9mX0pTRnVuY3Rpb25fbXVzdF9iZV9s
ZXNzX3RoYW5fQ29sbGVjdG9yQ2VsbCk7CiAgICAgSlNDZWxsKiBqc0Z1bmN0aW9uID0gbmV3IChz
dG9yYWdlKSBKU0Z1bmN0aW9uKEpTRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkp
OwotICAgIGpzRnVuY3Rpb25WUHRyID0ganNGdW5jdGlvbi0+dnB0cigpOworICAgIEpTR2xvYmFs
RGF0YTo6anNGdW5jdGlvblZQdHIgPSBqc0Z1bmN0aW9uLT52cHRyKCk7CiAgICAganNGdW5jdGlv
bi0+fkpTQ2VsbCgpOwogfQogCi1KU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShib29sIGlzU2hh
cmVkLCBjb25zdCBWUHRyU2V0JiB2cHRyU2V0KQorSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEo
Ym9vbCBpc1NoYXJlZCkKICAgICA6IGlzU2hhcmVkSW5zdGFuY2UoaXNTaGFyZWQpCiAgICAgLCBj
bGllbnREYXRhKDApCiAgICAgLCBhcnJheVRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OmFy
cmF5VGFibGUpKQpAQCAtMTMwLDEwICsxMjYsNiBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0
YShib29sIGlzU2hhcmVkCiAjaWYgVVNFKEpTVkFMVUUzMikKICAgICAsIG51bWJlclN0cnVjdHVy
ZShKU051bWJlckNlbGw6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCiAjZW5kaWYKLSAgICAs
IGpzQXJyYXlWUHRyKHZwdHJTZXQuanNBcnJheVZQdHIpCi0gICAgLCBqc0J5dGVBcnJheVZQdHIo
dnB0clNldC5qc0J5dGVBcnJheVZQdHIpCi0gICAgLCBqc1N0cmluZ1ZQdHIodnB0clNldC5qc1N0
cmluZ1ZQdHIpCi0gICAgLCBqc0Z1bmN0aW9uVlB0cih2cHRyU2V0LmpzRnVuY3Rpb25WUHRyKQog
ICAgICwgaWRlbnRpZmllclRhYmxlKGNyZWF0ZUlkZW50aWZpZXJUYWJsZSgpKQogICAgICwgcHJv
cGVydHlOYW1lcyhuZXcgQ29tbW9uSWRlbnRpZmllcnModGhpcykpCiAgICAgLCBlbXB0eUxpc3Qo
bmV3IE1hcmtlZEFyZ3VtZW50QnVmZmVyKQpAQCAtMTQ5LDcgKzE0MSw3IEBAIEpTR2xvYmFsRGF0
YTo6SlNHbG9iYWxEYXRhKGJvb2wgaXNTaGFyZWQKICAgICAsIGR5bmFtaWNHbG9iYWxPYmplY3Qo
MCkKICAgICAsIGZ1bmN0aW9uQ29kZUJsb2NrQmVpbmdSZXBhcnNlZCgwKQogICAgICwgZmlyc3RT
dHJpbmdpZmllclRvTWFyaygwKQotICAgICwgbWFya1N0YWNrKHZwdHJTZXQuanNBcnJheVZQdHIp
CisgICAgLCBtYXJrU3RhY2soanNBcnJheVZQdHIpCiAgICAgLCBjYWNoZWRVVENPZmZzZXQoTmFO
KQogICAgICwgd2Vha1JhbmRvbShzdGF0aWNfY2FzdDxpbnQ+KGN1cnJlbnRUaW1lKCkpKQogI2lm
bmRlZiBOREVCVUcKQEAgLTIwNCwxMiArMTk2LDEyIEBAIEpTR2xvYmFsRGF0YTo6fkpTR2xvYmFs
RGF0YSgpCiAKIFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0ZU5v
bkRlZmF1bHQoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNHbG9iYWxEYXRhKGZhbHNl
LCBWUHRyU2V0KCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTR2xvYmFsRGF0YShmYWxz
ZSkpOwogfQogCiBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gSlNHbG9iYWxEYXRhOjpjcmVhdGUo
KQogewotICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9IG5ldyBKU0dsb2JhbERhdGEoZmFs
c2UsIFZQdHJTZXQoKSk7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gbmV3IEpTR2xv
YmFsRGF0YShmYWxzZSk7CiAgICAgc2V0RGVmYXVsdElkZW50aWZpZXJUYWJsZShnbG9iYWxEYXRh
LT5pZGVudGlmaWVyVGFibGUpOwogICAgIHNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoZ2xvYmFs
RGF0YS0+aWRlbnRpZmllclRhYmxlKTsKICAgICByZXR1cm4gYWRvcHRSZWYoZ2xvYmFsRGF0YSk7
CkBAIC0yMzIsNyArMjI0LDcgQEAgSlNHbG9iYWxEYXRhJiBKU0dsb2JhbERhdGE6OnNoYXJlZElu
c3RhbgogewogICAgIEpTR2xvYmFsRGF0YSomIGluc3RhbmNlID0gc2hhcmVkSW5zdGFuY2VJbnRl
cm5hbCgpOwogICAgIGlmICghaW5zdGFuY2UpIHsKLSAgICAgICAgaW5zdGFuY2UgPSBuZXcgSlNH
bG9iYWxEYXRhKHRydWUsIFZQdHJTZXQoKSk7CisgICAgICAgIGluc3RhbmNlID0gbmV3IEpTR2xv
YmFsRGF0YSh0cnVlKTsKICNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCiAgICAgICAg
IGluc3RhbmNlLT5tYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhyZWFkcygpOwogI2VuZGlmCkluZGV4
OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDUyOTUwKQorKysg
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAt
NjIsNyArNjIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHN0cnVjdCBIYXNoVGFibGU7CiAg
ICAgc3RydWN0IEluc3RydWN0aW9uOyAgICAKLSAgICBzdHJ1Y3QgVlB0clNldDsKIAogICAgIHN0
cnVjdCBEU1RPZmZzZXRDYWNoZSB7CiAgICAgICAgIERTVE9mZnNldENhY2hlKCkKQEAgLTEzMCwx
MCArMTI5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBu
dW1iZXJTdHJ1Y3R1cmU7CiAjZW5kaWYKIAotICAgICAgICB2b2lkKiBqc0FycmF5VlB0cjsKLSAg
ICAgICAgdm9pZCoganNCeXRlQXJyYXlWUHRyOwotICAgICAgICB2b2lkKiBqc1N0cmluZ1ZQdHI7
Ci0gICAgICAgIHZvaWQqIGpzRnVuY3Rpb25WUHRyOworICAgICAgICBzdGF0aWMgdm9pZCBzdG9y
ZVZQdHJzKCk7CisgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIHZvaWQqIGpzQXJyYXlWUHRy
OworICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSB2b2lkKiBqc0J5dGVBcnJheVZQdHI7Cisg
ICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIHZvaWQqIGpzU3RyaW5nVlB0cjsKKyAgICAgICAg
c3RhdGljIEpTX0VYUE9SVERBVEEgdm9pZCoganNGdW5jdGlvblZQdHI7CiAKICAgICAgICAgSWRl
bnRpZmllclRhYmxlKiBpZGVudGlmaWVyVGFibGU7CiAgICAgICAgIENvbW1vbklkZW50aWZpZXJz
KiBwcm9wZXJ0eU5hbWVzOwpAQCAtMTk0LDcgKzE5NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIHN0b3BTYW1wbGluZygpOwogICAgICAgICB2b2lkIGR1bXBTYW1wbGVEYXRhKEV4
ZWNTdGF0ZSogZXhlYyk7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgSlNHbG9iYWxEYXRhKGJvb2wg
aXNTaGFyZWQsIGNvbnN0IFZQdHJTZXQmKTsKKyAgICAgICAgSlNHbG9iYWxEYXRhKGJvb2wgaXNT
aGFyZWQpOwogICAgICAgICBzdGF0aWMgSlNHbG9iYWxEYXRhKiYgc2hhcmVkSW5zdGFuY2VJbnRl
cm5hbCgpOwogICAgICAgICB2b2lkIGNyZWF0ZU5hdGl2ZVRodW5rKCk7CiAgICAgfTsKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDUyOTUwKQorKysgSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxMCArNTksMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoSlNHbG9iYWxE
YXRhKiwgY29uc3QgVVN0cmluZyYpOyAKICAgICBKU1N0cmluZyoganNPd25lZFN0cmluZyhFeGVj
U3RhdGUqLCBjb25zdCBVU3RyaW5nJik7IAogCi0gICAgY2xhc3MgSlNTdHJpbmcgOiBwdWJsaWMg
SlNDZWxsIHsKKyAgICBjbGFzcyBKU19FWFBPUlRDTEFTUyBKU1N0cmluZyA6IHB1YmxpYyBKU0Nl
bGwgewogICAgIHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKLSAgICAgICAgZnJp
ZW5kIHN0cnVjdCBWUHRyU2V0OworICAgICAgICBmcmllbmQgY2xhc3MgSlNHbG9iYWxEYXRhOwog
CiAgICAgICAgIC8vIEEgUm9wZSBpcyBhIHN0cmluZyBjb21wb3NlZCBvZiBhIHNldCBvZiBzdWJz
dHJpbmdzLgogICAgICAgICBjbGFzcyBSb3BlIDogcHVibGljIFJlZkNvdW50ZWQ8Um9wZT4gewpA
QCAtMjQ3LDYgKzI0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIH5KU1N0cmluZygp
CiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCh2cHRyKCkgPT0gSlNHbG9iYWxEYXRhOjpq
c1N0cmluZ1ZQdHIpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcm9w
ZUxlbmd0aDsgKytpKQogICAgICAgICAgICAgICAgIG1fZmliZXJzW2ldLmRlcmVmKCk7CiAgICAg
ICAgIH0KQEAgLTM1MCw2ICszNTEsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBKU1N0cmlu
ZyogYXNTdHJpbmcoSlNWYWx1ZSk7CiAKKyAgICAvLyBXaGVuIGFuIG9iamVjdCBpcyBjcmVhdGVk
IGZyb20gYSBkaWZmZXJlbnQgRExMLCBNU1ZDIGNoYW5nZXMgdnB0ciB0byBhICJsb2NhbCIgb25l
IHJpZ2h0IGFmdGVyIGludm9raW5nIGEgY29uc3RydWN0b3IsCisgICAgLy8gc2VlIDxodHRwOi8v
Z3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvbWljcm9zb2Z0LnB1YmxpYy52Yy5sYW5ndWFnZS9tc2cv
NTVjZGNlZmVhZjc3MDIxMj4uCisgICAgLy8gVGhpcyBicmVha3MgaXNKU1N0cmluZygpLCBhbmQg
d2UgZG9uJ3QgbmVlZCB0aGF0IGhhY2sgYW55d2F5LCBzbyB3ZSBjaGFuZ2UgdnB0ciBiYWNrIHRv
IHByaW1hcnkgb25lLgorICAgIC8vIFRoZSBiZWxvdyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBi
eSBhbnkgaW5saW5lIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBhIEpTU3RyaW5nIGNvbnN0cnVjdG9y
LgorI2lmIENPTVBJTEVSKE1TVkMpICYmICFkZWZpbmVkKEJVSUxESU5HX0phdmFTY3JpcHRDb3Jl
KQorICAgIGlubGluZSBKU1N0cmluZyogZml4dXBWUHRyKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgSlNTdHJpbmcqIHN0cmluZykgeyBzdHJpbmctPnNldFZQdHIoZ2xvYmFsRGF0YS0+anNTdHJp
bmdWUHRyKTsgcmV0dXJuIHN0cmluZzsgfQorI2Vsc2UKKyAgICBpbmxpbmUgSlNTdHJpbmcqIGZp
eHVwVlB0cihKU0dsb2JhbERhdGEqLCBKU1N0cmluZyogc3RyaW5nKSB7IHJldHVybiBzdHJpbmc7
IH0KKyNlbmRpZgorCiAgICAgaW5saW5lIEpTU3RyaW5nKiBhc1N0cmluZyhKU1ZhbHVlIHZhbHVl
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGFzQ2VsbCh2YWx1ZSktPmlzU3RyaW5nKCkpOwpAQCAt
MzY1LDcgKzM3Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICAgICAgaWYgKGMgPD0g
MHhGRikKICAgICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3Muc2luZ2xl
Q2hhcmFjdGVyU3RyaW5nKGdsb2JhbERhdGEsIGMpOwotICAgICAgICByZXR1cm4gbmV3IChnbG9i
YWxEYXRhKSBKU1N0cmluZyhnbG9iYWxEYXRhLCBVU3RyaW5nKCZjLCAxKSk7CisgICAgICAgIHJl
dHVybiBmaXh1cFZQdHIoZ2xvYmFsRGF0YSwgbmV3IChnbG9iYWxEYXRhKSBKU1N0cmluZyhnbG9i
YWxEYXRhLCBVU3RyaW5nKCZjLCAxKSkpOwogICAgIH0KIAogICAgIGlubGluZSBKU1N0cmluZyog
anNTaW5nbGVDaGFyYWN0ZXJTdWJzdHJpbmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25z
dCBVU3RyaW5nJiBzLCB1bnNpZ25lZCBvZmZzZXQpCkBAIC0zNzQsNyArMzg1LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFVDaGFyIGMgPSBzLmRhdGEoKVtvZmZzZXRdOwogICAgICAgICBp
ZiAoYyA8PSAweEZGKQogICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEtPnNtYWxsU3RyaW5n
cy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoZ2xvYmFsRGF0YSwgYyk7Ci0gICAgICAgIHJldHVybiBu
ZXcgKGdsb2JhbERhdGEpIEpTU3RyaW5nKGdsb2JhbERhdGEsIFVTdHJpbmcoVVN0cmluZzo6UmVw
OjpjcmVhdGUocy5yZXAoKSwgb2Zmc2V0LCAxKSkpOworICAgICAgICByZXR1cm4gZml4dXBWUHRy
KGdsb2JhbERhdGEsIG5ldyAoZ2xvYmFsRGF0YSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgVVN0cmlu
ZyhVU3RyaW5nOjpSZXA6OmNyZWF0ZShzLnJlcCgpLCBvZmZzZXQsIDEpKSkpOwogICAgIH0KIAog
ICAgIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgY29uc3QgY2hhciogcykKQEAgLTM4MiwxMyArMzkzLDEzIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBBU1NFUlQocyk7CiAgICAgICAgIEFTU0VSVChzWzBdKTsKICAgICAgICAg
QVNTRVJUKHNbMV0pOwotICAgICAgICByZXR1cm4gbmV3IChnbG9iYWxEYXRhKSBKU1N0cmluZyhn
bG9iYWxEYXRhLCBzKTsKKyAgICAgICAgcmV0dXJuIGZpeHVwVlB0cihnbG9iYWxEYXRhLCBuZXcg
KGdsb2JhbERhdGEpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHMpKTsKICAgICB9CiAKICAgICBpbmxp
bmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IGNvbnN0IFVTdHJpbmcmIHMpCiAgICAgewogICAgICAgICBBU1NFUlQocy5zaXplKCkgPiAxKTsK
LSAgICAgICAgcmV0dXJuIG5ldyAoZ2xvYmFsRGF0YSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgcyk7
CisgICAgICAgIHJldHVybiBmaXh1cFZQdHIoZ2xvYmFsRGF0YSwgbmV3IChnbG9iYWxEYXRhKSBK
U1N0cmluZyhnbG9iYWxEYXRhLCBzKSk7CiAgICAgfQogCiAgICAgaW5saW5lIEpTU3RyaW5nKiBK
U1N0cmluZzo6Z2V0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpKQpAQCAtNDA3LDcg
KzQxOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaWYgKGMgPD0gMHhGRikKICAg
ICAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJh
Y3RlclN0cmluZyhnbG9iYWxEYXRhLCBjKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3
IChnbG9iYWxEYXRhKSBKU1N0cmluZyhnbG9iYWxEYXRhLCBzKTsKKyAgICAgICAgcmV0dXJuIGZp
eHVwVlB0cihnbG9iYWxEYXRhLCBuZXcgKGdsb2JhbERhdGEpIEpTU3RyaW5nKGdsb2JhbERhdGEs
IHMpKTsKICAgICB9CiAKICAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpCkBAIC00MjIsNyArNDMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICBpZiAoYyA8PSAweEZGKQogICAgICAgICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5z
bWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGdsb2JhbERhdGEsIGMpOwogICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBuZXcgKGdsb2JhbERhdGEpIEpTU3RyaW5nKGdsb2JhbERhdGEs
IFVTdHJpbmcoVVN0cmluZzo6UmVwOjpjcmVhdGUocy5yZXAoKSwgb2Zmc2V0LCBsZW5ndGgpKSwg
SlNTdHJpbmc6Okhhc090aGVyT3duZXIpOworICAgICAgICByZXR1cm4gZml4dXBWUHRyKGdsb2Jh
bERhdGEsIG5ldyAoZ2xvYmFsRGF0YSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgVVN0cmluZyhVU3Ry
aW5nOjpSZXA6OmNyZWF0ZShzLnJlcCgpLCBvZmZzZXQsIGxlbmd0aCkpLCBKU1N0cmluZzo6SGFz
T3RoZXJPd25lcikpOwogICAgIH0KIAogICAgIGlubGluZSBKU1N0cmluZyoganNPd25lZFN0cmlu
ZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHMpCkBAIC00MzUsNyAr
NDQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpZiAoYyA8PSAweEZGKQogICAg
ICAgICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFj
dGVyU3RyaW5nKGdsb2JhbERhdGEsIGMpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXcg
KGdsb2JhbERhdGEpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHMsIEpTU3RyaW5nOjpIYXNPdGhlck93
bmVyKTsKKyAgICAgICAgcmV0dXJuIGZpeHVwVlB0cihnbG9iYWxEYXRhLCBuZXcgKGdsb2JhbERh
dGEpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHMsIEpTU3RyaW5nOjpIYXNPdGhlck93bmVyKSk7CiAg
ICAgfQogCiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YykgeyByZXR1cm4ganNFbXB0eVN0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpKTsgfQpJbmRleDog
V2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDUyOTUyKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMC0wMS0wNyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMwNTcKKyAgICAgICAgUkVHUkVTU0lP
TihyNDkzNjUpOiB0eXBlb2YoeGhyLnJlc3BvbnNlVGV4dCkgIT0gInN0cmluZyIgaW4gV2luZG93
cworCisJCTxyZGFyOi8vcHJvYmxlbS83Mjk2OTIwPiBSRUdSRVNTSU9OOiBXZWJLaXQgZmFpbHMg
dG8gc3RhcnQgUGVhY2VLZWVwZXIgYmVuY2htYXJrCisKKyAgICAgICAgKiBjb25maWcuaDogRGVm
aW5lIEpTX0VYUE9SVENMQVNTLiBJJ20gbm90IHN1cmUgd2h5IHRoaXMgaXNuJ3QgZG9uZSBpbiBK
U0MgZ2xvYmFsbHkgZm9yIGFsbAorICAgICAgICBwb3NzaWJsZSBjbGllbnRzLCBidXQga2VlcGlu
ZyB0aGUgY3VycmVudCBkZXNpZ24gZm9yIG5vdy4KKwogMjAxMC0wMS0wNyAgTmF0ZSBDaGFwaW4g
IDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xh
emtvdi4KSW5kZXg6IFdlYkNvcmUvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jb25m
aWcuaAkocmV2aXNpb24gNTI5NTApCisrKyBXZWJDb3JlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw4ICszNiwxMCBAQAogI2Vsc2UKICNkZWZpbmUgV0VCS0lUX0VYUE9SVERBVEEgX19k
ZWNsc3BlYyhkbGxpbXBvcnQpCiAjZW5kaWYKKyNkZWZpbmUgSlNfRVhQT1JUQ0xBU1MgSlNfRVhQ
T1JUREFUQQogI2Vsc2UKICNkZWZpbmUgSlNfRVhQT1JUREFUQQorI2RlZmluZSBKU19FWFBPUlRD
TEFTUwogI2RlZmluZSBXRUJLSVRfRVhQT1JUREFUQQogI2VuZGlmCiAKSW5kZXg6IFdlYktpdC9j
Zi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2NmL0NoYW5nZUxvZwkocmV2aXNpb24g
NTI5NTIpCisrKyBXZWJLaXQvY2YvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTAtMDEtMDcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMDU3CisgICAgICAgIFJFR1JFU1NJT04o
cjQ5MzY1KTogdHlwZW9mKHhoci5yZXNwb25zZVRleHQpICE9ICJzdHJpbmciIGluIFdpbmRvd3MK
KworCQk8cmRhcjovL3Byb2JsZW0vNzI5NjkyMD4gUkVHUkVTU0lPTjogV2ViS2l0IGZhaWxzIHRv
IHN0YXJ0IFBlYWNlS2VlcGVyIGJlbmNobWFyaworCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOiBEZWZpbmUgSlNfRVhQT1JUQ0xBU1MuIEknbSBub3Qg
c3VyZSB3aHkgdGhpcworICAgICAgICBpc24ndCBkb25lIGluIEpTQyBnbG9iYWxseSBmb3IgYWxs
IHBvc3NpYmxlIGNsaWVudHMsIGJ1dCBrZWVwaW5nIHRoZSBjdXJyZW50IGRlc2lnbiBmb3Igbm93
LgorCiAyMDA5LTEyLTAzICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZGhjcC0xNzItMjgtMTc0
LTIyMC5zcGIuY29ycC5nb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkg
SGF0Y2hlci4KSW5kZXg6IFdlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnRDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudENGLmNwcAkocmV2aXNpb24gNTI5NTApCisrKyBXZWJLaXQvY2YvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw4ICs0
MywxMCBAQAogI2Vsc2UKICNkZWZpbmUgSlNfRVhQT1JUREFUQSBfX2RlY2xzcGVjKGRsbGltcG9y
dCkKICNlbmRpZgorI2RlZmluZSBKU19FWFBPUlRDTEFTUyBKU19FWFBPUlREQVRBCiAjZWxzZQog
I2RlZmluZSBKU19FWFBPUlREQVRBCisjZGVmaW5lIEpTX0VYUE9SVENMQVNTCiAjZW5kaWYKIAog
I2luY2x1ZGUgIldlYkluc3BlY3RvckNsaWVudC5oIgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTI5NTMp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBA
QAorMjAxMC0wMS0wNyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMwNTcKKyAgICAgICAgUkVHUkVTU0lPTihyNDkz
NjUpOiB0eXBlb2YoeGhyLnJlc3BvbnNlVGV4dCkgIT0gInN0cmluZyIgaW4gV2luZG93cworCisJ
CTxyZGFyOi8vcHJvYmxlbS83Mjk2OTIwPiBSRUdSRVNTSU9OOiBXZWJLaXQgZmFpbHMgdG8gc3Rh
cnQgUGVhY2VLZWVwZXIgYmVuY2htYXJrCisKKyAgICAgICAgKiBmYXN0L2pzL3NjcmlwdC10ZXN0
cy93ZWJjb3JlLXN0cmluZy1jb21wYXJpc29uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pz
L3dlYmNvcmUtc3RyaW5nLWNvbXBhcmlzb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2pzL3dlYmNvcmUtc3RyaW5nLWNvbXBhcmlzb24uaHRtbDogQWRkZWQuCisKIDIwMTAt
MDEtMDcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgS2V2aW4gRGVja2VyLCBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvanMvd2ViY29yZS1zdHJpbmctY29tcGFyaXNvbi1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy93ZWJjb3JlLXN0cmluZy1jb21wYXJpc29uLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvd2ViY29yZS1zdHJp
bmctY29tcGFyaXNvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcgQEAK
K1Rlc3QgZm9yIGJ1ZyAzMzA1NzogdHlwZW9mKHhoci5yZXNwb25zZVRleHQpICE9ICJzdHJpbmci
IG9uIFdpbmRvd3MuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHR5cGVv
ZihyLnJlc3BvbnNlVGV4dCkgPT0gInN0cmluZyIgaXMgdHJ1ZQorUEFTUyB0eXBlb2Yoci5yZXNw
b25zZVRleHQpID09PSAic3RyaW5nIiBpcyB0cnVlCitQQVNTIHR5cGVvZihyLnJlc3BvbnNlVGV4
dCkgIT0gInN0cmluZyIgaXMgZmFsc2UKK1BBU1MgdHlwZW9mKHIucmVzcG9uc2VUZXh0KSAhPT0g
InN0cmluZyIgaXMgZmFsc2UKK1BBU1MgIiIgKyB0eXBlb2Yoci5yZXNwb25zZVRleHQpIGlzICJz
dHJpbmciCitQQVNTIHR5cGVvZihyLnJlc3BvbnNlVGV4dCkgKyAiIiBpcyAic3RyaW5nIgorUEFT
UyBTdHJpbmcodHlwZW9mKHIucmVzcG9uc2VUZXh0KSkgaXMgInN0cmluZyIKK1BBU1MgU3RyaW5n
KHR5cGVvZihyLnJlc3BvbnNlVGV4dCkpIGlzIHR5cGVvZihyLnJlc3BvbnNlVGV4dCkKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2pzL3dlYmNvcmUtc3RyaW5nLWNvbXBhcmlzb24uaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3dlYmNvcmUtc3RyaW5nLWNvbXBhcmlzb24uaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvd2ViY29yZS1zdHJpbmctY29tcGFy
aXNvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3dlYmNvcmUtc3RyaW5nLWNvbXBhcmlzb24uanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVz
dHMvd2ViY29yZS1zdHJpbmctY29tcGFyaXNvbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy93ZWJjb3JlLXN0cmluZy1jb21wYXJpc29uLmpzCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvd2ViY29yZS1zdHJp
bmctY29tcGFyaXNvbi5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNiBAQAorZGVzY3JpcHRp
b24oJ1Rlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMzA1NyI+YnVnIDMzMDU3PC9hPjogdHlwZW9mKHhoci5yZXNwb25zZVRleHQpICE9ICJz
dHJpbmciIG9uIFdpbmRvd3MuPC9wPicpOworCit2YXIgciA9IG5ldyBYTUxIdHRwUmVxdWVzdDsK
K3Iub3BlbigiR0VUIiwgIndlYmNvcmUtc3RyaW5nLWNvbXBhcmlzb24uaHRtbCIsIGZhbHNlKTsK
K3Iuc2VuZCgpOworCitzaG91bGRCZSgndHlwZW9mKHIucmVzcG9uc2VUZXh0KSA9PSAic3RyaW5n
IicsICd0cnVlJyk7CitzaG91bGRCZSgndHlwZW9mKHIucmVzcG9uc2VUZXh0KSA9PT0gInN0cmlu
ZyInLCAndHJ1ZScpOworc2hvdWxkQmUoJ3R5cGVvZihyLnJlc3BvbnNlVGV4dCkgIT0gInN0cmlu
ZyInLCAnZmFsc2UnKTsKK3Nob3VsZEJlKCd0eXBlb2Yoci5yZXNwb25zZVRleHQpICE9PSAic3Ry
aW5nIicsICdmYWxzZScpOworc2hvdWxkQmUoJyIiICsgdHlwZW9mKHIucmVzcG9uc2VUZXh0KScs
ICcic3RyaW5nIicpOworc2hvdWxkQmUoJ3R5cGVvZihyLnJlc3BvbnNlVGV4dCkgKyAiIicsICci
c3RyaW5nIicpOworc2hvdWxkQmUoJ1N0cmluZyh0eXBlb2Yoci5yZXNwb25zZVRleHQpKScsICci
c3RyaW5nIicpOworc2hvdWxkQmUoJ1N0cmluZyh0eXBlb2Yoci5yZXNwb25zZVRleHQpKScsICd0
eXBlb2Yoci5yZXNwb25zZVRleHQpJyk7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>
<flag name="review"
          id="28311"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>