<?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>82986</bug_id>
          
          <creation_ts>2012-04-02 17:20:07 -0700</creation_ts>
          <short_desc>jsr/sret should be removed</short_desc>
          <delta_ts>2012-06-07 17:23:42 -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>
          <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>594055</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-02 17:20:07 -0700</bug_when>
    <thetext>And replaced by inlining of finally blocks wherever we would have done jsr.

That makes the code easier to compile, should have no effect on performance or memory usage, and should allow us to kill off a lot of code.

Not to mention, it will preempt any bugs from OSR during execution of a finally block.  LLInt uses the virtual PC for the subroutine return, while the JIT uses the machine PC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594066</commentid>
    <comment_count>1</comment_count>
      <attachid>135240</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-02 17:23:46 -0700</bug_when>
    <thetext>Created attachment 135240
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594076</commentid>
    <comment_count>2</comment_count>
      <attachid>135240</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-02 17:35:32 -0700</bug_when>
    <thetext>Comment on attachment 135240
the patch

Reviewed by Geoff in person.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595181</commentid>
    <comment_count>3</comment_count>
      <attachid>135495</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-03 20:13:26 -0700</bug_when>
    <thetext>Created attachment 135495
the patch

The previous patch failed to save/restore the correct state for finally inlining.  For example:

try {
   switch (foo) {
   case blah:
      return bar;
   }
} finally {
    break;
}

Since the finally block was emitted inline in the return, the break would break us out of the switch.

Other similarly horrible things would happen with scope depth and the finally depth, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595198</commentid>
    <comment_count>4</comment_count>
      <attachid>135495</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-04-03 20:30:00 -0700</bug_when>
    <thetext>Comment on attachment 135495
the patch

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

emitComplexJumpScopes is maybe not my favorite function.

r=me

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2177
&gt; +                while (m_labelScopes.size() &gt; finallyContext.labelScopesSize)
&gt; +                    m_labelScopes.removeLast();

m_labelScopes.shrink(finallyContext.labelScopesSize) should suffice here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595201</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-03 20:35:06 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 135495 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=135495&amp;action=review
&gt; 
&gt; emitComplexJumpScopes is maybe not my favorite function.
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2177
&gt; &gt; +                while (m_labelScopes.size() &gt; finallyContext.labelScopesSize)
&gt; &gt; +                    m_labelScopes.removeLast();
&gt; 
&gt; m_labelScopes.shrink(finallyContext.labelScopesSize) should suffice here.

SegmentedVector is shrinkless!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595232</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-03 21:26:41 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/113136</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643862</commentid>
    <comment_count>7</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-06-07 13:48:32 -0700</bug_when>
    <thetext>This commit gives &gt;4% penalty on sunspider for me, tested on QNX without DFG turned on. Any idea?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643889</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-07 14:07:15 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; This commit gives &gt;4% penalty on sunspider for me, tested on QNX without DFG turned on. Any idea?

I don&apos;t remember this being a regression. I will retest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644107</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-07 17:23:42 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; This commit gives &gt;4% penalty on sunspider for me, tested on QNX without DFG turned on. Any idea?
&gt; 
&gt; I don&apos;t remember this being a regression. I will retest.

I reran all benchmarks on this change set.

There is no difference for me.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135240</attachid>
            <date>2012-04-02 17:23:46 -0700</date>
            <delta_ts>2012-04-03 20:13:26 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>killjsr_patch_1.diff</filename>
            <type>text/plain</type>
            <size>17518</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTEyOTY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDEyLTA0LTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
anNyL3NyZXQgc2hvdWxkIGJlIHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgyOTg2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMTAxNzAx
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIFJlcGxhY2VzIGpzci9zcmV0IHdpdGggZmluYWxseSBibG9jayBpbmxpbmluZy4KKworICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
ZHVtcCk6CisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoSlNDOjpwYWRPcGNvZGVOYW1lKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cHVzaEZp
bmFsbHlDb250ZXh0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb21w
bGV4SnVtcFNjb3Blcyk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoRmluYWxseUNvbnRleHQpOgorICAgICAgICAo
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwOgorICAgICAgICAoSlNDOjpUcnlOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnBy
aXZhdGVFeGVjdXRlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZSk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSklUKToKKyAgICAgICAgKiBq
aXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc206CisKIDIwMTItMDQtMDIgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBJbmNvcnJlY3QgbGl2ZW5lc3MgaW5mb3JtYXRpb24gd2hlbiBpbmxpbmluZwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlz
aW9uIDExMjkyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQ4LDE3ICsxMjQ4LDYgQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gdGhy
b3dfcmVmZXJlbmNlX2Vycm9yXHQgJXNcbiIsIGxvY2F0aW9uLCBjb25zdGFudE5hbWUoZXhlYywg
azAsIGdldENvbnN0YW50KGswKSkuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9Ci0gICAgICAgIGNhc2Ugb3BfanNyOiB7Ci0gICAgICAgICAgICBpbnQgcmV0QWRkckRzdCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0ganNyXHRcdCAlcywgJWQoLT4lZClc
biIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcmV0QWRkckRzdCkuZGF0YSgpLCBvZmZz
ZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2Ugb3Bfc3JldDogewotICAgICAgICAgICAgaW50IHJldEFkZHJTcmMgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHNyZXRcdFx0ICVzXG4i
LCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHJldEFkZHJTcmMpLmRhdGEoKSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2RlYnVnOiB7CiAgICAg
ICAgICAgICBpbnQgZGVidWdIb29rSUQgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCBmaXJzdExpbmUgPSAoKytpdCktPnUub3BlcmFuZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDExMjkyNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDkgKzE4
OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF90aHJvdywgMikgXAogICAg
ICAgICBtYWNybyhvcF90aHJvd19yZWZlcmVuY2VfZXJyb3IsIDIpIFwKICAgICAgICAgXAotICAg
ICAgICBtYWNybyhvcF9qc3IsIDMpIFwKLSAgICAgICAgbWFjcm8ob3Bfc3JldCwgMikgXAotICAg
ICAgICBcCiAgICAgICAgIG1hY3JvKG9wX2RlYnVnLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3By
b2ZpbGVfd2lsbF9jYWxsLCAyKSBcCiAgICAgICAgIG1hY3JvKG9wX3Byb2ZpbGVfZGlkX2NhbGws
IDIpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxMTI5MjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjAwNCwxMSArMjAwNCwxMSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0RGVidWdIb29rKERlCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxhc3RMaW5lKTsKIH0K
IAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaEZpbmFsbHlDb250ZXh0KExhYmVsKiB0YXJn
ZXQsIFJlZ2lzdGVySUQqIHJldEFkZHJEc3QpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNo
RmluYWxseUNvbnRleHQoU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2NrKQogewogICAgIENvbnRy
b2xGbG93Q29udGV4dCBzY29wZTsKICAgICBzY29wZS5pc0ZpbmFsbHlCbG9jayA9IHRydWU7Ci0g
ICAgRmluYWxseUNvbnRleHQgY29udGV4dCA9IHsgdGFyZ2V0LCByZXRBZGRyRHN0IH07CisgICAg
RmluYWxseUNvbnRleHQgY29udGV4dCA9IHsgZmluYWxseUJsb2NrIH07CiAgICAgc2NvcGUuZmlu
YWxseUNvbnRleHQgPSBjb250ZXh0OwogICAgIG1fc2NvcGVDb250ZXh0U3RhY2suYXBwZW5kKHNj
b3BlKTsKICAgICBtX2ZpbmFsbHlEZXB0aCsrOwpAQCAtMjEzNiw3ICsyMTM2LDcgQEAgUGFzc1Jl
ZlB0cjxMYWJlbD4gQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaQogICAgICAgICB9CiAKICAgICAgICAg
d2hpbGUgKHRvcFNjb3BlID4gYm90dG9tU2NvcGUgJiYgdG9wU2NvcGUtPmlzRmluYWxseUJsb2Nr
KSB7Ci0gICAgICAgICAgICBlbWl0SnVtcFN1YnJvdXRpbmUodG9wU2NvcGUtPmZpbmFsbHlDb250
ZXh0LnJldEFkZHJEc3QsIHRvcFNjb3BlLT5maW5hbGx5Q29udGV4dC5maW5hbGx5QWRkcik7Cisg
ICAgICAgICAgICBlbWl0Tm9kZSh0b3BTY29wZS0+ZmluYWxseUNvbnRleHQuZmluYWxseUJsb2Nr
KTsKICAgICAgICAgICAgIC0tdG9wU2NvcGU7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMjE2LDIz
ICsyMjE2LDYgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRocm93UmVmZXJlbgogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudFZhbHVlKGpzU3RyaW5nKGdsb2JhbERh
dGEoKSwgbWVzc2FnZSkpLT5pbmRleCgpKTsKIH0KIAotUGFzc1JlZlB0cjxMYWJlbD4gQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRKdW1wU3Vicm91dGluZShSZWdpc3RlcklEKiByZXRBZGRyRHN0LCBM
YWJlbCogZmluYWxseSkKLXsKLSAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXpl
KCk7Ci0KLSAgICBlbWl0T3Bjb2RlKG9wX2pzcik7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHJldEFkZHJEc3QtPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmaW5hbGx5
LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKLSAgICBlbWl0TGFiZWwobmV3
TGFiZWwoKS5nZXQoKSk7IC8vIFJlY29yZCB0aGUgZmFjdCB0aGF0IHRoZSBuZXh0IGluc3RydWN0
aW9uIGlzIGltcGxpY2l0bHkgbGFiZWxlZCwgYmVjYXVzZSBvcF9zcmV0IHdpbGwgcmV0dXJuIHRv
IGl0LgotICAgIHJldHVybiBmaW5hbGx5OwotfQotCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0U3Vicm91dGluZVJldHVybihSZWdpc3RlcklEKiByZXRBZGRyU3JjKQotewotICAgIGVtaXRP
cGNvZGUob3Bfc3JldCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHJldEFkZHJTcmMtPmlu
ZGV4KCkpOwotfQotCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVzaE5ld1Njb3BlKFJl
Z2lzdGVySUQqIGRzdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZh
bHVlKQogewogICAgIENvbnRyb2xGbG93Q29udGV4dCBjb250ZXh0OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAkocmV2aXNpb24gMTEyOTI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw4ICs3MSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBzdHJ1Y3QgRmluYWxseUNvbnRleHQgewotICAg
ICAgICBMYWJlbCogZmluYWxseUFkZHI7Ci0gICAgICAgIFJlZ2lzdGVySUQqIHJldEFkZHJEc3Q7
CisgICAgICAgIFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9jazsKICAgICB9OwogCiAgICAgc3Ry
dWN0IENvbnRyb2xGbG93Q29udGV4dCB7CkBAIC00NzksOSArNDc4LDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFBhc3NSZWZQdHI8TGFiZWw+IGVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5
KFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsKiB0YXJnZXQpOwogICAgICAgICBQYXNzUmVmUHRyPExh
YmVsPiBlbWl0SnVtcFNjb3BlcyhMYWJlbCogdGFyZ2V0LCBpbnQgdGFyZ2V0U2NvcGVEZXB0aCk7
CiAKLSAgICAgICAgUGFzc1JlZlB0cjxMYWJlbD4gZW1pdEp1bXBTdWJyb3V0aW5lKFJlZ2lzdGVy
SUQqIHJldEFkZHJEc3QsIExhYmVsKik7Ci0gICAgICAgIHZvaWQgZW1pdFN1YnJvdXRpbmVSZXR1
cm4oUmVnaXN0ZXJJRCogcmV0QWRkclNyYyk7Ci0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdl
dFByb3BlcnR5TmFtZXMoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3Rl
cklEKiBpLCBSZWdpc3RlcklEKiBzaXplLCBMYWJlbCogYnJlYWtUYXJnZXQpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV4dFByb3BlcnR5TmFtZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIGJhc2UsIFJlZ2lzdGVySUQqIGksIFJlZ2lzdGVySUQqIHNpemUsIFJlZ2lzdGVySUQqIGl0
ZXIsIExhYmVsKiB0YXJnZXQpOwogCkBAIC01MDQsNyArNTAwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGludCBzY29wZURlcHRoKCkgeyByZXR1cm4gbV9keW5hbWljU2NvcGVEZXB0aCAr
IG1fZmluYWxseURlcHRoOyB9CiAgICAgICAgIGJvb2wgaGFzRmluYWxpc2VyKCkgeyByZXR1cm4g
bV9maW5hbGx5RGVwdGggIT0gMDsgfQogCi0gICAgICAgIHZvaWQgcHVzaEZpbmFsbHlDb250ZXh0
KExhYmVsKiB0YXJnZXQsIFJlZ2lzdGVySUQqIHJldHVybkFkZHJEc3QpOworICAgICAgICB2b2lk
IHB1c2hGaW5hbGx5Q29udGV4dChTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2spOwogICAgICAg
ICB2b2lkIHBvcEZpbmFsbHlDb250ZXh0KCk7CiAKICAgICAgICAgdm9pZCBwdXNoT3B0aW1pc2Vk
Rm9ySW4oUmVnaXN0ZXJJRCogZXhwZWN0ZWRCYXNlLCBSZWdpc3RlcklEKiBpdGVyLCBSZWdpc3Rl
cklEKiBpbmRleCwgUmVnaXN0ZXJJRCogcHJvcGVydHlSZWdpc3RlcikKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJl
dmlzaW9uIDExMjkyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1NywxMyArMTk1Nyw4IEBAIFJlZ2lz
dGVySUQqIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY28KICAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOwog
CiAgICAgUmVmUHRyPExhYmVsPiB0cnlTdGFydExhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7
Ci0gICAgUmVmUHRyPExhYmVsPiBmaW5hbGx5U3RhcnQ7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGZpbmFsbHlSZXR1cm5BZGRyOwotICAgIGlmIChtX2ZpbmFsbHlCbG9jaykgewotICAgICAgICBm
aW5hbGx5U3RhcnQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKLSAgICAgICAgZmluYWxseVJldHVy
bkFkZHIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgIGdlbmVyYXRvci5wdXNo
RmluYWxseUNvbnRleHQoZmluYWxseVN0YXJ0LmdldCgpLCBmaW5hbGx5UmV0dXJuQWRkci5nZXQo
KSk7Ci0gICAgfQorICAgIGlmIChtX2ZpbmFsbHlCbG9jaykKKyAgICAgICAgZ2VuZXJhdG9yLnB1
c2hGaW5hbGx5Q29udGV4dChtX2ZpbmFsbHlCbG9jayk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExh
YmVsKHRyeVN0YXJ0TGFiZWwuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1f
dHJ5QmxvY2spOwpAQCAtMTk4NSwyNyArMTk4MCwxOCBAQCBSZWdpc3RlcklEKiBUcnlOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvCiAKICAgICBpZiAobV9maW5hbGx5QmxvY2spIHsKICAgICAgICAg
Z2VuZXJhdG9yLnBvcEZpbmFsbHlDb250ZXh0KCk7Ci0gICAgICAgIC8vIHRoZXJlIG1heSBiZSBp
bXBvcnRhbnQgcmVnaXN0ZXJzIGxpdmUgYXQgdGhlIHRpbWUgd2UganVtcAotICAgICAgICAvLyB0
byBhIGZpbmFsbHkgYmxvY2sgKHN1Y2ggYXMgZm9yIGEgcmV0dXJuIG9yIHRocm93KSBzbyB3ZQot
ICAgICAgICAvLyByZWYgdGhlIGhpZ2hlc3QgcmVnaXN0ZXIgZXZlciB1c2VkIGFzIGEgY29uc2Vy
dmF0aXZlCi0gICAgICAgIC8vIGFwcHJvYWNoIHRvIG5vdCBjbG9iYmVyaW5nIGFueXRoaW5nIGlt
cG9ydGFudAotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaGlnaGVzdFVzZWRSZWdpc3RlciA9
IGdlbmVyYXRvci5oaWdoZXN0VXNlZFJlZ2lzdGVyKCk7CisKICAgICAgICAgUmVmUHRyPExhYmVs
PiBmaW5hbGx5RW5kTGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAotICAgICAgICAvLyBO
b3JtYWwgcGF0aDogaW52b2tlIHRoZSBmaW5hbGx5IGJsb2NrLCB0aGVuIGp1bXAgb3ZlciBpdC4K
LSAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wU3Vicm91dGluZShmaW5hbGx5UmV0dXJuQWRkci5n
ZXQoKSwgZmluYWxseVN0YXJ0LmdldCgpKTsKKyAgICAgICAgLy8gTm9ybWFsIHBhdGg6IHJ1biB0
aGUgZmluYWxseSBjb2RlLCBhbmQganVtcCB0byB0aGUgZW5kLgorICAgICAgICBnZW5lcmF0b3Iu
ZW1pdE5vZGUoZHN0LCBtX2ZpbmFsbHlCbG9jayk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVt
cChmaW5hbGx5RW5kTGFiZWwuZ2V0KCkpOwogCiAgICAgICAgIC8vIFVuY2F1Z2h0IGV4Y2VwdGlv
biBwYXRoOiBpbnZva2UgdGhlIGZpbmFsbHkgYmxvY2ssIHRoZW4gcmUtdGhyb3cgdGhlIGV4Y2Vw
dGlvbi4KICAgICAgICAgUmVmUHRyPExhYmVsPiBoZXJlID0gZ2VuZXJhdG9yLmVtaXRMYWJlbChn
ZW5lcmF0b3IubmV3TGFiZWwoKS5nZXQoKSk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0
ZW1wRXhjZXB0aW9uUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdENhdGNoKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgdHJ5U3RhcnRMYWJlbC5nZXQoKSwgaGVyZS5nZXQoKSk7Ci0gICAgICAgIGdl
bmVyYXRvci5lbWl0SnVtcFN1YnJvdXRpbmUoZmluYWxseVJldHVybkFkZHIuZ2V0KCksIGZpbmFs
bHlTdGFydC5nZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3codGVtcEV4Y2VwdGlv
blJlZ2lzdGVyLmdldCgpKTsKLQotICAgICAgICAvLyBUaGUgZmluYWxseSBibG9jay4KLSAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChmaW5hbGx5U3RhcnQuZ2V0KCkpOwogICAgICAgICBnZW5l
cmF0b3IuZW1pdE5vZGUoZHN0LCBtX2ZpbmFsbHlCbG9jayk7Ci0gICAgICAgIGdlbmVyYXRvci5l
bWl0U3Vicm91dGluZVJldHVybihmaW5hbGx5UmV0dXJuQWRkci5nZXQoKSk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0VGhyb3codGVtcEV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKIAogICAgICAg
ICBnZW5lcmF0b3IuZW1pdExhYmVsKGZpbmFsbHlFbmRMYWJlbC5nZXQoKSk7CiAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCShyZXZpc2lvbiAxMTI5MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTg2LDMwICs1MTg2LDYgQEAg
c2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgdlBDKys7CiAgICAgICAgIE5FWFRfSU5TVFJV
Q1RJT04oKTsKICAgICB9Ci0gICAgREVGSU5FX09QQ09ERShvcF9qc3IpIHsKLSAgICAgICAgLyog
anNyIHJldEFkZHJEc3QocikgdGFyZ2V0KG9mZnNldCkKLQotICAgICAgICAgICBQbGFjZXMgdGhl
IGFkZHJlc3Mgb2YgdGhlIG5leHQgaW5zdHJ1Y3Rpb24gaW50byB0aGUgcmV0QWRkckRzdAotICAg
ICAgICAgICByZWdpc3RlciBhbmQganVtcHMgdG8gb2Zmc2V0IHRhcmdldCBmcm9tIHRoZSBjdXJy
ZW50IGluc3RydWN0aW9uLgotICAgICAgICAqLwotICAgICAgICBpbnQgcmV0QWRkckRzdCA9IHZQ
Q1sxXS51Lm9wZXJhbmQ7Ci0gICAgICAgIGludCB0YXJnZXQgPSB2UENbMl0udS5vcGVyYW5kOwot
ICAgICAgICBjYWxsRnJhbWUtPnIocmV0QWRkckRzdCkgPSB2UEMgKyBPUENPREVfTEVOR1RIKG9w
X2pzcik7Ci0KLSAgICAgICAgdlBDICs9IHRhcmdldDsKLSAgICAgICAgTkVYVF9JTlNUUlVDVElP
TigpOwotICAgIH0KLSAgICBERUZJTkVfT1BDT0RFKG9wX3NyZXQpIHsKLSAgICAgICAgLyogc3Jl
dCByZXRBZGRyU3JjKHIpCi0KLSAgICAgICAgIEp1bXBzIHRvIHRoZSBhZGRyZXNzIHN0b3JlZCBp
biB0aGUgcmV0QWRkclNyYyByZWdpc3Rlci4gVGhpcwotICAgICAgICAgZGlmZmVycyBmcm9tIG9w
X2ptcCBiZWNhdXNlIHRoZSB0YXJnZXQgYWRkcmVzcyBpcyBzdG9yZWQgaW4gYQotICAgICAgICAg
cmVnaXN0ZXIsIG5vdCBhcyBhbiBpbW1lZGlhdGUuCi0gICAgICAgICovCi0gICAgICAgIGludCBy
ZXRBZGRyU3JjID0gdlBDWzFdLnUub3BlcmFuZDsKLSAgICAgICAgdlBDID0gY2FsbEZyYW1lLT5y
KHJldEFkZHJTcmMpLnZQQygpOwotICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7Ci0gICAgfQog
ICAgIERFRklORV9PUENPREUob3BfZGVidWcpIHsKICAgICAgICAgLyogZGVidWcgZGVidWdIb29r
SUQobikgZmlyc3RMaW5lKG4pIGxhc3RMaW5lKG4pCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAJKHJldmlzaW9uIDExMjkyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgzLDcgKzI4Myw2IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2pubGVzc2VxKQogICAg
ICAgICBERUZJTkVfT1Aob3Bfam5ncmVhdGVyKQogICAgICAgICBERUZJTkVfT1Aob3Bfam5ncmVh
dGVyZXEpCi0gICAgICAgIERFRklORV9PUChvcF9qc3IpCiAgICAgICAgIERFRklORV9PUChvcF9q
dHJ1ZSkKICAgICAgICAgREVGSU5FX09QKG9wX2xvb3ApCiAgICAgICAgIERFRklORV9PUChvcF9s
b29wX2hpbnQpCkBAIC0zNDAsNyArMzM5LDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcmV0X29iamVjdF9vcl90aGlzKQogICAgICAg
ICBERUZJTkVfT1Aob3BfcnNoaWZ0KQogICAgICAgICBERUZJTkVfT1Aob3BfdXJzaGlmdCkKLSAg
ICAgICAgREVGSU5FX09QKG9wX3NyZXQpCiAgICAgICAgIERFRklORV9PUChvcF9zdHJjYXQpCiAg
ICAgICAgIERFRklORV9PUChvcF9zdHJpY3RlcSkKICAgICAgICAgREVGSU5FX09QKG9wX3N1YikK
QEAgLTY2NSwxMCArNjYzLDYgQEAgSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIq
IGZ1bgogICAgICAgICAgICAgbV9jb2RlQmxvY2stPmNhbGxSZXR1cm5JbmRleFZlY3RvcigpLmFw
cGVuZChDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldChwYXRjaEJ1ZmZlci5yZXR1cm5B
ZGRyZXNzT2Zmc2V0KGl0ZXItPmZyb20pLCBpdGVyLT5ieXRlY29kZU9mZnNldCkpOwogICAgIH0K
IAotICAgIC8vIExpbmsgYWJzb2x1dGUgYWRkcmVzc2VzIGZvciBqc3IKLSAgICBmb3IgKFZlY3Rv
cjxKU1JJbmZvPjo6aXRlcmF0b3IgaXRlciA9IG1fanNyU2l0ZXMuYmVnaW4oKTsgaXRlciAhPSBt
X2pzclNpdGVzLmVuZCgpOyArK2l0ZXIpCi0gICAgICAgIHBhdGNoQnVmZmVyLnBhdGNoKGl0ZXIt
PnN0b3JlTG9jYXRpb24sIHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YoaXRlci0+dGFyZ2V0KS5leGVj
dXRhYmxlQWRkcmVzcygpKTsKLQogICAgIG1fY29kZUJsb2NrLT5zZXROdW1iZXJPZlN0cnVjdHVy
ZVN0dWJJbmZvcyhtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLnNpemUoKSk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8u
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIGluZm8gPSBtX2NvZGVC
bG9jay0+c3RydWN0dXJlU3R1YkluZm8oaSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJ
KHJldmlzaW9uIDExMjkyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4MCwxNyArMjgwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyB2b2lkIGxpbmtGb3IoSlNGdW5jdGlvbiogY2FsbGVlLCBDb2RlQmxvY2sqIGNhbGxl
ckNvZGVCbG9jaywgQ29kZUJsb2NrKiBjYWxsZWVDb2RlQmxvY2ssIENvZGVQdHIsIENhbGxMaW5r
SW5mbyosIEpTR2xvYmFsRGF0YSosIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgc3RydWN0IEpTUkluZm8gewotICAgICAgICAgICAgRGF0YUxhYmVsUHRy
IHN0b3JlTG9jYXRpb247Ci0gICAgICAgICAgICBMYWJlbCB0YXJnZXQ7Ci0KLSAgICAgICAgICAg
IEpTUkluZm8oRGF0YUxhYmVsUHRyIHN0b3JlTG9jYXRpb24sIExhYmVsIHRhcmdldExvY2F0aW9u
KQotICAgICAgICAgICAgICAgIDogc3RvcmVMb2NhdGlvbihzdG9yZUxvY2F0aW9uKQotICAgICAg
ICAgICAgICAgICwgdGFyZ2V0KHRhcmdldExvY2F0aW9uKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgfQotICAgICAgICB9OwotCiAgICAgICAgIEpJVChKU0dsb2JhbERhdGEqLCBDb2RlQmxv
Y2sqID0gMCk7CiAKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZU1haW5QYXNzKCk7CkBAIC04
MjksNyArODE4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9qbmxl
c3NlcShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfam5ncmVhdGVyKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9qbmdyZWF0ZXJlcShJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfanNyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9qdHJ1ZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbG9vcChJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbG9vcF9oaW50KEluc3RydWN0aW9u
Kik7CkBAIC04ODMsNyArODcxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9yZXQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3JldF9vYmplY3Rf
b3JfdGhpcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcnNoaWZ0KEluc3Ry
dWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zcmV0KEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9zdHJjYXQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX3N0cmljdGVxKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9zdWIoSW5z
dHJ1Y3Rpb24qKTsKQEAgLTEwNjYsNyArMTA1Myw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBWZWN0b3I8SnVtcFRhYmxlPiBtX2ptcFRhYmxlOwogCiAgICAgICAgIHVuc2lnbmVkIG1fYnl0
ZWNvZGVPZmZzZXQ7Ci0gICAgICAgIFZlY3RvcjxKU1JJbmZvPiBtX2pzclNpdGVzOwogICAgICAg
ICBWZWN0b3I8U2xvd0Nhc2VFbnRyeT4gbV9zbG93Q2FzZXM7CiAgICAgICAgIFZlY3RvcjxTd2l0
Y2hSZWNvcmQ+IG1fc3dpdGNoZXM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDExMjkyNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIx
LDIwICs5MjEsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX3B0cihJbnN0cnVjdGlvbiogCiAg
ICAgYWRkSnVtcChicmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tUHRyKHB0cikp
LCB0YXJnZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qc3IoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKLXsKLSAgICBpbnQgcmV0QWRkckRzdCA9IGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQ7Ci0gICAgaW50IHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQ7Ci0gICAgRGF0YUxhYmVsUHRyIHN0b3JlTG9jYXRpb24gPSBzdG9yZVB0cldpdGhQ
YXRjaChUcnVzdGVkSW1tUHRyKDApLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2Yo
UmVnaXN0ZXIpICogcmV0QWRkckRzdCkpOwotICAgIGFkZEp1bXAoanVtcCgpLCB0YXJnZXQpOwot
ICAgIG1fanNyU2l0ZXMuYXBwZW5kKEpTUkluZm8oc3RvcmVMb2NhdGlvbiwgbGFiZWwoKSkpOwot
fQotCi12b2lkIEpJVDo6ZW1pdF9vcF9zcmV0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCi17Ci0gICAganVtcChBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0
ZXIpICogY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwotfQotCiB2b2lkIEpJVDo6
ZW1pdF9vcF9lcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIHVuc2ln
bmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDExMjkyNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc0MiwyMiArNzQyLDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9wdHIoSW5zdHJ1Y3Rpb24q
IAogICAgIGFkZEp1bXAoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihK
U1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShwdHIpKSkpLCB0YXJnZXQpOyAgICAgICAgICAgIAogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9qc3IoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
LXsKLSAgICBpbnQgcmV0QWRkckRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7
Ci0gICAgaW50IHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAg
RGF0YUxhYmVsUHRyIHN0b3JlTG9jYXRpb24gPSBzdG9yZVB0cldpdGhQYXRjaChUcnVzdGVkSW1t
UHRyKDApLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogcmV0
QWRkckRzdCkpOwotICAgIGFkZEp1bXAoanVtcCgpLCB0YXJnZXQpOwotICAgIG1fanNyU2l0ZXMu
YXBwZW5kKEpTUkluZm8oc3RvcmVMb2NhdGlvbiwgbGFiZWwoKSkpOwotICAgIGtpbGxMYXN0UmVz
dWx0UmVnaXN0ZXIoKTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRfb3Bfc3JldChJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQotewotICAgIGp1bXAoQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rl
ciwgc2l6ZW9mKFJlZ2lzdGVyKSAqIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsK
LSAgICBraWxsTGFzdFJlc3VsdFJlZ2lzdGVyKCk7Ci19Ci0KIHZvaWQgSklUOjplbWl0X29wX2Vx
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcnMoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDAsIGN1cnJlbnRJ
bnN0cnVjdGlvblszXS51Lm9wZXJhbmQsIHJlZ1QxKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShy
ZXZpc2lvbiAxMTI5MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTU3MSwyMSArMTU3MSw2IEBA
IF9sbGludF9vcF9jYXRjaDoKICAgICBkaXNwYXRjaCgyKQogCiAKLV9sbGludF9vcF9qc3I6Ci0g
ICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDRbUENdLCB0MAotICAgIGFkZGkgMyAqIDQs
IFBDLCB0MQotICAgIHN0b3JlaSB0MSwgW2NmciwgdDAsIDhdCi0gICAgZGlzcGF0Y2hCcmFuY2go
OFtQQ10pCi0KLQotX2xsaW50X29wX3NyZXQ6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxv
YWRpIDRbUENdLCB0MAotICAgIGxvYWRwIFtjZnIsIHQwLCA4XSwgUEMKLSAgICBkaXNwYXRjaCgw
KQotCi0KIF9sbGludF9vcF9lbmQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNoZWNrU3dp
dGNoVG9KSVRGb3JFcGlsb2d1ZSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTEyOTI2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTE0MjksMjEgKzE0MjksNiBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAg
ICAgZGlzcGF0Y2goMikKIAogCi1fbGxpbnRfb3BfanNyOgotICAgIHRyYWNlRXhlY3V0aW9uKCkK
LSAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MAotICAgIGFkZGkgMywgUEMsIHQxCi0gICAgc3Rv
cmVpIHQxLCBbY2ZyLCB0MCwgOF0KLSAgICBkaXNwYXRjaEludCgxNltQQiwgUEMsIDhdKQotCi0K
LV9sbGludF9vcF9zcmV0OgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaXMgOFtQQiwg
UEMsIDhdLCB0MAotICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwgUEMKLSAgICBkaXNwYXRjaCgwKQot
Ci0KIF9sbGludF9vcF9lbmQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNoZWNrU3dpdGNo
VG9KSVRGb3JFcGlsb2d1ZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135495</attachid>
            <date>2012-04-03 20:13:26 -0700</date>
            <delta_ts>2012-04-03 20:30:00 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>killjsr_patch_2.diff</filename>
            <type>text/plain</type>
            <size>22420</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTEyOTI2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDEyLTA0LTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
anNyL3NyZXQgc2hvdWxkIGJlIHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgyOTg2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMTAxNzAx
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIFJlcGxhY2VzIGpzci9zcmV0IHdpdGggZmluYWxseSBibG9jayBpbmxpbmluZy4KKworICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
ZHVtcCk6CisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoSlNDOjpwYWRPcGNvZGVOYW1lKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cHVzaEZp
bmFsbHlDb250ZXh0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb21w
bGV4SnVtcFNjb3Blcyk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoRmluYWxseUNvbnRleHQpOgorICAgICAgICAo
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwOgorICAgICAgICAoSlNDOjpUcnlOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnBy
aXZhdGVFeGVjdXRlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZSk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSklUKToKKyAgICAgICAgKiBq
aXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc206CisKIDIwMTItMDQtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBtYWtlIGRpc3RjaGVjayBpc3N1ZXMu
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAko
cmV2aXNpb24gMTEyOTI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNDgsMTcgKzEyNDgsNiBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBkYXRhTG9nKCJbJTRk
XSB0aHJvd19yZWZlcmVuY2VfZXJyb3JcdCAlc1xuIiwgbG9jYXRpb24sIGNvbnN0YW50TmFtZShl
eGVjLCBrMCwgZ2V0Q29uc3RhbnQoazApKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9qc3I6IHsKLSAgICAgICAgICAgIGludCByZXRBZGRy
RHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBqc3JcdFx0ICVzLCAlZCgt
PiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByZXRBZGRyRHN0KS5kYXRhKCks
IG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBvcF9zcmV0OiB7Ci0gICAgICAgICAgICBpbnQgcmV0QWRkclNyYyA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gc3JldFx0XHQg
JXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcmV0QWRkclNyYykuZGF0YSgpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZGVidWc6IHsK
ICAgICAgICAgICAgIGludCBkZWJ1Z0hvb2tJRCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IGZpcnN0TGluZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTEyOTI2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODks
OSArMTg5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX3Rocm93LCAyKSBc
CiAgICAgICAgIG1hY3JvKG9wX3Rocm93X3JlZmVyZW5jZV9lcnJvciwgMikgXAogICAgICAgICBc
Ci0gICAgICAgIG1hY3JvKG9wX2pzciwgMykgXAotICAgICAgICBtYWNybyhvcF9zcmV0LCAyKSBc
Ci0gICAgICAgIFwKICAgICAgICAgbWFjcm8ob3BfZGVidWcsIDQpIFwKICAgICAgICAgbWFjcm8o
b3BfcHJvZmlsZV93aWxsX2NhbGwsIDIpIFwKICAgICAgICAgbWFjcm8ob3BfcHJvZmlsZV9kaWRf
Y2FsbCwgMikgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDExMjkyNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMDksIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA4IENhbWVyb24gWndhcmljaCA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KICAq
IENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEsIFMuTC4KICAqCkBAIC0yMDA0LDExICsyMDA0LDE5
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2soRGUKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQobGFzdExpbmUpOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpw
dXNoRmluYWxseUNvbnRleHQoTGFiZWwqIHRhcmdldCwgUmVnaXN0ZXJJRCogcmV0QWRkckRzdCkK
K3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hGaW5hbGx5Q29udGV4dChTdGF0ZW1lbnROb2Rl
KiBmaW5hbGx5QmxvY2spCiB7CiAgICAgQ29udHJvbEZsb3dDb250ZXh0IHNjb3BlOwogICAgIHNj
b3BlLmlzRmluYWxseUJsb2NrID0gdHJ1ZTsKLSAgICBGaW5hbGx5Q29udGV4dCBjb250ZXh0ID0g
eyB0YXJnZXQsIHJldEFkZHJEc3QgfTsKKyAgICBGaW5hbGx5Q29udGV4dCBjb250ZXh0ID0gewor
ICAgICAgICBmaW5hbGx5QmxvY2ssCisgICAgICAgIG1fc2NvcGVDb250ZXh0U3RhY2suc2l6ZSgp
LAorICAgICAgICBtX3N3aXRjaENvbnRleHRTdGFjay5zaXplKCksCisgICAgICAgIG1fZm9ySW5D
b250ZXh0U3RhY2suc2l6ZSgpLAorICAgICAgICBtX2xhYmVsU2NvcGVzLnNpemUoKSwKKyAgICAg
ICAgbV9maW5hbGx5RGVwdGgsCisgICAgICAgIG1fZHluYW1pY1Njb3BlRGVwdGgKKyAgICB9Owog
ICAgIHNjb3BlLmZpbmFsbHlDb250ZXh0ID0gY29udGV4dDsKICAgICBtX3Njb3BlQ29udGV4dFN0
YWNrLmFwcGVuZChzY29wZSk7CiAgICAgbV9maW5hbGx5RGVwdGgrKzsKQEAgLTIxMzQsOSArMjE0
Miw2MyBAQCBQYXNzUmVmUHRyPExhYmVsPiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pCiAgICAgICAg
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobmV4dEluc24tPmJpbmQoYmVnaW4sIGluc3RydWN0
aW9ucygpLnNpemUoKSkpOwogICAgICAgICAgICAgZW1pdExhYmVsKG5leHRJbnNuLmdldCgpKTsK
ICAgICAgICAgfQotCisgICAgICAgIAorICAgICAgICBWZWN0b3I8Q29udHJvbEZsb3dDb250ZXh0
PiBzYXZlZFNjb3BlQ29udGV4dFN0YWNrOworICAgICAgICBWZWN0b3I8U3dpdGNoSW5mbz4gc2F2
ZWRTd2l0Y2hDb250ZXh0U3RhY2s7CisgICAgICAgIFZlY3RvcjxGb3JJbkNvbnRleHQ+IHNhdmVk
Rm9ySW5Db250ZXh0U3RhY2s7CisgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxMYWJlbFNjb3BlLCA4
PiBzYXZlZExhYmVsU2NvcGVzOwogICAgICAgICB3aGlsZSAodG9wU2NvcGUgPiBib3R0b21TY29w
ZSAmJiB0b3BTY29wZS0+aXNGaW5hbGx5QmxvY2spIHsKLSAgICAgICAgICAgIGVtaXRKdW1wU3Vi
cm91dGluZSh0b3BTY29wZS0+ZmluYWxseUNvbnRleHQucmV0QWRkckRzdCwgdG9wU2NvcGUtPmZp
bmFsbHlDb250ZXh0LmZpbmFsbHlBZGRyKTsKKyAgICAgICAgICAgIC8vIFNhdmUgdGhlIGN1cnJl
bnQgc3RhdGUgb2YgdGhlIHdvcmxkIHdoaWxlIGluc3RhdGluZyB0aGUgc3RhdGUgb2YgdGhlIHdv
cmxkCisgICAgICAgICAgICAvLyBmb3IgdGhlIGZpbmFsbHkgYmxvY2suCisgICAgICAgICAgICBG
aW5hbGx5Q29udGV4dCBmaW5hbGx5Q29udGV4dCA9IHRvcFNjb3BlLT5maW5hbGx5Q29udGV4dDsK
KyAgICAgICAgICAgIGJvb2wgZmxpcFNjb3BlcyA9IGZpbmFsbHlDb250ZXh0LnNjb3BlQ29udGV4
dFN0YWNrU2l6ZSAhPSBtX3Njb3BlQ29udGV4dFN0YWNrLnNpemUoKTsKKyAgICAgICAgICAgIGJv
b2wgZmxpcFN3aXRjaGVzID0gZmluYWxseUNvbnRleHQuc3dpdGNoQ29udGV4dFN0YWNrU2l6ZSAh
PSBtX3N3aXRjaENvbnRleHRTdGFjay5zaXplKCk7CisgICAgICAgICAgICBib29sIGZsaXBGb3JJ
bnMgPSBmaW5hbGx5Q29udGV4dC5mb3JJbkNvbnRleHRTdGFja1NpemUgIT0gbV9mb3JJbkNvbnRl
eHRTdGFjay5zaXplKCk7CisgICAgICAgICAgICBib29sIGZsaXBMYWJlbFNjb3BlcyA9IGZpbmFs
bHlDb250ZXh0LmxhYmVsU2NvcGVzU2l6ZSAhPSBtX2xhYmVsU2NvcGVzLnNpemUoKTsKKyAgICAg
ICAgICAgIGludCB0b3BTY29wZUluZGV4ID0gLTE7CisgICAgICAgICAgICBpbnQgYm90dG9tU2Nv
cGVJbmRleCA9IC0xOworICAgICAgICAgICAgaWYgKGZsaXBTY29wZXMpIHsKKyAgICAgICAgICAg
ICAgICB0b3BTY29wZUluZGV4ID0gdG9wU2NvcGUgLSBtX3Njb3BlQ29udGV4dFN0YWNrLmJlZ2lu
KCk7CisgICAgICAgICAgICAgICAgYm90dG9tU2NvcGVJbmRleCA9IGJvdHRvbVNjb3BlIC0gbV9z
Y29wZUNvbnRleHRTdGFjay5iZWdpbigpOworICAgICAgICAgICAgICAgIHNhdmVkU2NvcGVDb250
ZXh0U3RhY2sgPSBtX3Njb3BlQ29udGV4dFN0YWNrOworICAgICAgICAgICAgICAgIG1fc2NvcGVD
b250ZXh0U3RhY2suc2hyaW5rKGZpbmFsbHlDb250ZXh0LnNjb3BlQ29udGV4dFN0YWNrU2l6ZSk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZmxpcFN3aXRjaGVzKSB7CisgICAgICAg
ICAgICAgICAgc2F2ZWRTd2l0Y2hDb250ZXh0U3RhY2sgPSBtX3N3aXRjaENvbnRleHRTdGFjazsK
KyAgICAgICAgICAgICAgICBtX3N3aXRjaENvbnRleHRTdGFjay5zaHJpbmsoZmluYWxseUNvbnRl
eHQuc3dpdGNoQ29udGV4dFN0YWNrU2l6ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoZmxpcEZvcklucykgeworICAgICAgICAgICAgICAgIHNhdmVkRm9ySW5Db250ZXh0U3RhY2sg
PSBtX2ZvckluQ29udGV4dFN0YWNrOworICAgICAgICAgICAgICAgIG1fZm9ySW5Db250ZXh0U3Rh
Y2suc2hyaW5rKGZpbmFsbHlDb250ZXh0LmZvckluQ29udGV4dFN0YWNrU2l6ZSk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoZmxpcExhYmVsU2NvcGVzKSB7CisgICAgICAgICAgICAg
ICAgc2F2ZWRMYWJlbFNjb3BlcyA9IG1fbGFiZWxTY29wZXM7CisgICAgICAgICAgICAgICAgd2hp
bGUgKG1fbGFiZWxTY29wZXMuc2l6ZSgpID4gZmluYWxseUNvbnRleHQubGFiZWxTY29wZXNTaXpl
KQorICAgICAgICAgICAgICAgICAgICBtX2xhYmVsU2NvcGVzLnJlbW92ZUxhc3QoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGludCBzYXZlZEZpbmFsbHlEZXB0aCA9IG1fZmluYWxseURl
cHRoOworICAgICAgICAgICAgbV9maW5hbGx5RGVwdGggPSBmaW5hbGx5Q29udGV4dC5maW5hbGx5
RGVwdGg7CisgICAgICAgICAgICBpbnQgc2F2ZWREeW5hbWljU2NvcGVEZXB0aCA9IG1fZHluYW1p
Y1Njb3BlRGVwdGg7CisgICAgICAgICAgICBtX2R5bmFtaWNTY29wZURlcHRoID0gZmluYWxseUNv
bnRleHQuZHluYW1pY1Njb3BlRGVwdGg7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEVt
aXQgdGhlIGZpbmFsbHkgYmxvY2suCisgICAgICAgICAgICBlbWl0Tm9kZShmaW5hbGx5Q29udGV4
dC5maW5hbGx5QmxvY2spOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBSZXN0b3JlIHRo
ZSBzdGF0ZSBvZiB0aGUgd29ybGQuCisgICAgICAgICAgICBpZiAoZmxpcFNjb3BlcykgeworICAg
ICAgICAgICAgICAgIG1fc2NvcGVDb250ZXh0U3RhY2sgPSBzYXZlZFNjb3BlQ29udGV4dFN0YWNr
OworICAgICAgICAgICAgICAgIHRvcFNjb3BlID0gJm1fc2NvcGVDb250ZXh0U3RhY2tbdG9wU2Nv
cGVJbmRleF07IC8vIGFzc2VydCBpdCdzIHdpdGhpbiBib3VuZHMKKyAgICAgICAgICAgICAgICBi
b3R0b21TY29wZSA9IG1fc2NvcGVDb250ZXh0U3RhY2suYmVnaW4oKSArIGJvdHRvbVNjb3BlSW5k
ZXg7IC8vIGRvbid0IGFzc2VydCwgc2luY2UgaXQgdGhlIGluZGV4IG1pZ2h0IGJlIC0xLgorICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGZsaXBTd2l0Y2hlcykKKyAgICAgICAgICAgICAg
ICBtX3N3aXRjaENvbnRleHRTdGFjayA9IHNhdmVkU3dpdGNoQ29udGV4dFN0YWNrOworICAgICAg
ICAgICAgaWYgKGZsaXBGb3JJbnMpCisgICAgICAgICAgICAgICAgbV9mb3JJbkNvbnRleHRTdGFj
ayA9IHNhdmVkRm9ySW5Db250ZXh0U3RhY2s7CisgICAgICAgICAgICBpZiAoZmxpcExhYmVsU2Nv
cGVzKQorICAgICAgICAgICAgICAgIG1fbGFiZWxTY29wZXMgPSBzYXZlZExhYmVsU2NvcGVzOwor
ICAgICAgICAgICAgbV9maW5hbGx5RGVwdGggPSBzYXZlZEZpbmFsbHlEZXB0aDsKKyAgICAgICAg
ICAgIG1fZHluYW1pY1Njb3BlRGVwdGggPSBzYXZlZER5bmFtaWNTY29wZURlcHRoOworICAgICAg
ICAgICAgCiAgICAgICAgICAgICAtLXRvcFNjb3BlOwogICAgICAgICB9CiAgICAgfQpAQCAtMjIx
NiwyMyArMjI3OCw2IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUaHJvd1JlZmVyZW4K
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShqc1N0cmluZyhnbG9i
YWxEYXRhKCksIG1lc3NhZ2UpKS0+aW5kZXgoKSk7CiB9CiAKLVBhc3NSZWZQdHI8TGFiZWw+IEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVtcFN1YnJvdXRpbmUoUmVnaXN0ZXJJRCogcmV0QWRkckRz
dCwgTGFiZWwqIGZpbmFsbHkpCi17Ci0gICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpOwotCi0gICAgZW1pdE9wY29kZShvcF9qc3IpOwotICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChyZXRBZGRyRHN0LT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmlu
YWxseS0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7Ci0gICAgZW1pdExhYmVs
KG5ld0xhYmVsKCkuZ2V0KCkpOyAvLyBSZWNvcmQgdGhlIGZhY3QgdGhhdCB0aGUgbmV4dCBpbnN0
cnVjdGlvbiBpcyBpbXBsaWNpdGx5IGxhYmVsZWQsIGJlY2F1c2Ugb3Bfc3JldCB3aWxsIHJldHVy
biB0byBpdC4KLSAgICByZXR1cm4gZmluYWxseTsKLX0KLQotdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFN1YnJvdXRpbmVSZXR1cm4oUmVnaXN0ZXJJRCogcmV0QWRkclNyYykKLXsKLSAgICBl
bWl0T3Bjb2RlKG9wX3NyZXQpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChyZXRBZGRyU3Jj
LT5pbmRleCgpKTsKLX0KLQogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1c2hOZXdTY29w
ZShSZWdpc3RlcklEKiBkc3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklE
KiB2YWx1ZSkKIHsKICAgICBDb250cm9sRmxvd0NvbnRleHQgY29udGV4dDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgJKHJldmlzaW9uIDExMjkyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDYW1lcm9uIFp3YXJpY2gg
PGN3endhcmljaEB1d2F0ZXJsb28uY2E+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhLCBT
LkwuCiAgKgpAQCAtNzEsOCArNzEsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAg
IHN0cnVjdCBGaW5hbGx5Q29udGV4dCB7Ci0gICAgICAgIExhYmVsKiBmaW5hbGx5QWRkcjsKLSAg
ICAgICAgUmVnaXN0ZXJJRCogcmV0QWRkckRzdDsKKyAgICAgICAgU3RhdGVtZW50Tm9kZSogZmlu
YWxseUJsb2NrOworICAgICAgICB1bnNpZ25lZCBzY29wZUNvbnRleHRTdGFja1NpemU7CisgICAg
ICAgIHVuc2lnbmVkIHN3aXRjaENvbnRleHRTdGFja1NpemU7CisgICAgICAgIHVuc2lnbmVkIGZv
ckluQ29udGV4dFN0YWNrU2l6ZTsKKyAgICAgICAgdW5zaWduZWQgbGFiZWxTY29wZXNTaXplOwor
ICAgICAgICBpbnQgZmluYWxseURlcHRoOworICAgICAgICBpbnQgZHluYW1pY1Njb3BlRGVwdGg7
CiAgICAgfTsKIAogICAgIHN0cnVjdCBDb250cm9sRmxvd0NvbnRleHQgewpAQCAtNDc5LDkgKzQ4
NCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBQYXNzUmVmUHRyPExhYmVsPiBlbWl0SnVt
cElmTm90RnVuY3Rpb25BcHBseShSZWdpc3RlcklEKiBjb25kLCBMYWJlbCogdGFyZ2V0KTsKICAg
ICAgICAgUGFzc1JlZlB0cjxMYWJlbD4gZW1pdEp1bXBTY29wZXMoTGFiZWwqIHRhcmdldCwgaW50
IHRhcmdldFNjb3BlRGVwdGgpOwogCi0gICAgICAgIFBhc3NSZWZQdHI8TGFiZWw+IGVtaXRKdW1w
U3Vicm91dGluZShSZWdpc3RlcklEKiByZXRBZGRyRHN0LCBMYWJlbCopOwotICAgICAgICB2b2lk
IGVtaXRTdWJyb3V0aW5lUmV0dXJuKFJlZ2lzdGVySUQqIHJldEFkZHJTcmMpOwotCiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRHZXRQcm9wZXJ0eU5hbWVzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogaSwgUmVnaXN0ZXJJRCogc2l6ZSwgTGFiZWwqIGJyZWFr
VGFyZ2V0KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5leHRQcm9wZXJ0eU5hbWUoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBpLCBSZWdpc3RlcklEKiBz
aXplLCBSZWdpc3RlcklEKiBpdGVyLCBMYWJlbCogdGFyZ2V0KTsKIApAQCAtNTA0LDcgKzUwNiw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgc2NvcGVEZXB0aCgpIHsgcmV0dXJuIG1f
ZHluYW1pY1Njb3BlRGVwdGggKyBtX2ZpbmFsbHlEZXB0aDsgfQogICAgICAgICBib29sIGhhc0Zp
bmFsaXNlcigpIHsgcmV0dXJuIG1fZmluYWxseURlcHRoICE9IDA7IH0KIAotICAgICAgICB2b2lk
IHB1c2hGaW5hbGx5Q29udGV4dChMYWJlbCogdGFyZ2V0LCBSZWdpc3RlcklEKiByZXR1cm5BZGRy
RHN0KTsKKyAgICAgICAgdm9pZCBwdXNoRmluYWxseUNvbnRleHQoU3RhdGVtZW50Tm9kZSogZmlu
YWxseUJsb2NrKTsKICAgICAgICAgdm9pZCBwb3BGaW5hbGx5Q29udGV4dCgpOwogCiAgICAgICAg
IHZvaWQgcHVzaE9wdGltaXNlZEZvckluKFJlZ2lzdGVySUQqIGV4cGVjdGVkQmFzZSwgUmVnaXN0
ZXJJRCogaXRlciwgUmVnaXN0ZXJJRCogaW5kZXgsIFJlZ2lzdGVySUQqIHByb3BlcnR5UmVnaXN0
ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAxMTI5MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyAr
MSw3IEBACiAvKgogKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDIgSGFycmkgUG9ydGVuIChwb3J0
ZW5Aa2RlLm9yZykKICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3Qu
Y29tKQotKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyogIENvcHlyaWdodCAoQykg
MjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQ2FtZXJvbiBad2Fy
aWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQogKiAgQ29weXJpZ2h0IChDKSAyMDA3IE1ha3Mg
T3Jsb3ZpY2gKICogIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQu
b3JnPgpAQCAtMTcyNyw3ICsxNzI3LDcgQEAgUmVnaXN0ZXJJRCogUmV0dXJuTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5SZWdpc3RlcjsKICAgICBp
ZiAoZ2VuZXJhdG9yLnNjb3BlRGVwdGgoKSkgewogICAgICAgICBSZWZQdHI8TGFiZWw+IGwwID0g
Z2VuZXJhdG9yLm5ld0xhYmVsKCk7Ci0gICAgICAgIGlmIChnZW5lcmF0b3IuaGFzRmluYWxpc2Vy
KCkgJiYgIXIwLT5pc1RlbXBvcmFyeSgpKSB7CisgICAgICAgIGlmIChnZW5lcmF0b3IuaGFzRmlu
YWxpc2VyKCkpIHsKICAgICAgICAgICAgIHJldHVyblJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRN
b3ZlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgcjApOwogICAgICAgICAgICAgcjAgPSByZXR1
cm5SZWdpc3Rlci5nZXQoKTsKICAgICAgICAgfQpAQCAtMTk1NywxMyArMTk1Nyw4IEBAIFJlZ2lz
dGVySUQqIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY28KICAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOwog
CiAgICAgUmVmUHRyPExhYmVsPiB0cnlTdGFydExhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7
Ci0gICAgUmVmUHRyPExhYmVsPiBmaW5hbGx5U3RhcnQ7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGZpbmFsbHlSZXR1cm5BZGRyOwotICAgIGlmIChtX2ZpbmFsbHlCbG9jaykgewotICAgICAgICBm
aW5hbGx5U3RhcnQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKLSAgICAgICAgZmluYWxseVJldHVy
bkFkZHIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgIGdlbmVyYXRvci5wdXNo
RmluYWxseUNvbnRleHQoZmluYWxseVN0YXJ0LmdldCgpLCBmaW5hbGx5UmV0dXJuQWRkci5nZXQo
KSk7Ci0gICAgfQorICAgIGlmIChtX2ZpbmFsbHlCbG9jaykKKyAgICAgICAgZ2VuZXJhdG9yLnB1
c2hGaW5hbGx5Q29udGV4dChtX2ZpbmFsbHlCbG9jayk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExh
YmVsKHRyeVN0YXJ0TGFiZWwuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1f
dHJ5QmxvY2spOwpAQCAtMTk4NSwyNyArMTk4MCwxOCBAQCBSZWdpc3RlcklEKiBUcnlOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvCiAKICAgICBpZiAobV9maW5hbGx5QmxvY2spIHsKICAgICAgICAg
Z2VuZXJhdG9yLnBvcEZpbmFsbHlDb250ZXh0KCk7Ci0gICAgICAgIC8vIHRoZXJlIG1heSBiZSBp
bXBvcnRhbnQgcmVnaXN0ZXJzIGxpdmUgYXQgdGhlIHRpbWUgd2UganVtcAotICAgICAgICAvLyB0
byBhIGZpbmFsbHkgYmxvY2sgKHN1Y2ggYXMgZm9yIGEgcmV0dXJuIG9yIHRocm93KSBzbyB3ZQot
ICAgICAgICAvLyByZWYgdGhlIGhpZ2hlc3QgcmVnaXN0ZXIgZXZlciB1c2VkIGFzIGEgY29uc2Vy
dmF0aXZlCi0gICAgICAgIC8vIGFwcHJvYWNoIHRvIG5vdCBjbG9iYmVyaW5nIGFueXRoaW5nIGlt
cG9ydGFudAotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaGlnaGVzdFVzZWRSZWdpc3RlciA9
IGdlbmVyYXRvci5oaWdoZXN0VXNlZFJlZ2lzdGVyKCk7CisKICAgICAgICAgUmVmUHRyPExhYmVs
PiBmaW5hbGx5RW5kTGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAotICAgICAgICAvLyBO
b3JtYWwgcGF0aDogaW52b2tlIHRoZSBmaW5hbGx5IGJsb2NrLCB0aGVuIGp1bXAgb3ZlciBpdC4K
LSAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wU3Vicm91dGluZShmaW5hbGx5UmV0dXJuQWRkci5n
ZXQoKSwgZmluYWxseVN0YXJ0LmdldCgpKTsKKyAgICAgICAgLy8gTm9ybWFsIHBhdGg6IHJ1biB0
aGUgZmluYWxseSBjb2RlLCBhbmQganVtcCB0byB0aGUgZW5kLgorICAgICAgICBnZW5lcmF0b3Iu
ZW1pdE5vZGUoZHN0LCBtX2ZpbmFsbHlCbG9jayk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVt
cChmaW5hbGx5RW5kTGFiZWwuZ2V0KCkpOwogCiAgICAgICAgIC8vIFVuY2F1Z2h0IGV4Y2VwdGlv
biBwYXRoOiBpbnZva2UgdGhlIGZpbmFsbHkgYmxvY2ssIHRoZW4gcmUtdGhyb3cgdGhlIGV4Y2Vw
dGlvbi4KICAgICAgICAgUmVmUHRyPExhYmVsPiBoZXJlID0gZ2VuZXJhdG9yLmVtaXRMYWJlbChn
ZW5lcmF0b3IubmV3TGFiZWwoKS5nZXQoKSk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0
ZW1wRXhjZXB0aW9uUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW1pdENhdGNoKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgdHJ5U3RhcnRMYWJlbC5nZXQoKSwgaGVyZS5nZXQoKSk7Ci0gICAgICAgIGdl
bmVyYXRvci5lbWl0SnVtcFN1YnJvdXRpbmUoZmluYWxseVJldHVybkFkZHIuZ2V0KCksIGZpbmFs
bHlTdGFydC5nZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3codGVtcEV4Y2VwdGlv
blJlZ2lzdGVyLmdldCgpKTsKLQotICAgICAgICAvLyBUaGUgZmluYWxseSBibG9jay4KLSAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChmaW5hbGx5U3RhcnQuZ2V0KCkpOwogICAgICAgICBnZW5l
cmF0b3IuZW1pdE5vZGUoZHN0LCBtX2ZpbmFsbHlCbG9jayk7Ci0gICAgICAgIGdlbmVyYXRvci5l
bWl0U3Vicm91dGluZVJldHVybihmaW5hbGx5UmV0dXJuQWRkci5nZXQoKSk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0VGhyb3codGVtcEV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpKTsKIAogICAgICAg
ICBnZW5lcmF0b3IuZW1pdExhYmVsKGZpbmFsbHlFbmRMYWJlbC5nZXQoKSk7CiAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCShyZXZpc2lvbiAxMTI5MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTg2LDMwICs1MTg2LDYgQEAg
c2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgdlBDKys7CiAgICAgICAgIE5FWFRfSU5TVFJV
Q1RJT04oKTsKICAgICB9Ci0gICAgREVGSU5FX09QQ09ERShvcF9qc3IpIHsKLSAgICAgICAgLyog
anNyIHJldEFkZHJEc3QocikgdGFyZ2V0KG9mZnNldCkKLQotICAgICAgICAgICBQbGFjZXMgdGhl
IGFkZHJlc3Mgb2YgdGhlIG5leHQgaW5zdHJ1Y3Rpb24gaW50byB0aGUgcmV0QWRkckRzdAotICAg
ICAgICAgICByZWdpc3RlciBhbmQganVtcHMgdG8gb2Zmc2V0IHRhcmdldCBmcm9tIHRoZSBjdXJy
ZW50IGluc3RydWN0aW9uLgotICAgICAgICAqLwotICAgICAgICBpbnQgcmV0QWRkckRzdCA9IHZQ
Q1sxXS51Lm9wZXJhbmQ7Ci0gICAgICAgIGludCB0YXJnZXQgPSB2UENbMl0udS5vcGVyYW5kOwot
ICAgICAgICBjYWxsRnJhbWUtPnIocmV0QWRkckRzdCkgPSB2UEMgKyBPUENPREVfTEVOR1RIKG9w
X2pzcik7Ci0KLSAgICAgICAgdlBDICs9IHRhcmdldDsKLSAgICAgICAgTkVYVF9JTlNUUlVDVElP
TigpOwotICAgIH0KLSAgICBERUZJTkVfT1BDT0RFKG9wX3NyZXQpIHsKLSAgICAgICAgLyogc3Jl
dCByZXRBZGRyU3JjKHIpCi0KLSAgICAgICAgIEp1bXBzIHRvIHRoZSBhZGRyZXNzIHN0b3JlZCBp
biB0aGUgcmV0QWRkclNyYyByZWdpc3Rlci4gVGhpcwotICAgICAgICAgZGlmZmVycyBmcm9tIG9w
X2ptcCBiZWNhdXNlIHRoZSB0YXJnZXQgYWRkcmVzcyBpcyBzdG9yZWQgaW4gYQotICAgICAgICAg
cmVnaXN0ZXIsIG5vdCBhcyBhbiBpbW1lZGlhdGUuCi0gICAgICAgICovCi0gICAgICAgIGludCBy
ZXRBZGRyU3JjID0gdlBDWzFdLnUub3BlcmFuZDsKLSAgICAgICAgdlBDID0gY2FsbEZyYW1lLT5y
KHJldEFkZHJTcmMpLnZQQygpOwotICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7Ci0gICAgfQog
ICAgIERFRklORV9PUENPREUob3BfZGVidWcpIHsKICAgICAgICAgLyogZGVidWcgZGVidWdIb29r
SUQobikgZmlyc3RMaW5lKG4pIGxhc3RMaW5lKG4pCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAJKHJldmlzaW9uIDExMjkyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgzLDcgKzI4Myw2IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2pubGVzc2VxKQogICAg
ICAgICBERUZJTkVfT1Aob3Bfam5ncmVhdGVyKQogICAgICAgICBERUZJTkVfT1Aob3Bfam5ncmVh
dGVyZXEpCi0gICAgICAgIERFRklORV9PUChvcF9qc3IpCiAgICAgICAgIERFRklORV9PUChvcF9q
dHJ1ZSkKICAgICAgICAgREVGSU5FX09QKG9wX2xvb3ApCiAgICAgICAgIERFRklORV9PUChvcF9s
b29wX2hpbnQpCkBAIC0zNDAsNyArMzM5LDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcmV0X29iamVjdF9vcl90aGlzKQogICAgICAg
ICBERUZJTkVfT1Aob3BfcnNoaWZ0KQogICAgICAgICBERUZJTkVfT1Aob3BfdXJzaGlmdCkKLSAg
ICAgICAgREVGSU5FX09QKG9wX3NyZXQpCiAgICAgICAgIERFRklORV9PUChvcF9zdHJjYXQpCiAg
ICAgICAgIERFRklORV9PUChvcF9zdHJpY3RlcSkKICAgICAgICAgREVGSU5FX09QKG9wX3N1YikK
QEAgLTY2NSwxMCArNjYzLDYgQEAgSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIq
IGZ1bgogICAgICAgICAgICAgbV9jb2RlQmxvY2stPmNhbGxSZXR1cm5JbmRleFZlY3RvcigpLmFw
cGVuZChDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldChwYXRjaEJ1ZmZlci5yZXR1cm5B
ZGRyZXNzT2Zmc2V0KGl0ZXItPmZyb20pLCBpdGVyLT5ieXRlY29kZU9mZnNldCkpOwogICAgIH0K
IAotICAgIC8vIExpbmsgYWJzb2x1dGUgYWRkcmVzc2VzIGZvciBqc3IKLSAgICBmb3IgKFZlY3Rv
cjxKU1JJbmZvPjo6aXRlcmF0b3IgaXRlciA9IG1fanNyU2l0ZXMuYmVnaW4oKTsgaXRlciAhPSBt
X2pzclNpdGVzLmVuZCgpOyArK2l0ZXIpCi0gICAgICAgIHBhdGNoQnVmZmVyLnBhdGNoKGl0ZXIt
PnN0b3JlTG9jYXRpb24sIHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YoaXRlci0+dGFyZ2V0KS5leGVj
dXRhYmxlQWRkcmVzcygpKTsKLQogICAgIG1fY29kZUJsb2NrLT5zZXROdW1iZXJPZlN0cnVjdHVy
ZVN0dWJJbmZvcyhtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLnNpemUoKSk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8u
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIGluZm8gPSBtX2NvZGVC
bG9jay0+c3RydWN0dXJlU3R1YkluZm8oaSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJ
KHJldmlzaW9uIDExMjkyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4MCwxNyArMjgwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyB2b2lkIGxpbmtGb3IoSlNGdW5jdGlvbiogY2FsbGVlLCBDb2RlQmxvY2sqIGNhbGxl
ckNvZGVCbG9jaywgQ29kZUJsb2NrKiBjYWxsZWVDb2RlQmxvY2ssIENvZGVQdHIsIENhbGxMaW5r
SW5mbyosIEpTR2xvYmFsRGF0YSosIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgc3RydWN0IEpTUkluZm8gewotICAgICAgICAgICAgRGF0YUxhYmVsUHRy
IHN0b3JlTG9jYXRpb247Ci0gICAgICAgICAgICBMYWJlbCB0YXJnZXQ7Ci0KLSAgICAgICAgICAg
IEpTUkluZm8oRGF0YUxhYmVsUHRyIHN0b3JlTG9jYXRpb24sIExhYmVsIHRhcmdldExvY2F0aW9u
KQotICAgICAgICAgICAgICAgIDogc3RvcmVMb2NhdGlvbihzdG9yZUxvY2F0aW9uKQotICAgICAg
ICAgICAgICAgICwgdGFyZ2V0KHRhcmdldExvY2F0aW9uKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgfQotICAgICAgICB9OwotCiAgICAgICAgIEpJVChKU0dsb2JhbERhdGEqLCBDb2RlQmxv
Y2sqID0gMCk7CiAKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZU1haW5QYXNzKCk7CkBAIC04
MjksNyArODE4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9qbmxl
c3NlcShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfam5ncmVhdGVyKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9qbmdyZWF0ZXJlcShJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfanNyKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9qdHJ1ZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbG9vcChJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbG9vcF9oaW50KEluc3RydWN0aW9u
Kik7CkBAIC04ODMsNyArODcxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9yZXQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3JldF9vYmplY3Rf
b3JfdGhpcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcnNoaWZ0KEluc3Ry
dWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zcmV0KEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9zdHJjYXQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX3N0cmljdGVxKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9zdWIoSW5z
dHJ1Y3Rpb24qKTsKQEAgLTEwNjYsNyArMTA1Myw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBWZWN0b3I8SnVtcFRhYmxlPiBtX2ptcFRhYmxlOwogCiAgICAgICAgIHVuc2lnbmVkIG1fYnl0
ZWNvZGVPZmZzZXQ7Ci0gICAgICAgIFZlY3RvcjxKU1JJbmZvPiBtX2pzclNpdGVzOwogICAgICAg
ICBWZWN0b3I8U2xvd0Nhc2VFbnRyeT4gbV9zbG93Q2FzZXM7CiAgICAgICAgIFZlY3RvcjxTd2l0
Y2hSZWNvcmQ+IG1fc3dpdGNoZXM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDExMjkyNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIx
LDIwICs5MjEsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX3B0cihJbnN0cnVjdGlvbiogCiAg
ICAgYWRkSnVtcChicmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tUHRyKHB0cikp
LCB0YXJnZXQpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9qc3IoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKLXsKLSAgICBpbnQgcmV0QWRkckRzdCA9IGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQ7Ci0gICAgaW50IHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQ7Ci0gICAgRGF0YUxhYmVsUHRyIHN0b3JlTG9jYXRpb24gPSBzdG9yZVB0cldpdGhQ
YXRjaChUcnVzdGVkSW1tUHRyKDApLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2Yo
UmVnaXN0ZXIpICogcmV0QWRkckRzdCkpOwotICAgIGFkZEp1bXAoanVtcCgpLCB0YXJnZXQpOwot
ICAgIG1fanNyU2l0ZXMuYXBwZW5kKEpTUkluZm8oc3RvcmVMb2NhdGlvbiwgbGFiZWwoKSkpOwot
fQotCi12b2lkIEpJVDo6ZW1pdF9vcF9zcmV0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCi17Ci0gICAganVtcChBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0
ZXIpICogY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwotfQotCiB2b2lkIEpJVDo6
ZW1pdF9vcF9lcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIHVuc2ln
bmVkIGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDExMjkyNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc0MiwyMiArNzQyLDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9wdHIoSW5zdHJ1Y3Rpb24q
IAogICAgIGFkZEp1bXAoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbVB0cihK
U1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShwdHIpKSkpLCB0YXJnZXQpOyAgICAgICAgICAgIAogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9qc3IoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
LXsKLSAgICBpbnQgcmV0QWRkckRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7
Ci0gICAgaW50IHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAg
RGF0YUxhYmVsUHRyIHN0b3JlTG9jYXRpb24gPSBzdG9yZVB0cldpdGhQYXRjaChUcnVzdGVkSW1t
UHRyKDApLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIpICogcmV0
QWRkckRzdCkpOwotICAgIGFkZEp1bXAoanVtcCgpLCB0YXJnZXQpOwotICAgIG1fanNyU2l0ZXMu
YXBwZW5kKEpTUkluZm8oc3RvcmVMb2NhdGlvbiwgbGFiZWwoKSkpOwotICAgIGtpbGxMYXN0UmVz
dWx0UmVnaXN0ZXIoKTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRfb3Bfc3JldChJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQotewotICAgIGp1bXAoQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rl
ciwgc2l6ZW9mKFJlZ2lzdGVyKSAqIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsK
LSAgICBraWxsTGFzdFJlc3VsdFJlZ2lzdGVyKCk7Ci19Ci0KIHZvaWQgSklUOjplbWl0X29wX2Vx
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcnMoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDAsIGN1cnJlbnRJ
bnN0cnVjdGlvblszXS51Lm9wZXJhbmQsIHJlZ1QxKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShy
ZXZpc2lvbiAxMTI5MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTU3MSwyMSArMTU3MSw2IEBA
IF9sbGludF9vcF9jYXRjaDoKICAgICBkaXNwYXRjaCgyKQogCiAKLV9sbGludF9vcF9qc3I6Ci0g
ICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDRbUENdLCB0MAotICAgIGFkZGkgMyAqIDQs
IFBDLCB0MQotICAgIHN0b3JlaSB0MSwgW2NmciwgdDAsIDhdCi0gICAgZGlzcGF0Y2hCcmFuY2go
OFtQQ10pCi0KLQotX2xsaW50X29wX3NyZXQ6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxv
YWRpIDRbUENdLCB0MAotICAgIGxvYWRwIFtjZnIsIHQwLCA4XSwgUEMKLSAgICBkaXNwYXRjaCgw
KQotCi0KIF9sbGludF9vcF9lbmQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNoZWNrU3dp
dGNoVG9KSVRGb3JFcGlsb2d1ZSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTEyOTI2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTE0MjksMjEgKzE0MjksNiBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAg
ICAgZGlzcGF0Y2goMikKIAogCi1fbGxpbnRfb3BfanNyOgotICAgIHRyYWNlRXhlY3V0aW9uKCkK
LSAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MAotICAgIGFkZGkgMywgUEMsIHQxCi0gICAgc3Rv
cmVpIHQxLCBbY2ZyLCB0MCwgOF0KLSAgICBkaXNwYXRjaEludCgxNltQQiwgUEMsIDhdKQotCi0K
LV9sbGludF9vcF9zcmV0OgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBsb2FkaXMgOFtQQiwg
UEMsIDhdLCB0MAotICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwgUEMKLSAgICBkaXNwYXRjaCgwKQot
Ci0KIF9sbGludF9vcF9lbmQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNoZWNrU3dpdGNo
VG9KSVRGb3JFcGlsb2d1ZSgpCg==
</data>
<flag name="review"
          id="140014"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>