<?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>68932</bug_id>
          
          <creation_ts>2011-09-27 14:11:26 -0700</creation_ts>
          <short_desc>DFG JIT should speculate more aggressively on reads of array.length</short_desc>
          <delta_ts>2011-09-27 20:39:26 -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>JavaScriptCore</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>474218</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-27 14:11:26 -0700</bug_when>
    <thetext>DFG JIT currently optimizes accesses to array.length the same way as the old JIT: it generates a stub on the fly when an array length access is detected after the code is already compiled.  But the DFG has all the information it needs to inline a fast speculative array length access.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474226</commentid>
    <comment_count>1</comment_count>
      <attachid>108895</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-27 14:14:22 -0700</bug_when>
    <thetext>Created attachment 108895
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474227</commentid>
    <comment_count>2</comment_count>
      <attachid>108895</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-27 14:17:35 -0700</bug_when>
    <thetext>Comment on attachment 108895
the patch

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

&gt; Source/JavaScriptCore/dfg/DFGPropagator.cpp:695
&gt; +#if ENABLE(DFG_DEBUG_PROPAGATION_VERBOSE)
&gt; +            printf(&quot;  @%u -&gt; GetArrayLength&quot;, nodeIndex);
&gt; +#endif

please add debug message macros</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474256</commentid>
    <comment_count>3</comment_count>
      <attachid>108903</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-27 14:48:37 -0700</bug_when>
    <thetext>Created attachment 108903
the patch

Added debug message macro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474267</commentid>
    <comment_count>4</comment_count>
      <attachid>108903</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-27 15:03:03 -0700</bug_when>
    <thetext>Comment on attachment 108903
the patch

I&apos;d rather #define DFG_DEBUG_PROPAGATION(msg...) printf(msg);

But my suggestion was meant for a following patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474270</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-27 15:04:28 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 108903 [details])
&gt; I&apos;d rather #define DFG_DEBUG_PROPAGATION(msg...) printf(msg);
&gt; 
&gt; But my suggestion was meant for a following patch

So you want me to commit the previous patch, and then do the refactoring separately?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474461</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-27 20:39:26 -0700</bug_when>
    <thetext>Landed in r96184.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108895</attachid>
            <date>2011-09-27 14:14:22 -0700</date>
            <delta_ts>2011-09-27 14:48:37 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>arraylength_patch_1.diff</filename>
            <type>text/plain</type>
            <size>5194</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTYxNTYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTEtMDktMjcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgSklUIHNob3VsZCBzcGVjdWxhdGUgbW9yZSBhZ2dyZXNzaXZlbHkgb24gcmVhZHMgb2YgYXJy
YXkubGVuZ3RoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02ODkzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpcyBhIDIlIHNwZWVkLXVwIG9uIEtyYWtlbiwgbmV1dHJhbCBlbHNld2hl
cmUuCisKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAqIGRmZy9ERkdQcm9wYWdh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpwcm9wYWdhdGVOb2RlUHJl
ZGljdGlvbnMpOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OmZpeHVwTm9kZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorCiAyMDExLTA5LTI3ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJhcGlkbHkgcmVmcmVzaGluZyBhIGZlTW9ycGhvbG9n
eVtlcm9kZV0gd2l0aCByPTAgY2FuIHNvbWV0aW1lcyBjYXVzZSBkaXNwbGF5IGNvcnJ1cHRpb24K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiA5NjE0MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NjYsNiArMjY2LDcgQEAgc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBhcml0aE5vZGVGbGFncwog
ICAgIG1hY3JvKFB1dEJ5SWREaXJlY3QsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNX
b3JsZCkgXAogICAgIG1hY3JvKENoZWNrU3RydWN0dXJlLCBOb2RlUmVzdWx0U3RvcmFnZSB8IE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRCeU9mZnNldCwgTm9kZVJlc3VsdEpTKSBc
CisgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3Jv
KEdldE1ldGhvZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KENoZWNrTWV0aG9kLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFj
cm8oR2V0U2NvcGVDaGFpbiwgTm9kZVJlc3VsdEpTKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJvcGFnYXRvci5jcHAJKHJldmlzaW9uIDk2MTQyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mzc1LDEzICszNzUsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAotICAgICAgICBjYXNlIFZhbHVlVG9Eb3VibGU6IHsKLSAgICAgICAgICAgIC8vIFRoaXMgbm9k
ZSBzaG91bGQgbmV2ZXIgYmUgdmlzaWJsZSBhdCB0aGlzIHN0YWdlIG9mIGNvbXBpbGF0aW9uLiBJ
dCBpcwotICAgICAgICAgICAgLy8gaW5zZXJ0ZWQgYnkgZml4dXAoKSwgd2hpY2ggZm9sbG93cyB0
aGlzIHBoYXNlLgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgY2FzZSBWYWx1ZUFkZDogewog
ICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBsZWZ0ID0gbV9wcmVkaWN0aW9uc1tub2RlLmNoaWxk
MSgpXTsKICAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgcmlnaHQgPSBtX3ByZWRpY3Rpb25zW25v
ZGUuY2hpbGQyKCldOwpAQCAtNTQ2LDYgKzUzOSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFZhbHVlVG9Eb3VibGU6CisgICAgICAg
IGNhc2UgR2V0QXJyYXlMZW5ndGg6IHsKKyAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBzaG91bGQg
bmV2ZXIgYmUgdmlzaWJsZSBhdCB0aGlzIHN0YWdlIG9mIGNvbXBpbGF0aW9uLiBJdCBpcworICAg
ICAgICAgICAgLy8gaW5zZXJ0ZWQgYnkgZml4dXAoKSwgd2hpY2ggZm9sbG93cyB0aGlzIHBoYXNl
LgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICAKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIC8vIFRoZXNlIGdl
dCBpZ25vcmVkIGJlY2F1c2UgdGhleSBkb24ndCByZXR1cm4gYW55dGhpbmcuCiAgICAgICAgIGNh
c2UgUHV0U2NvcGVkVmFyOgpAQCAtNjgxLDYgKzY4MiwyMSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICBjYXNlIEdldEJ5SWQ6
IHsKKyAgICAgICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9wcmVkaWN0aW9uc1tub2Rl
LmNoaWxkMSgpXSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoIWlz
SW50MzJQcmVkaWN0aW9uKG1fcHJlZGljdGlvbnNbbV9jb21waWxlSW5kZXhdKSkKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChtX2NvZGVCbG9jay0+aWRlbnRpZmllcihu
b2RlLmlkZW50aWZpZXJOdW1iZXIoKSkgIT0gbV9nbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorI2lmIEVOQUJMRShE
RkdfREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKKyAgICAgICAgICAgIHByaW50ZigiICBAJXUg
LT4gR2V0QXJyYXlMZW5ndGgiLCBub2RlSW5kZXgpOworI2VuZGlmCisgICAgICAgICAgICBub2Rl
Lm9wID0gR2V0QXJyYXlMZW5ndGg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpAQCAtMTA0NCw2ICsxMDYwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBBcml0aE1heDoK
ICAgICAgICAgY2FzZSBBcml0aFNxcnQ6CiAgICAgICAgIGNhc2UgR2V0Q2FsbGVlOgorICAgICAg
ICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQocHVyZUNT
RShub2RlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9u
IDk2MTQyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MzEsNiArMTgzMSwyNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BS
LCBtX2NvbXBpbGVJbmRleCwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQorICAgICAgICAKKyAgICBjYXNlIEdldEFycmF5TGVuZ3RoOiB7CisgICAg
ICAgIE5vZGUmIGJhc2VOb2RlID0gbV9qaXQuZ3JhcGgoKVtub2RlLmNoaWxkMSgpXTsKKyAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgCisgICAgICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChiYXNlTm9kZS5vcCAhPSBHZXRMb2NhbCB8fCAh
aXNBcnJheVByZWRpY3Rpb24obV9qaXQuZ3JhcGgoKS5nZXRQcmVkaWN0aW9uKGJhc2VOb2RlLmxv
Y2FsKCkpKSkKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJh
eVZQdHIpKSk7CisgICAgICAgIAorICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSksIHJlc3VsdEdQUik7
CisgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIs
IE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fbGVuZ3RoKSksIHJlc3VsdEdQUik7Cisg
ICAgICAgIAorICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKG1faml0LmJyYW5jaDMyKE1hY3JvQXNz
ZW1ibGVyOjpMZXNzVGhhbiwgcmVzdWx0R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMy
KDApKSk7CisgICAgICAgIAorICAgICAgICBpbnRlZ2VyUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21w
aWxlSW5kZXgpOworICAgICAgICBicmVhazsKKyAgICB9CiAKICAgICBjYXNlIENoZWNrU3RydWN0
dXJlOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGls
ZDEoKSk7Cg==
</data>
<flag name="review"
          id="105975"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108903</attachid>
            <date>2011-09-27 14:48:37 -0700</date>
            <delta_ts>2011-09-27 15:03:03 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>arraylength_patch_2.diff</filename>
            <type>text/plain</type>
            <size>13302</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTYxNTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTEtMDktMjcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgSklUIHNob3VsZCBzcGVjdWxhdGUgbW9yZSBhZ2dyZXNzaXZlbHkgb24gcmVhZHMgb2YgYXJy
YXkubGVuZ3RoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02ODkzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpcyBhIDIlIHNwZWVkLXVwIG9uIEtyYWtlbiwgbmV1dHJhbCBlbHNld2hl
cmUuCisKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAqIGRmZy9ERkdQcm9wYWdh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpwcm9wYWdhdGVOb2RlUHJl
ZGljdGlvbnMpOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OmZpeHVwTm9kZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorCiAyMDExLTA5LTI3ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJhcGlkbHkgcmVmcmVzaGluZyBhIGZlTW9ycGhvbG9n
eVtlcm9kZV0gd2l0aCByPTAgY2FuIHNvbWV0aW1lcyBjYXVzZSBkaXNwbGF5IGNvcnJ1cHRpb24K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiA5NjE1OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NjYsNiArMjY2LDcgQEAgc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBhcml0aE5vZGVGbGFncwog
ICAgIG1hY3JvKFB1dEJ5SWREaXJlY3QsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNX
b3JsZCkgXAogICAgIG1hY3JvKENoZWNrU3RydWN0dXJlLCBOb2RlUmVzdWx0U3RvcmFnZSB8IE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRCeU9mZnNldCwgTm9kZVJlc3VsdEpTKSBc
CisgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3Jv
KEdldE1ldGhvZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KENoZWNrTWV0aG9kLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFj
cm8oR2V0U2NvcGVDaGFpbiwgTm9kZVJlc3VsdEpTKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJvcGFnYXRvci5jcHAJKHJldmlzaW9uIDk2MTU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNiArMzQsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCisjaWYg
RU5BQkxFKERGR19ERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorI2RlZmluZSBERUJVRyhzdGF0
ZW1lbnQpIHN0YXRlbWVudAorI2Vsc2UKKyNkZWZpbmUgREVCVUcoc3RhdGVtZW50KSAoKHZvaWQp
MCkKKyNlbmRpZgorCiBjbGFzcyBQcm9wYWdhdG9yIHsKIHB1YmxpYzoKICAgICBQcm9wYWdhdG9y
KEdyYXBoJiBncmFwaCwgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrKQpAQCAtNjEsMTMgKzY3LDkgQEAgcHVibGlj
OgogICAgIAogICAgIHZvaWQgZml4cG9pbnQoKQogICAgIHsKLSNpZiBFTkFCTEUoREZHX0RFQlVH
X1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgbV9ncmFwaC5kdW1wKG1fY29kZUJsb2NrKTsKLSNl
bmRpZgorICAgICAgICBERUJVRyhtX2dyYXBoLmR1bXAobV9jb2RlQmxvY2spKTsKKyAgICAgICAg
REVCVUcobV9jb3VudCA9IDApOwogCi0jaWYgRU5BQkxFKERGR19ERUJVR19QUk9QQUdBVElPTl9W
RVJCT1NFKQotICAgICAgICBtX2NvdW50ID0gMDsKLSNlbmRpZgogICAgICAgICBkbyB7CiAgICAg
ICAgICAgICBtX2NoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgICAgIApAQCAtODEsOSArODMsOCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBwcm9wYWdhdGVBcml0aE5vZGVGbGFnc0ZvcndhcmQoKTsK
ICAgICAgICAgfSB3aGlsZSAobV9jaGFuZ2VkKTsKICAgICAgICAgCi0jaWYgRU5BQkxFKERGR19E
RUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBtX2NvdW50ID0gMDsKLSNlbmRpZgor
ICAgICAgICBERUJVRyhtX2NvdW50ID0gMCk7CisKICAgICAgICAgZG8gewogICAgICAgICAgICAg
bV9jaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgICAgICAKQEAgLTEwMywyNCArMTA0LDE4IEBAIHB1
YmxpYzoKICAgICAgICAgCiAgICAgICAgIGZpeHVwKCk7CiAgICAgICAgIAotI2lmIEVOQUJMRShE
RkdfREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCJHcmFwaCBhZnRl
ciBwcm9wYWdhdGlvbiBmaXh1cDpcbiIpOwotICAgICAgICBtX2dyYXBoLmR1bXAobV9jb2RlQmxv
Y2spOwotI2VuZGlmCisgICAgICAgIERFQlVHKHByaW50ZigiR3JhcGggYWZ0ZXIgcHJvcGFnYXRp
b24gZml4dXA6XG4iKSk7CisgICAgICAgIERFQlVHKG1fZ3JhcGguZHVtcChtX2NvZGVCbG9jaykp
OwogCiAgICAgICAgIGxvY2FsQ1NFKCk7CiAKLSNpZiBFTkFCTEUoREZHX0RFQlVHX1BST1BBR0FU
SU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiR3JhcGggYWZ0ZXIgQ1NFOlxuIik7Ci0gICAg
ICAgIG1fZ3JhcGguZHVtcChtX2NvZGVCbG9jayk7Ci0jZW5kaWYKKyAgICAgICAgREVCVUcocHJp
bnRmKCJHcmFwaCBhZnRlciBDU0U6XG4iKSk7CisgICAgICAgIERFQlVHKG1fZ3JhcGguZHVtcCht
X2NvZGVCbG9jaykpOwogCiAgICAgICAgIGFsbG9jYXRlVmlydHVhbFJlZ2lzdGVycygpOwogCi0j
aWYgRU5BQkxFKERGR19ERUJVR19WRVJCT1NFKQotICAgICAgICBwcmludGYoIkdyYXBoIGFmdGVy
IHByb3BhZ2F0aW9uOlxuIik7Ci0gICAgICAgIG1fZ3JhcGguZHVtcChtX2NvZGVCbG9jayk7Ci0j
ZW5kaWYKKyAgICAgICAgREVCVUcocHJpbnRmKCJHcmFwaCBhZnRlciBwcm9wYWdhdGlvbjpcbiIp
KTsKKyAgICAgICAgREVCVUcobV9ncmFwaC5kdW1wKG1fY29kZUJsb2NrKSk7CiAgICAgfQogICAg
IAogcHJpdmF0ZToKQEAgLTE1MCw5ICsxNDUsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAobm9k
ZS5oYXNBcml0aE5vZGVGbGFncygpKQogICAgICAgICAgICAgZmxhZ3MgPSBub2RlLnJhd0FyaXRo
Tm9kZUZsYWdzKCk7CiAgICAgICAgIAotI2lmIEVOQUJMRShERkdfREVCVUdfUFJPUEFHQVRJT05f
VkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCIgICAlcyBAJXU6ICVzICIsIEdyYXBoOjpvcE5hbWUo
b3ApLCBtX2NvbXBpbGVJbmRleCwgYXJpdGhOb2RlRmxhZ3NBc1N0cmluZyhmbGFncykpOwotI2Vu
ZGlmCisgICAgICAgIERFQlVHKHByaW50ZigiICAgJXMgQCV1OiAlcyAiLCBHcmFwaDo6b3BOYW1l
KG9wKSwgbV9jb21waWxlSW5kZXgsIGFyaXRoTm9kZUZsYWdzQXNTdHJpbmcoZmxhZ3MpKSk7CiAg
ICAgICAgIAogICAgICAgICBmbGFncyAmPSBOb2RlVXNlZEFzTWFzazsKICAgICAgICAgCkBAIC0y
NTYsMjcgKzI0OSwyMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAotI2lmIEVOQUJMRShERkdfREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJp
bnRmKCIlc1xuIiwgY2hhbmdlZCA/ICJDSEFOR0VEIiA6ICIiKTsKLSNlbmRpZgorICAgICAgICBE
RUJVRyhwcmludGYoIiVzXG4iLCBjaGFuZ2VkID8gIkNIQU5HRUQiIDogIiIpKTsKICAgICAgICAg
CiAgICAgICAgIG1fY2hhbmdlZCB8PSBjaGFuZ2VkOwogICAgIH0KICAgICAKICAgICB2b2lkIHBy
b3BhZ2F0ZUFyaXRoTm9kZUZsYWdzRm9yd2FyZCgpCiAgICAgewotI2lmIEVOQUJMRShERkdfREVC
VUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCJQcm9wYWdhdGluZyBhcml0
aG1ldGljIG5vZGUgZmxhZ3MgZm9yd2FyZCBbJXVdXG4iLCArK21fY291bnQpOwotI2VuZGlmCisg
ICAgICAgIERFQlVHKHByaW50ZigiUHJvcGFnYXRpbmcgYXJpdGhtZXRpYyBub2RlIGZsYWdzIGZv
cndhcmQgWyV1XVxuIiwgKyttX2NvdW50KSk7CiAgICAgICAgIGZvciAobV9jb21waWxlSW5kZXgg
PSAwOyBtX2NvbXBpbGVJbmRleCA8IG1fZ3JhcGguc2l6ZSgpOyArK21fY29tcGlsZUluZGV4KQog
ICAgICAgICAgICAgcHJvcGFnYXRlQXJpdGhOb2RlRmxhZ3MobV9ncmFwaFttX2NvbXBpbGVJbmRl
eF0pOwogICAgIH0KICAgICAKICAgICB2b2lkIHByb3BhZ2F0ZUFyaXRoTm9kZUZsYWdzQmFja3dh
cmQoKQogICAgIHsKLSNpZiBFTkFCTEUoREZHX0RFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0g
ICAgICAgIHByaW50ZigiUHJvcGFnYXRpbmcgYXJpdGhtZXRpYyBub2RlIGZsYWdzIGJhY2t3YXJk
IFsldV1cbiIsICsrbV9jb3VudCk7Ci0jZW5kaWYKKyAgICAgICAgREVCVUcocHJpbnRmKCJQcm9w
YWdhdGluZyBhcml0aG1ldGljIG5vZGUgZmxhZ3MgYmFja3dhcmQgWyV1XVxuIiwgKyttX2NvdW50
KSk7CiAgICAgICAgIGZvciAobV9jb21waWxlSW5kZXggPSBtX2dyYXBoLnNpemUoKTsgbV9jb21w
aWxlSW5kZXgtLSA+IDA7KQogICAgICAgICAgICAgcHJvcGFnYXRlQXJpdGhOb2RlRmxhZ3MobV9n
cmFwaFttX2NvbXBpbGVJbmRleF0pOwogICAgIH0KQEAgLTMwNiw5ICsyOTMsNyBAQCBwcml2YXRl
OgogICAgICAgICAKICAgICAgICAgTm9kZVR5cGUgb3AgPSBub2RlLm9wOwogCi0jaWYgRU5BQkxF
KERGR19ERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYoIiAgICVzIEAl
dTogIiwgR3JhcGg6Om9wTmFtZShvcCksIG1fY29tcGlsZUluZGV4KTsKLSNlbmRpZgorICAgICAg
ICBERUJVRyhwcmludGYoIiAgICVzIEAldTogIiwgR3JhcGg6Om9wTmFtZShvcCksIG1fY29tcGls
ZUluZGV4KSk7CiAgICAgICAgIAogICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKICAgICAg
ICAgCkBAIC0zNzUsMTMgKzM2MCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCi0gICAgICAgIGNhc2UgVmFsdWVUb0RvdWJsZTogewotICAgICAgICAgICAgLy8g
VGhpcyBub2RlIHNob3VsZCBuZXZlciBiZSB2aXNpYmxlIGF0IHRoaXMgc3RhZ2Ugb2YgY29tcGls
YXRpb24uIEl0IGlzCi0gICAgICAgICAgICAvLyBpbnNlcnRlZCBieSBmaXh1cCgpLCB3aGljaCBm
b2xsb3dzIHRoaXMgcGhhc2UuCi0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIAogICAgICAgICBjYXNlIFZhbHVl
QWRkOiB7CiAgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIGxlZnQgPSBtX3ByZWRpY3Rpb25zW25v
ZGUuY2hpbGQxKCldOwogICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fcHJlZGlj
dGlvbnNbbm9kZS5jaGlsZDIoKV07CkBAIC01NDYsNiArNTI0LDE0IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgVmFsdWVUb0RvdWJsZToK
KyAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDogeworICAgICAgICAgICAgLy8gVGhpcyBub2Rl
IHNob3VsZCBuZXZlciBiZSB2aXNpYmxlIGF0IHRoaXMgc3RhZ2Ugb2YgY29tcGlsYXRpb24uIEl0
IGlzCisgICAgICAgICAgICAvLyBpbnNlcnRlZCBieSBmaXh1cCgpLCB3aGljaCBmb2xsb3dzIHRo
aXMgcGhhc2UuCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIAogI2lmbmRlZiBOREVCVUcKICAgICAgICAgLy8g
VGhlc2UgZ2V0IGlnbm9yZWQgYmVjYXVzZSB0aGV5IGRvbid0IHJldHVybiBhbnl0aGluZy4KICAg
ICAgICAgY2FzZSBQdXRTY29wZWRWYXI6CkBAIC01NzMsMjcgKzU1OSwyMSBAQCBwcml2YXRlOgog
I2VuZGlmCiAgICAgICAgIH0KIAotI2lmIEVOQUJMRShERkdfREVCVUdfUFJPUEFHQVRJT05fVkVS
Qk9TRSkKLSAgICAgICAgcHJpbnRmKCIlcyAiLCBwcmVkaWN0aW9uVG9TdHJpbmcobV9wcmVkaWN0
aW9uc1ttX2NvbXBpbGVJbmRleF0pKTsKLSNlbmRpZgorICAgICAgICBERUJVRyhwcmludGYoIiVz
ICIsIHByZWRpY3Rpb25Ub1N0cmluZyhtX3ByZWRpY3Rpb25zW21fY29tcGlsZUluZGV4XSkpKTsK
ICAgICAgICAgCiAgICAgICAgIG1fY2hhbmdlZCB8PSBjaGFuZ2VkOwogICAgIH0KICAgICAKICAg
ICB2b2lkIHByb3BhZ2F0ZVByZWRpY3Rpb25zRm9yd2FyZCgpCiAgICAgewotI2lmIEVOQUJMRShE
RkdfREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCJQcm9wYWdhdGlu
ZyBwcmVkaWN0aW9ucyBmb3J3YXJkIFsldV1cbiIsICsrbV9jb3VudCk7Ci0jZW5kaWYKKyAgICAg
ICAgREVCVUcocHJpbnRmKCJQcm9wYWdhdGluZyBwcmVkaWN0aW9ucyBmb3J3YXJkIFsldV1cbiIs
ICsrbV9jb3VudCkpOwogICAgICAgICBmb3IgKG1fY29tcGlsZUluZGV4ID0gMDsgbV9jb21waWxl
SW5kZXggPCBtX2dyYXBoLnNpemUoKTsgKyttX2NvbXBpbGVJbmRleCkKICAgICAgICAgICAgIHBy
b3BhZ2F0ZU5vZGVQcmVkaWN0aW9ucyhtX2dyYXBoW21fY29tcGlsZUluZGV4XSk7CiAgICAgfQog
ICAgIAogICAgIHZvaWQgcHJvcGFnYXRlUHJlZGljdGlvbnNCYWNrd2FyZCgpCiAgICAgewotI2lm
IEVOQUJMRShERkdfREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCJQ
cm9wYWdhdGluZyBwcmVkaWN0aW9ucyBiYWNrd2FyZCBbJXVdXG4iLCArK21fY291bnQpOwotI2Vu
ZGlmCisgICAgICAgIERFQlVHKHByaW50ZigiUHJvcGFnYXRpbmcgcHJlZGljdGlvbnMgYmFja3dh
cmQgWyV1XVxuIiwgKyttX2NvdW50KSk7CiAgICAgICAgIGZvciAobV9jb21waWxlSW5kZXggPSBt
X2dyYXBoLnNpemUoKTsgbV9jb21waWxlSW5kZXgtLSA+IDA7KQogICAgICAgICAgICAgcHJvcGFn
YXRlTm9kZVByZWRpY3Rpb25zKG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdKTsKICAgICB9CkBAIC02
MDEsOSArNTgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRvRG91YmxlKE5vZGVJbmRleCBub2Rl
SW5kZXgpCiAgICAgewogICAgICAgICBpZiAobV9ncmFwaFtub2RlSW5kZXhdLm9wID09IFZhbHVl
VG9OdW1iZXIpIHsKLSNpZiBFTkFCTEUoREZHX0RFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0g
ICAgICAgICAgICBwcmludGYoIiAgQCV1IC0+IFZhbHVlVG9Eb3VibGUiLCBub2RlSW5kZXgpOwot
I2VuZGlmCisgICAgICAgICAgICBERUJVRyhwcmludGYoIiAgQCV1IC0+IFZhbHVlVG9Eb3VibGUi
LCBub2RlSW5kZXgpKTsKICAgICAgICAgICAgIG1fZ3JhcGhbbm9kZUluZGV4XS5vcCA9IFZhbHVl
VG9Eb3VibGU7CiAgICAgICAgIH0KICAgICB9CkBAIC02MTUsOSArNTkzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgCiAgICAgICAgIE5vZGVUeXBlIG9wID0gbm9kZS5vcDsKIAotI2lmIEVOQUJMRShE
RkdfREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCIgICAlcyBAJXU6
ICIsIEdyYXBoOjpvcE5hbWUob3ApLCBtX2NvbXBpbGVJbmRleCk7Ci0jZW5kaWYKKyAgICAgICAg
REVCVUcocHJpbnRmKCIgICAlcyBAJXU6ICIsIEdyYXBoOjpvcE5hbWUob3ApLCBtX2NvbXBpbGVJ
bmRleCkpOwogICAgICAgICAKICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIFZh
bHVlQWRkOiB7CkBAIC02ODEsMjAgKzY1NywyOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICBjYXNlIEdldEJ5SWQ6IHsKKyAg
ICAgICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9wcmVkaWN0aW9uc1tub2RlLmNoaWxk
MSgpXSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoIWlzSW50MzJQ
cmVkaWN0aW9uKG1fcHJlZGljdGlvbnNbbV9jb21waWxlSW5kZXhdKSkKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGlmIChtX2NvZGVCbG9jay0+aWRlbnRpZmllcihub2RlLmlk
ZW50aWZpZXJOdW1iZXIoKSkgIT0gbV9nbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgREVCVUco
cHJpbnRmKCIgIEAldSAtPiBHZXRBcnJheUxlbmd0aCIsIG5vZGVJbmRleCkpOworICAgICAgICAg
ICAgbm9kZS5vcCA9IEdldEFycmF5TGVuZ3RoOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAotI2lmIEVOQUJMRShERkdfREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAg
ICAgICAgcHJpbnRmKCJcbiIpOwotI2VuZGlmCisgICAgICAgIERFQlVHKHByaW50ZigiXG4iKSk7
CiAgICAgfQogICAgIAogICAgIHZvaWQgZml4dXAoKQogICAgIHsKLSNpZiBFTkFCTEUoREZHX0RF
QlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiUGVyZm9ybWluZyBGaXh1
cFxuIik7Ci0jZW5kaWYKKyAgICAgICAgREVCVUcocHJpbnRmKCJQZXJmb3JtaW5nIEZpeHVwXG4i
KSk7CiAgICAgICAgIGZvciAobV9jb21waWxlSW5kZXggPSAwOyBtX2NvbXBpbGVJbmRleCA8IG1f
Z3JhcGguc2l6ZSgpOyArK21fY29tcGlsZUluZGV4KQogICAgICAgICAgICAgZml4dXBOb2RlKG1f
Z3JhcGhbbV9jb21waWxlSW5kZXhdKTsKICAgICB9CkBAIC03NTIsOSArNzM3LDcgQEAgcHJpdmF0
ZToKICAgICBOb2RlSW5kZXggc3RhcnRJbmRleEZvckNoaWxkcmVuKE5vZGVJbmRleCBjaGlsZDEg
PSBOb05vZGUsIE5vZGVJbmRleCBjaGlsZDIgPSBOb05vZGUsIE5vZGVJbmRleCBjaGlsZDMgPSBO
b05vZGUpCiAgICAgewogICAgICAgICBOb2RlSW5kZXggcmVzdWx0ID0gY29tcHV0ZVN0YXJ0SW5k
ZXhGb3JDaGlsZHJlbihjaGlsZDEsIGNoaWxkMiwgY2hpbGQzKTsKLSNpZiBFTkFCTEUoREZHX0RF
QlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHByaW50ZigiICBsb29rYmFjayAldTog
IiwgcmVzdWx0KTsKLSNlbmRpZgorICAgICAgICBERUJVRyhwcmludGYoIiAgbG9va2JhY2sgJXU6
ICIsIHJlc3VsdCkpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKQEAgLTc3
Miw5ICs3NTUsNyBAQCBwcml2YXRlOgogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXN1bHQr
KzsKICAgICAgICAgQVNTRVJUKHJlc3VsdCA8PSBtX2NvbXBpbGVJbmRleCk7Ci0jaWYgRU5BQkxF
KERGR19ERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBwcmludGYoIiAgbGltaXQg
JXU6ICIsIHJlc3VsdCk7Ci0jZW5kaWYKKyAgICAgICAgREVCVUcocHJpbnRmKCIgIGxpbWl0ICV1
OiAiLCByZXN1bHQpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCkBAIC05
ODYsOSArOTY3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKG1fcHJlZGljdGlvbnNbbV9jb21w
aWxlSW5kZXhdICE9IG1fcHJlZGljdGlvbnNbcmVwbGFjZW1lbnRdKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAKLSNpZiBFTkFCTEUoREZHX0RFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0Up
Ci0gICAgICAgIHByaW50ZigiICAgUmVwbGFjaW5nIEAldSAtPiBAJXUiLCBtX2NvbXBpbGVJbmRl
eCwgcmVwbGFjZW1lbnQpOwotI2VuZGlmCisgICAgICAgIERFQlVHKHByaW50ZigiICAgUmVwbGFj
aW5nIEAldSAtPiBAJXUiLCBtX2NvbXBpbGVJbmRleCwgcmVwbGFjZW1lbnQpKTsKICAgICAgICAg
CiAgICAgICAgIE5vZGUmIG5vZGUgPSBtX2dyYXBoW21fY29tcGlsZUluZGV4XTsKICAgICAgICAg
bm9kZS5vcCA9IFBoYW50b207CkBAIC0xMDEyLDkgKzk5MSw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGlmICghbm9kZS5zaG91bGRHZW5lcmF0ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKLSNpZiBFTkFCTEUoREZHX0RFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIHBy
aW50ZigiICAgJXMgQCV1OiAiLCBHcmFwaDo6b3BOYW1lKG1fZ3JhcGhbbV9jb21waWxlSW5kZXhd
Lm9wKSwgbV9jb21waWxlSW5kZXgpOwotI2VuZGlmCisgICAgICAgIERFQlVHKHByaW50ZigiICAg
JXMgQCV1OiAiLCBHcmFwaDo6b3BOYW1lKG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdLm9wKSwgbV9j
b21waWxlSW5kZXgpKTsKICAgICAgICAgCiAgICAgICAgIC8vIE5PVEU6IHRoZXJlIGFyZSBzb21l
IG5vZGVzIHRoYXQgd2UgZGVsaWJlcmF0ZWx5IGRvbid0IENTRSBldmVuIHRob3VnaCB3ZQogICAg
ICAgICAvLyBwcm9iYWJseSBjb3VsZCwgbGlrZSBTdHJDYXQgYW5kIFRvUHJpbWl0aXZlLiBUaGF0
J3MgYmVjYXVzZSB0aGVyZSBpcyBubwpAQCAtMTA0NCw2ICsxMDIxLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBBcml0aE1heDoKICAgICAgICAgY2FzZSBBcml0aFNxcnQ6CiAgICAgICAgIGNh
c2UgR2V0Q2FsbGVlOgorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICAgICAg
c2V0UmVwbGFjZW1lbnQocHVyZUNTRShub2RlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIApAQCAtMTEwOSw5ICsxMDg3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgbV9sYXN0U2Vlbltub2RlLm9wICYgTm9kZUlkTWFza10gPSBtX2NvbXBpbGVJ
bmRleDsKLSNpZiBFTkFCTEUoREZHX0RFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAg
IHByaW50ZigiXG4iKTsKLSNlbmRpZgorICAgICAgICBERUJVRyhwcmludGYoIlxuIikpOwogICAg
IH0KICAgICAKICAgICB2b2lkIHBlcmZvcm1CbG9ja0NTRShCYXNpY0Jsb2NrJiBibG9jaykKQEAg
LTExMjQsOSArMTEwMCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBsb2NhbENTRSgpCiAg
ICAgewotI2lmIEVOQUJMRShERkdfREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAg
cHJpbnRmKCJQZXJmb3JtaW5nIGxvY2FsIENTRToiKTsKLSNlbmRpZgorICAgICAgICBERUJVRyhw
cmludGYoIlBlcmZvcm1pbmcgbG9jYWwgQ1NFOiIpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBi
bG9jayA9IDA7IGJsb2NrIDwgbV9ncmFwaC5tX2Jsb2Nrcy5zaXplKCk7ICsrYmxvY2spCiAgICAg
ICAgICAgICBwZXJmb3JtQmxvY2tDU0UoKm1fZ3JhcGgubV9ibG9ja3NbYmxvY2tdKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAkocmV2aXNpb24gOTYxNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzMSw2ICsxODMxLDI2IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4LCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0
bHkpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgR2V0QXJyYXlM
ZW5ndGg6IHsKKyAgICAgICAgTm9kZSYgYmFzZU5vZGUgPSBtX2ppdC5ncmFwaCgpW25vZGUuY2hp
bGQxKCldOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hp
bGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAKKyAg
ICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICAKKyAgICAgICAgaWYgKGJhc2VOb2RlLm9wICE9
IEdldExvY2FsIHx8ICFpc0FycmF5UHJlZGljdGlvbihtX2ppdC5ncmFwaCgpLmdldFByZWRpY3Rp
b24oYmFzZU5vZGUubG9jYWwoKSkpKQorICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFs
RGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgCisgICAgICAgIG1faml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgp
KSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHJlc3VsdEdQUiwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV9sZW5ndGgpKSwg
cmVzdWx0R1BSKTsKKyAgICAgICAgCisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJh
bmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCByZXN1bHRHUFIsIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoMCkpKTsKKyAgICAgICAgCisgICAgICAgIGludGVnZXJSZXN1bHQocmVz
dWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGNh
c2UgQ2hlY2tTdHJ1Y3R1cmU6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLmNoaWxkMSgpKTsK
</data>
<flag name="review"
          id="105983"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>