<?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>109036</bug_id>
          
          <creation_ts>2013-02-06 02:57:47 -0800</creation_ts>
          <short_desc>DFG OSR exit doesn&apos;t know which virtual register to use for the last result register for post_inc and post_dec</short_desc>
          <delta_ts>2013-02-27 09:48:19 -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>Mac</rep_platform>
          <op_sys>OS X 10.8</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://stackoverflow.com/questions/13147026/disabling-jit-in-safari-6-to-workaround-severe-javascript-jit-bugs</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Blocker</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Michael">mlsubscriber</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jbriance</cc>
    
    <cc>nnaze</cc>
    
    <cc>ossy</cc>
    
    <cc>yuqiang.xian</cc>
    
    <cc>zarvai</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>826276</commentid>
    <comment_count>0</comment_count>
      <attachid>186808</attachid>
    <who name="Michael">mlsubscriber</who>
    <bug_when>2013-02-06 02:57:47 -0800</bug_when>
    <thetext>Created attachment 186808
(smallest?) piece of code to reproduce

The jit-compiler produces erroneous code from javascript loops with post de- or increments of variables. This will lead to errors or unexpected behavior during runtime.

Steps to reproduce:
- close console/inspector/debugger (to enable the jit-compiler, important even on iOS!)
- open the attached html file
- click &quot;Click Me!&quot; a few times till output is &quot;from 0 to 501&quot;

Explanation:
Clicking on &quot;Click Me!&quot; recalculates indexes of a list with 500 items. When the error occurs, the last index is set to 501 (which is wrong).

Workarounds:
- don&apos;t use post-increments (split access and increment)
- surround code with try/catch (which seems do disable jit)


The bug was originally posted on stackoverflow: http://stackoverflow.com/questions/13147026/disabling-jit-in-safari-6-to-workaround-severe-javascript-jit-bugs
and is also reported to Apple (ID: 12606761)



Full text from stackoverflow:

We found a severe problem with the interpretation of our Javascript code that only occurs on iOS 5/Safari 6 (current iPad release) that we think is due to critical bug in the Just in Time JS compiler in Safari. (See update below for more affected versions).

We originally found the issue in our online demos of our library: the demos crash more or less randomly but this happens only the second time (or even later) that the same code is executed. I.e. if you run the part of the code once, everything works OK, however subsequent runs crash the application.

Interestingly executing the same code in Chrome for iOS the problem does not show, which we believe is due to the missing JIT capabilities of the Webview that is used in Chrome for iOS.

After a lot of fiddling we finally think we found at least one problematic piece of code:

  var a = 0; // counter for index
  for (var b = this.getStart(); b !== null; b = b.getNext()) // iterate over all cells
    b.$f = a++; // assign index to cell and then increment


In essence this is a simple for loop that assigns each cell in a linked list data structure its index. The problem here is the post-increment operation in the loop body. The current count is assigned to the field and updated after the expression is evaluated, basically the same as first assigning a and then incrementing it by one.

This works OK in all browsers we tested and in Safari for the first couple of times, and then suddenly it seems as if the counter variable a is incremented first and then the result is assigned, like a pre-increment operation.

I have created a fiddle that shows the problem here: http://jsfiddle.net/yGuy/L6t5G/

Running the example on an iPad 2 with iOS 6 and all updates the result is OK for the first 2 runs in my case and in the third identic run suddenly the last element in the list has a value assigned that is off by one (the output when you click the &quot;click me&quot; button changes from &quot;from 0 to 500&quot; to &quot;from 0 to 501&quot;)

Interestingly if you switch tabs, or wait a little it can happen that suddenly the results are correct for two or so more runs! It seems as if Safari sometimes resets is JIT caches.

So since I think it may take a very long for the Safari team to fix this bug (which I have not yet reported) and there may be other similar bugs like this lurking in the JIT that are equally hard to find, I would like to know whether there is a way to disable the JIT functionality in Safari. Of course this would slow down our code (which is very CPU intensive already), but better slow than crashing.

Update: Unsurprisingly it&apos;s not just the post increment operator that is affected, but also the post decrement operator. Less surprisingly and more worryingly is that it makes no difference if the value is assigned, so looking for an assignment in existing code is not enough. E.g. the following the code b.$f = (a++ % 2 == 0) ? 1 : 2; where the variables value is not assigned but just used for the ternary operator condition also &quot;fails&quot; in the sense that sometimes the wrong branch is chosen. Currently it looks as if the problem can only be avoided if the post operators are not used at all.

Update: The same issue does not only exist in iOS devices, but also on Mac OSX in Safari 6 and the latest Safari 5: These have been tested and found to be affected by the bug: Mac OS 10.7.4, Safari 5.1.7 Mac OS X 10.8.2, WebKit Nightly r132968: Safari 6.0.1 (8536.26.14, 537+). Interestingly these do not seem to be affected: iPad 2 (Mobile) Safari 5.1.7, and iPad 1 Mobile Safari 5.1. I have reported these problems to Apple but have not received any response, yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841579</commentid>
    <comment_count>1</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-02-25 20:41:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/13292139&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842602</commentid>
    <comment_count>2</comment_count>
      <attachid>190416</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-02-26 19:02:05 -0800</bug_when>
    <thetext>Created attachment 190416
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842607</commentid>
    <comment_count>3</comment_count>
      <attachid>190416</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-02-26 19:12:41 -0800</bug_when>
    <thetext>Comment on attachment 190416
the patch

r=gavin, in person.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842629</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-02-26 19:55:05 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/144137</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842721</commentid>
    <comment_count>5</comment_count>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2013-02-26 23:00:28 -0800</bug_when>
    <thetext>*** Bug 110942 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842743</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-02-26 23:45:44 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Landed in http://trac.webkit.org/changeset/144137

It broke some builds, because canBeOptimizedOrInlined() is defined
inside ENABLE(DFG_JIT) guard, but used in different places:
- http://trac.webkit.org/changeset/144137/trunk/Source/JavaScriptCore/jit/JIT.cpp ( ENABLE(DFG_JIT) || ENABLE(LLINT) )
- http://trac.webkit.org/changeset/144137/trunk/Source/JavaScriptCore/jit/JITArithmetic.cpp (without any ifdef guard)
- http://trac.webkit.org/changeset/144137/trunk/Source/JavaScriptCore/jit/JITArithmetic32_64.cpp
- http://trac.webkit.org/changeset/144137/trunk/Source/JavaScriptCore/jit/JITCall.cpp

...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842791</commentid>
    <comment_count>7</comment_count>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2013-02-27 00:42:44 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; It broke some builds, because canBeOptimizedOrInlined() is defined
&gt; inside ENABLE(DFG_JIT) guard, but used in different places:

I agree. Here is our sh4 build bot build for further info:
http://build.webkit.org/builders/Qt%20Linux%20SH4%20Release/builds/21059</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842827</commentid>
    <comment_count>8</comment_count>
    <who name="Zoltan Arvai">zarvai</who>
    <bug_when>2013-02-27 01:16:04 -0800</bug_when>
    <thetext>Same problem on Qt Windows 32-bit Release
http://build.webkit.org/builders/Qt%20Windows%2032-bit%20Release/builds/62259

and on x86-64 Mountain Lion Qt Release
http://build.webkit.sed.hu/builders/x86-64%20Mountain%20Lion%20Qt%20Release%20%28WebGL%20Tester%29/builds/3361</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843179</commentid>
    <comment_count>9</comment_count>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2013-02-27 09:48:19 -0800</bug_when>
    <thetext>I&apos;ve created a new bug entry: https://bugs.webkit.org/show_bug.cgi?id=110991
I&apos;ll submit a patch soon.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>186808</attachid>
            <date>2013-02-06 02:57:47 -0800</date>
            <delta_ts>2013-02-06 02:57:47 -0800</delta_ts>
            <desc>(smallest?) piece of code to reproduce</desc>
            <filename>webkit_jit_bug.html</filename>
            <type>text/html</type>
            <size>1646</size>
            <attacher name="Michael">mlsubscriber</attacher>
            
              <data encoding="base64">PGh0bWw+Cgo8Ym9keT4KCjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgoKLy8gb3JpZ2lu
YWwgYXQ6IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTMxNDcwMjYvZGlzYWJs
aW5nLWppdC1pbi1zYWZhcmktNi10by13b3JrYXJvdW5kLXNldmVyZS1qYXZhc2NyaXB0LWppdC1i
dWdzCgovLyBhIGxpc3QgY2VsbCBpbXBsZW1lbnRhdGlvbiB3aXRoIGEgZmllbGQgdGhhdCBuZWVk
cyB0byBob2xkIHRoZSBpbmRleC4KZnVuY3Rpb24gQ2VsbChuZXh0KXsKICAgIHRoaXMubmV4dCA9
IG5leHQ7CiAgICB0aGlzLiRmID0gLTE7CiAgICB0aGlzLmdldE5leHQgPSBmdW5jdGlvbigpewog
ICAgICAgIHJldHVybiB0aGlzLm5leHQ7CiAgICB9Cn0KCi8vIHRoZSBsYXN0IGNlbGwgaGFzIG5v
IHN1Y2Nlc3Nvcgp2YXIgYyA9IG5ldyBDZWxsKG51bGwpOwp2YXIgbGFzdCA9IGM7CiAgICAKLy8g
d2UgYWRkIDUwMCBjZWxscyBpbiBmcm9udCBvZiB0aGUgbGFzdCBvbmUgLSByZXN1bHRpbmcgaW4g
YSBsaXN0IG9mIDUwMCBpdGVtcwpmb3IgKHZhciBpID0gMDsgaSA8IDUwMDsgaSsrKXsKICAgIGMg
PSBuZXcgQ2VsbChjKTsKfQoKLy8gdGhlIGZpcnN0IGNlbGwKdmFyIGZpcnN0ID0gYzsKCi8vIGR1
bW15IHV0aWxpdHkgImNsYXNzIgp1dGlsaXR5ID0ge307CgovLyB0ZXN0IGZ1bmN0aW9uCnV0aWxp
dHkudGVzdCA9IGZ1bmN0aW9uKCl7CiAgICB2YXIgYSA9IDA7IC8vIGNvdW50ZXIgZm9yIGluZGV4
CiAgICBmb3IgKHZhciBiID0gdGhpcy5nZXRTdGFydCgpOyBiICE9PSBudWxsOyBiID0gYi5nZXRO
ZXh0KCkpIC8vIGl0ZXJhdGUgb3ZlciBhbGwgY2VsbHMKICAgICAgICBiLiRmID0gYSsrOyAvLyBh
c3NpZ24gaW5kZXggdG8gY2VsbCBhbmQgdGhlbiBpbmNyZW1lbnQKICAgIHRoaXMuJGY1ID0gITE7
IC8vIHJhbmRvbSBjb2RlCn07Cgp1dGlsaXR5LmdldFN0YXJ0ID0gZnVuY3Rpb24oKXsKICAgIHJl
dHVybiBmaXJzdDsKfTsKCnV0aWxpdHkudGVzdEFuZE91dHB1dCA9IGZ1bmN0aW9uKCl7CiAgICBm
aXJzdC4kZiA9IC0xOwogICAgbGFzdC4kZiA9IC0xOwogICAgdGhpcy50ZXN0KCk7CiAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9ICJmcm9tICIgKyBmaXJzdC4k
ZiArICIgdG8gIiArIGxhc3QuJGYgKyAiPGJyPiI7Cn07CiAgICAKdXRpbGl0eS5kdW1wID0gZnVu
Y3Rpb24oKXsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgPSAi
Q2hlY2s6IjsKICAgIHZhciBjb3VudCA9IDA7CiAgICBmb3IgKHZhciBiID0gZmlyc3Q7IGIgIT09
IG51bGw7IGIgPSBiLm5leHQsIGNvdW50KyspewogICAgICAgIGlmIChiLiRmICE9PSBjb3VudCl7
CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0g
KCIgYi4kZiA9ICIrIGIuJGYgKyAiICgiK2NvdW50KyIpPGJyPiIpOwogICAgICAgIH0KICAgIH0K
fTsKCgoKPC9zY3JpcHQ+Cgo8YnV0dG9uIG9uY2xpY2s9InV0aWxpdHkudGVzdEFuZE91dHB1dCgp
Ij5DbGljayBNZSE8L2J1dHRvbj4KPGJ1dHRvbiBvbmNsaWNrPSJ1dGlsaXR5LmR1bXAoKSI+RHVt
cCE8L2J1dHRvbj4KPGRpdiBpZD0ibG9nIj48L2Rpdj4KCjwvYm9keT4KCjwvaHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190416</attachid>
            <date>2013-02-26 19:02:05 -0800</date>
            <delta_ts>2013-02-26 19:12:40 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>19029</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ0MTM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBA
CisyMDEzLTAyLTI2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIE9TUiBleGl0IGRvZXNuJ3Qga25vdyB3aGljaCB2aXJ0dWFsIHJlZ2lzdGVyIHRvIHVzZSBm
b3IgdGhlIGxhc3QgcmVzdWx0IHJlZ2lzdGVyIGZvciBwb3N0X2luYyBhbmQgcG9zdF9kZWMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTAzNgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMTMyOTIxMzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIHdhcyBhIHR3by1mb2xkIHByb2Js
ZW06CisgICAgICAgIAorICAgICAgICAxKSBwb3N0X2luYy9kZWMgaGFzIHR3byByZXN1bHRzIC0g
dGhlIG5ldyB2YWx1ZSBvZiB0aGUgdmFyaWFibGUsIGFuZCB0aGUgb2xkIHZhbHVlIG9mIHRoZSB2
YXJpYWJsZS4gREZHIE9TUiBleGl0CisgICAgICAgICAgIGFzc3VtZWQgdGhhdCB0aGUgImxhc3Qg
cmVzdWx0IiB1c2VkIGZvciB0aGUgQmFzZWxpbmUgSklUJ3MgcmVnaXN0ZXIgYWxsb2NhdGlvbiB3
b3VsZCBiZSB0aGUgbmV3IHZhbHVlLiBJdCB3YXMKKyAgICAgICAgICAgd3JvbmcgaW4gdGhpcyBh
c3N1bXB0aW9uLgorICAgICAgICAKKyAgICAgICAgMikgVGhlIEJhc2VsaW5lIEpJVCBrbmV3IHRv
IGRpc2FibGUgaXRzIGxhc3QgcmVzdWx0IG9wdGltaXphdGlvbiBpbiBjYXNlcyB3aGVyZSBpdCBt
aWdodCBjb25mdXNlIHRoZSBERkcuIEJ1dCBpdAorICAgICAgICAgICB3YXMgZG9pbmcgdGhpcyBv
bmx5IGZvciBjb2RlIGJsb2NrcyB0aGF0IGNvdWxkIGJlIHRvdGFsbHkgb3B0aW1pemVkLCBidXQg
bm90IGNvZGUgYmxvY2tzIHRoYXQgY291bGQgb25seSBiZQorICAgICAgICAgICBvcHRpbWl6ZWQg
d2hlbiBpbmxpbmVkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEg
bW9yZSByaWdvcm91cyBub3Rpb24gb2Ygd2hlbiB0aGUgQmFzZWxpbmUgSklUIGVtaXRzIHByb2Zp
bGluZywgd2hlbiBpdCBkb2VzIGV4dHJhIHdvcmsKKyAgICAgICAgdG8gYWNjb3VudCBmb3IgdGhl
IHBvc3NpYmlsaXR5IG9mIE9TUiBleGl0LCBhbmQgd2hlbiBpdCBkb2VzIGV4dHJhIHdvcmsgdG8g
YWNjb3VudCBmb3IgdGhlIHBvc3NpYmlsaXR5IG9mIE9TUgorICAgICAgICBlbnRyeS4gVGhlc2Ug
bm90aW9ucyBhcmUgY2FsbGVkIHNob3VsZEVtaXRQcm9maWxpbmcoKSwgY2FuQmVPcHRpbWl6ZWRP
cklubGluZWQoKSwgYW5kIGNhbkJlT3B0aW1pemVkKCksCisgICAgICAgIHJlc3BlY3RpdmVseS4K
KyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgcGVyZm9ybWFuY2UtbmV1dHJhbCBhbmQgZml4ZXMg
dGhlIHJlcG9ydGVkIGJ1Zy4gSXQgcHJvYmFibHkgZml4ZXMgb3RoZXIgYnVncyBhcyB3ZWxsLCBz
aW5jZSBwcmV2aW91c2x5CisgICAgICAgIHdlIGZvciBleGFtcGxlIHdlcmVuJ3QgZG9pbmcgdGhl
IG1vcmUgY29uc2VydmF0aXZlIGltcGxlbWVudGF0aW9uIG9mIG9wX21vdiBpbiB0aGUgQmFzZWxp
bmUgSklUIGZvciBjb2RlIGJsb2NrcworICAgICAgICB0aGF0IGNvdWxkIGJlIGlubGluZWQgYnV0
IG5vdCBvcHRpbWl6ZWQuIFNvLCBpZiBzdWNoIGEgY29kZSBibG9jayBPU1IgZXhpdGVkIGF0IGp1
c3QgdGhlIHJpZ2h0IHBvaW50LCB5b3UnZCBnZXQKKyAgICAgICAgc3ltcHRvbXMgc2ltaWxhciB0
byB0aGlzIGJ1Zy4KKworICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQ29tbW9uLmg6
CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBp
bGUpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlUGF0
Y2hHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChKU0M6OkpJVDo6Y2FuQmVPcHRpbWl6ZWRPcklu
bGluZWQpOgorICAgICAgICAoSklUKToKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wb3N0X2luYyk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9wb3N0X2RlYyk6CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wb3N0X2luYyk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9wb3N0X2RlYyk6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2FsbF9wdXRfcmVzdWx0KToKKyAgICAgICAgKEpTQzo6
SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbDMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBcnJheVByb2ZpbGluZ1NpdGUpOgorICAgICAg
ICAoSlNDOjpKSVQ6Om1hcCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfbW92KToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVHZXRCeUlkSG90UGF0aCk6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbik6CisgICAgICAg
ICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNv
bXBpbGVHZXRCeUlkSG90UGF0aCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQ
dXRCeUlkVHJhbnNpdGlvbik6CisKIDIwMTMtMDItMjYgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25n
QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBBcHBsZVdpbiBWUzIwMTAgYnVpbGQg
Zml4LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5o
CShyZXZpc2lvbiAxNDQxMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsNyArMTkzLDcgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlT3Bjb2RlKAogICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZTsK
ICAgICAgICAgCiAgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3M6Ci0gICAgICAgIHJldHVybiBTaG91
bGRQcm9maWxlOworICAgICAgICByZXR1cm4gTWF5SW5saW5lOwogCiAgICAgY2FzZSBvcF9yZXNv
bHZlOgogICAgIGNhc2Ugb3BfcmVzb2x2ZV9nbG9iYWxfcHJvcGVydHk6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHJldmlzaW9uIDE0NDExMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNyw3ICsy
MzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIC8vIFB1dCB0aGluZ3Mg
aGVyZSB0aGF0IG11c3QgYmUgZGVmaW5lZCBldmVuIGlmIEVOQUJMRShERkdfSklUKSBpcyBmYWxz
ZS4KIAotZW51bSBDYXBhYmlsaXR5TGV2ZWwgeyBDYW5ub3RDb21waWxlLCBTaG91bGRQcm9maWxl
LCBDYW5Db21waWxlLCBDYXBhYmlsaXR5TGV2ZWxOb3RTZXQgfTsKK2VudW0gQ2FwYWJpbGl0eUxl
dmVsIHsgQ2Fubm90Q29tcGlsZSwgTWF5SW5saW5lLCBDYW5Db21waWxlLCBDYXBhYmlsaXR5TGV2
ZWxOb3RTZXQgfTsKIAogLy8gVW5jb25kaXRpb25hbGx5IGRpc2FibGUgREZHIGRpc2Fzc2VtYmx5
IHN1cHBvcnQgaWYgdGhlIERGRyBpcyBub3QgY29tcGlsZWQgaW4uCiBpbmxpbmUgYm9vbCBzaG91
bGRTaG93RGlzYXNzZW1ibHkoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2
aXNpb24gMTQ0MTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MjcsMTIgKzYyNywxNCBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBp
bGUoQ29kZVB0ciogZnVuCiAgICAgICAgIG1fY2FuQmVPcHRpbWl6ZWQgPSBmYWxzZTsKICAgICAg
ICAgbV9zaG91bGRFbWl0UHJvZmlsaW5nID0gZmFsc2U7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgREZHOjpTaG91bGRQcm9maWxlOgorICAgIGNhc2UgREZHOjpNYXlJbmxpbmU6CiAgICAgICAg
IG1fY2FuQmVPcHRpbWl6ZWQgPSBmYWxzZTsKKyAgICAgICAgbV9jYW5CZU9wdGltaXplZE9ySW5s
aW5lZCA9IHRydWU7CiAgICAgICAgIG1fc2hvdWxkRW1pdFByb2ZpbGluZyA9IHRydWU7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgREZHOjpDYW5Db21waWxlOgogICAgICAgICBtX2NhbkJlT3B0
aW1pemVkID0gdHJ1ZTsKKyAgICAgICAgbV9jYW5CZU9wdGltaXplZE9ySW5saW5lZCA9IHRydWU7
CiAgICAgICAgIG1fc2hvdWxkRW1pdFByb2ZpbGluZyA9IHRydWU7CiAgICAgICAgIGJyZWFrOwog
ICAgIGRlZmF1bHQ6CkBAIC04MTUsNyArODE3LDcgQEAgSklUQ29kZSBKSVQ6OnByaXZhdGVDb21w
aWxlKENvZGVQdHIqIGZ1bgogICAgIH0KIAogI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUo
TExJTlQpCi0gICAgaWYgKGNhbkJlT3B0aW1pemVkKCkKKyAgICBpZiAoY2FuQmVPcHRpbWl6ZWRP
cklubGluZWQoKQogI2lmIEVOQUJMRShMTElOVCkKICAgICAgICAgfHwgdHJ1ZQogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE0NDExMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTM5Miw2ICszOTIsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgICAgIC8vIEZv
cmNlIHByb2ZpbGluZyB0byBiZSBlbmFibGVkIGR1cmluZyBzdHViIGdlbmVyYXRpb24uCiAgICAg
ICAgICAgICBqaXQubV9jYW5CZU9wdGltaXplZCA9IHRydWU7CisgICAgICAgICAgICBqaXQubV9j
YW5CZU9wdGltaXplZE9ySW5saW5lZCA9IHRydWU7CisgICAgICAgICAgICBqaXQubV9zaG91bGRF
bWl0UHJvZmlsaW5nID0gdHJ1ZTsKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKICAgICAgICAg
ICAgIHJldHVybiBqaXQucHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuZ3RoKHJldHVybkFk
ZHJlc3MpOwogICAgICAgICB9CkBAIC04OTUsNiArODk3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgYm9vbCBjYW5CZU9wdGltaXplZCgpIHsgcmV0
dXJuIG1fY2FuQmVPcHRpbWl6ZWQ7IH0KKyAgICAgICAgYm9vbCBjYW5CZU9wdGltaXplZE9ySW5s
aW5lZCgpIHsgcmV0dXJuIG1fY2FuQmVPcHRpbWl6ZWRPcklubGluZWQ7IH0KICAgICAgICAgYm9v
bCBzaG91bGRFbWl0UHJvZmlsaW5nKCkgeyByZXR1cm4gbV9zaG91bGRFbWl0UHJvZmlsaW5nOyB9
CiAjZWxzZQogICAgICAgICBib29sIGNhbkJlT3B0aW1pemVkKCkgeyByZXR1cm4gZmFsc2U7IH0K
QEAgLTk0Nyw2ICs5NTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShWQUxVRV9Q
Uk9GSUxFUikKICAgICAgICAgYm9vbCBtX2NhbkJlT3B0aW1pemVkOworICAgICAgICBib29sIG1f
Y2FuQmVPcHRpbWl6ZWRPcklubGluZWQ7CiAgICAgICAgIGJvb2wgbV9zaG91bGRFbWl0UHJvZmls
aW5nOwogI2VuZGlmCiAgICAgfSBKSVRfQ0xBU1NfQUxJR05NRU5UOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAkocmV2aXNpb24g
MTQ0MTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjcsNiArNDY3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
cG9zdF9pbmMoSW5zdHJ1Y3Rpb24qIAogICAgIGVtaXRTdG9yZUludDMyKHNyY0RzdCwgcmVnVDIs
IHRydWUpOwogCiAgICAgZW1pdFN0b3JlQW5kTWFwSW50MzIoZHN0LCByZWdUMSwgcmVnVDAsIGZh
bHNlLCBPUENPREVfTEVOR1RIKG9wX3Bvc3RfaW5jKSk7CisgICAgaWYgKGNhbkJlT3B0aW1pemVk
T3JJbmxpbmVkKCkpCisgICAgICAgIHVubWFwKCk7CiB9CiAKIHZvaWQgSklUOjplbWl0U2xvd19v
cF9wb3N0X2luYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nh
c2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQpAQCAtNTAyLDYgKzUwNCw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX3Bvc3RfZGVjKEluc3RydWN0aW9uKiAKICAgICBlbWl0U3RvcmVJbnQzMihzcmNEc3Qs
IHJlZ1QyLCB0cnVlKTsKIAogICAgIGVtaXRTdG9yZUFuZE1hcEludDMyKGRzdCwgcmVnVDEsIHJl
Z1QwLCBmYWxzZSwgT1BDT0RFX0xFTkdUSChvcF9wb3N0X2RlYykpOworICAgIGlmIChjYW5CZU9w
dGltaXplZE9ySW5saW5lZCgpKQorICAgICAgICB1bm1hcCgpOwogfQogCiB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfcG9zdF9kZWMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAkocmV2aXNpb24gMTQ0MTEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjQxLDYgKzY0MSw4IEBAIHZvaWQgSklUOjplbWl0X29wX3Bvc3RfaW5jKEluc3RydWN0aW9uKiAK
ICAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKHJlZ1QxLCByZWdUMSk7CiAgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3RlcihzcmNEc3QsIHJlZ1QxKTsKICAgICBlbWl0UHV0VmlydHVhbFJl
Z2lzdGVyKHJlc3VsdCk7CisgICAgaWYgKGNhbkJlT3B0aW1pemVkT3JJbmxpbmVkKCkpCisgICAg
ICAgIGtpbGxMYXN0UmVzdWx0UmVnaXN0ZXIoKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29w
X3Bvc3RfaW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCkBAIC02NjgsNiArNjcwLDggQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfcG9zdF9kZWMoSW5zdHJ1Y3Rpb24qIAogICAgIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5v
Q2hlY2socmVnVDEsIHJlZ1QxKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHNyY0RzdCwg
cmVnVDEpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0KTsKKyAgICBpZiAoY2Fu
QmVPcHRpbWl6ZWRPcklubGluZWQoKSkKKyAgICAgICAga2lsbExhc3RSZXN1bHRSZWdpc3Rlcigp
OwogfQogCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcG9zdF9kZWMoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHJldmlzaW9u
IDE0NDExMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxs
KE9wY29kZUlEIG9wY29kZUkKICAgICAgICAgaW50IGFyZ0NvdW50ID0gaW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOwogICAgICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSBpbnN0cnVjdGlvblszXS51
Lm9wZXJhbmQ7CiAgICAgICAgIAotICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBj
YW5CZU9wdGltaXplZCgpKSB7CisgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsICYmIHNo
b3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAgICAgICAgZW1pdExvYWQocmVnaXN0ZXJPZmZz
ZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSwgcmVnVDAsIHJl
Z1QxKTsKICAgICAgICAgICAgIEp1bXAgZG9uZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMCwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKICAgICAgICAgICAgIGxvYWRQdHIoQWRk
cmVzcyhyZWdUMSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkocmV2aXNpb24gMTQ0MTEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYs
NyArNTYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYWxsX3B1dF9yZXN1bHQoSW5zdHJ1CiAgICAg
aW50IGRzdCA9IGluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwotICAgIGlmIChjYW5C
ZU9wdGltaXplZCgpKQorICAgIGlmIChjYW5CZU9wdGltaXplZE9ySW5saW5lZCgpKQogICAgICAg
ICBraWxsTGFzdFJlc3VsdFJlZ2lzdGVyKCk7IC8vIE1ha2UgbGFzdFJlc3VsdFJlZ2lzdGVyIHRy
YWNraW5nIHNpbXBsZXIgaW4gdGhlIERGRy4KIH0KIApAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQg
SklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICAgICAgaW50IGFyZ0NvdW50
ID0gaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQg
PSBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKLSAgICAgICAgaWYgKG9wY29kZUlEID09IG9w
X2NhbGwgJiYgY2FuQmVPcHRpbWl6ZWQoKSkgeworICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3Bf
Y2FsbCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5j
bHVkaW5nVGhpcygwKSwgcmVnVDApOwogICAgICAgICAgICAgSnVtcCBkb25lID0gZW1pdEp1bXBJ
Zk5vdEpTQ2VsbChyZWdUMCk7CiAgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMTQ0MTEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4Niw3ICszODYsNyBA
QCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2ZpbGluZ1NpdGUoCiAgICAgUmVnaXN0ZXJJ
RCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGU7CiAgICAgUmVnaXN0ZXJJRCBp
bmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGU7CiAgICAgCi0gICAgaWYgKGNh
bkJlT3B0aW1pemVkKCkpCisgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkKICAgICAgICAg
c3RvcmVQdHIoc3RydWN0dXJlLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0
dXJlKCkpOwogCiAgICAgbG9hZDgoQWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVyZTo6aW5kZXhp
bmdUeXBlT2Zmc2V0KCkpLCBpbmRleGluZ1R5cGUpOwpAQCAtNjI0LDggKzYyNCw4IEBAIGlubGlu
ZSB2b2lkIEpJVDo6bWFwKHVuc2lnbmVkIGJ5dGVjb2RlT2YKICAgICBtX21hcHBlZFRhZyA9IHRh
ZzsKICAgICBtX21hcHBlZFBheWxvYWQgPSBwYXlsb2FkOwogICAgIAotICAgIEFTU0VSVCghY2Fu
QmVPcHRpbWl6ZWQoKSB8fCBtX21hcHBlZFBheWxvYWQgPT0gcmVnVDApOwotICAgIEFTU0VSVCgh
Y2FuQmVPcHRpbWl6ZWQoKSB8fCBtX21hcHBlZFRhZyA9PSByZWdUMSk7CisgICAgQVNTRVJUKCFj
YW5CZU9wdGltaXplZE9ySW5saW5lZCgpIHx8IG1fbWFwcGVkUGF5bG9hZCA9PSByZWdUMCk7Cisg
ICAgQVNTRVJUKCFjYW5CZU9wdGltaXplZE9ySW5saW5lZCgpIHx8IG1fbWFwcGVkVGFnID09IHJl
Z1QxKTsKIH0KIAogaW5saW5lIHZvaWQgSklUOjp1bm1hcChSZWdpc3RlcklEIHJlZ2lzdGVySUQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9u
IDE0NDExMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbW92KEluc3Ry
dWN0aW9uKiBjdXJyZQogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOwogICAgIGludCBzcmMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogCi0g
ICAgaWYgKGNhbkJlT3B0aW1pemVkKCkpIHsKKyAgICBpZiAoY2FuQmVPcHRpbWl6ZWRPcklubGlu
ZWQoKSkgewogICAgICAgICAvLyBVc2Ugc2ltcGxlciBhcHByb2FjaCwgc2luY2UgdGhlIERGRyB0
aGlua3MgdGhhdCB0aGUgbGFzdCByZXN1bHQgcmVnaXN0ZXIKICAgICAgICAgLy8gaXMgYWx3YXlz
IHNldCB0byB0aGUgZGVzdGluYXRpb24gb24gZXZlcnkgb3BlcmF0aW9uLgogICAgICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKHNyYywgcmVnVDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAx
NDQxMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBKSVQ6OmNvbXBp
bGVHZXRCeUlkSG90UGF0aChJZGVudGlmaQogICAgIC8vIHRvIGFycmF5LWxlbmd0aCAvIHByb3Rv
dHlwZSBhY2Nlc3MgdHJhbnBvbGluZXMsIGFuZCBmaW5hbGx5IHdlIGFsc28gdGhlIHRoZSBwcm9w
ZXJ0eS1tYXAgYWNjZXNzIG9mZnNldCBhcyBhIGxhYmVsCiAgICAgLy8gdG8ganVtcCBiYWNrIHRv
IGlmIG9uZSBvZiB0aGVzZSB0cmFtcG9saWVzIGZpbmRzIGEgbWF0Y2guCiAgICAgCi0gICAgaWYg
KCppZGVudCA9PSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBjYW5CZU9w
dGltaXplZCgpKSB7CisgICAgaWYgKCppZGVudCA9PSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAgICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwogICAgICAg
ICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleChyZWdUMiwgcmVnVDMsIG1f
Ynl0ZWNvZGVPZmZzZXQpOwogICAgIH0KQEAgLTY0OCw3ICs2NDgsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvCiAgICAgLy8gSWYgd2Ugc3VjY2VlZCBpbiBhbGwg
b2Ygb3VyIGNoZWNrcywgYW5kIHRoZSBjb2RlIHdhcyBvcHRpbWl6YWJsZSwgdGhlbiBtYWtlIHN1
cmUgd2UKICAgICAvLyBkZWNyZW1lbnQgdGhlIHJhcmUgY2FzZSBjb3VudGVyLgogI2lmIEVOQUJM
RShWQUxVRV9QUk9GSUxFUikKLSAgICBpZiAobV9jb2RlQmxvY2stPmNhbkNvbXBpbGVXaXRoREZH
KCkgPj0gREZHOjpTaG91bGRQcm9maWxlKSB7CisgICAgaWYgKG1fY29kZUJsb2NrLT5jYW5Db21w
aWxlV2l0aERGRygpID49IERGRzo6TWF5SW5saW5lKSB7CiAgICAgICAgIHN1YjMyKAogICAgICAg
ICAgICAgVHJ1c3RlZEltbTMyKDEpLAogICAgICAgICAgICAgQWJzb2x1dGVBZGRyZXNzKCZtX2Nv
ZGVCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoc3R1YkluZm8tPmJ5dGVj
b2RlSW5kZXgpLT5tX2NvdW50ZXIpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxNDQxMTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTM1LDcgKzUzNSw3IEBAIHZvaWQgSklUOjpjb21waWxlR2V0QnlJZEhvdFBhdGgoaW50IGJh
c2UKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcpOwog
ICAgIAotICAgIGlmICgqaWRlbnQgPT0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5sZW5n
dGggJiYgY2FuQmVPcHRpbWl6ZWQoKSkgeworICAgIGlmICgqaWRlbnQgPT0gbV9nbG9iYWxEYXRh
LT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAg
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJl
Z1QxKTsKICAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXgocmVn
VDEsIHJlZ1QyLCBtX2J5dGVjb2RlT2Zmc2V0KTsKICAgICB9CkBAIC03MDUsNyArNzA1LDcgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpbwogICAgIC8vIElmIHdlIHN1
Y2NlZWQgaW4gYWxsIG9mIG91ciBjaGVja3MsIGFuZCB0aGUgY29kZSB3YXMgb3B0aW1pemFibGUs
IHRoZW4gbWFrZSBzdXJlIHdlCiAgICAgLy8gZGVjcmVtZW50IHRoZSByYXJlIGNhc2UgY291bnRl
ci4KICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAgaWYgKG1fY29kZUJsb2NrLT5jYW5D
b21waWxlV2l0aERGRygpID49IERGRzo6U2hvdWxkUHJvZmlsZSkgeworICAgIGlmIChtX2NvZGVC
bG9jay0+Y2FuQ29tcGlsZVdpdGhERkcoKSA+PSBERkc6Ok1heUlubGluZSkgewogICAgICAgICBz
dWIzMigKICAgICAgICAgICAgIFRydXN0ZWRJbW0zMigxKSwKICAgICAgICAgICAgIEFic29sdXRl
QWRkcmVzcygmbV9jb2RlQmxvY2stPnJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KHN0
dWJJbmZvLT5ieXRlY29kZUluZGV4KS0+bV9jb3VudGVyKSk7CkluZGV4OiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NDQxMzUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNyBAQAorMjAxMy0wMi0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisg
ICAgICAgIERGRyBPU1IgZXhpdCBkb2Vzbid0IGtub3cgd2hpY2ggdmlydHVhbCByZWdpc3RlciB0
byB1c2UgZm9yIHRoZSBsYXN0IHJlc3VsdCByZWdpc3RlciBmb3IgcG9zdF9pbmMgYW5kIHBvc3Rf
ZGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkw
MzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEzMjkyMTM5PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9qcy9kZmctcG9zdC1pbmMtdGhl
bi1leGl0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9kZmctcG9zdC1p
bmMtdGhlbi1leGl0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvanNjLXRlc3QtbGlz
dDoKKyAgICAgICAgKiBmYXN0L2pzL3NjcmlwdC10ZXN0cy9kZmctcG9zdC1pbmMtdGhlbi1leGl0
LmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisKIDIwMTMtMDItMjYgIFN0ZXBoZW4gQ2hlbm5l
eSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4KIAogICAgICAgICBDcmFzaGVzIGluIGZhc3Qvbm90
aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLXJlcXVlc3QtcGVybWlzc2lvbi5odG1sIGFmdGVyIHIx
NDQxMjYKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvZGZnLXBvc3QtaW5jLXRoZW4tZXhpdC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9kZmctcG9zdC1p
bmMtdGhlbi1leGl0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvanMvZGZnLXBvc3QtaW5jLXRoZW4tZXhpdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTA5IEBACitUZXN0cyB3aGF0IGhhcHBlbnMgaWYgeW91IHBvc3QtaW5jIGFuZCB0
aGVuIE9TUiBleGl0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBvLmYg
aXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBv
LmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFT
UyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAor
UEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMg
MAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYg
aXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBv
LmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFT
UyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAor
UEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMg
MAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYg
aXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBv
LmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFT
UyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAor
UEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMg
MAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYg
aXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBv
LmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFT
UyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAor
UEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMg
MAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYg
aXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBv
LmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFT
UyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAor
UEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMg
MAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYg
aXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBvLmYgaXMgMAorUEFTUyBv
LmYgaXMgMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvZGZnLXBvc3QtaW5jLXRoZW4tZXhpdC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvZGZnLXBvc3QtaW5jLXRoZW4tZXhp
dC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9kZmctcG9zdC1pbmMt
dGhlbi1leGl0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9kZmctcG9zdC1pbmMtdGhlbi1leGl0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvanNjLXRl
c3QtbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2pzYy10ZXN0LWxpc3QJ
KHJldmlzaW9uIDE0NDExMykKKysrIExheW91dFRlc3RzL2Zhc3QvanMvanNjLXRlc3QtbGlzdAko
d29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCw3IEBAIGZhc3QvanMvZGZnLW9idmlvdXMtY29u
c3RhbnQtY2ZhCiBmYXN0L2pzL2RmZy1vc3ItZW50cnktaG9pc3RlZC1jbG9iYmVyZWQtc3RydWN0
dXJlLWNoZWNrCiBmYXN0L2pzL2RmZy1vdGhlci1icmFuY2gKIGZhc3QvanMvZGZnLXBoYW50b20t
Z2V0LWxvY2FsCitmYXN0L2pzL2RmZy1wb3N0LWluYy10aGVuLWV4aXQKIGZhc3QvanMvZGZnLXBy
b3RvLWFjY2Vzcy1pbmxpbmUtb3NyLWV4aXQKIGZhc3QvanMvZGZnLXByb3Zlbi1zcXJ0LWJhY2t3
YXJkcy1wcm9wYWdhdGlvbgogZmFzdC9qcy9kZmctcHV0LWJ5LWlkLXByb3RvdHlwZS1jaGVjawpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvZGZnLXBvc3QtaW5jLXRoZW4t
ZXhpdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9k
ZmctcG9zdC1pbmMtdGhlbi1leGl0LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9qcy9zY3JpcHQtdGVzdHMvZGZnLXBvc3QtaW5jLXRoZW4tZXhpdC5qcwkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNSBAQAorZGVzY3JpcHRpb24oCisiVGVzdHMgd2hhdCBoYXBwZW5zIGlmIHlv
dSBwb3N0LWluYyBhbmQgdGhlbiBPU1IgZXhpdC4iCispOworCitmdW5jdGlvbiBmb28obywgaSkg
eworICAgIG8uZi5mID0gaSsrOworfQorCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKSB7
CisgICAgdmFyIG8gPSB7fTsKKyAgICBpZiAoaSA9PSA5OSkKKyAgICAgICAgby5mID0gNDI7Cisg
ICAgZm9vKHtmOm99LCAwKTsKKyAgICBzaG91bGRCZSgiby5mIiwgIjAiKTsKK30K
</data>
<flag name="review"
          id="211072"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>