<?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>144186</bug_id>
          
          <creation_ts>2015-04-24 23:07:02 -0700</creation_ts>
          <short_desc>Rationalize DFG DCE handling of nodes that perform checks that propagate through AI</short_desc>
          <delta_ts>2015-04-27 11:49: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="Filip Pizlo">fpizlo</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1088488</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-24 23:07:02 -0700</bug_when>
    <thetext>If I do ArithAdd(Int32Use, Int32Use, CheckOverflow) then AI will prove that this returns Int32. We may later perform code simplifications based on the proof that this is Int32, and we may kill all DFG users of this ArithAdd. Then we may prove that there is no exit site at which the ArithAdd is live. This is sufficient to then kill the ArithAdd - except that we still need the overflow check!

Currently we mishandle this:

- In places where we want the overflow check we need to use MustGenerate(@ArithAdd) as a hack to keep it alive. That&apos;s dirty and it&apos;s just indicative of a deeper issue.

- Our MovHint removal doesn&apos;t do Phantom canonicalization which essentially makes it powerless. This was sort of hiding the bug.

- Nodes that have checks that AI leverages should always be NodeMustGenerate. You can&apos;t kill something that you are relying on for subsequent simplifications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088489</commentid>
    <comment_count>1</comment_count>
      <attachid>251613</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-24 23:12:59 -0700</bug_when>
    <thetext>Created attachment 251613
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088492</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-24 23:13:56 -0700</bug_when>
    <thetext>*** Bug 144148 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089078</commentid>
    <comment_count>3</comment_count>
      <attachid>251613</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-27 10:58:33 -0700</bug_when>
    <thetext>Comment on attachment 251613
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089113</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-27 11:49:42 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/183401</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251613</attachid>
            <date>2015-04-24 23:12:59 -0700</date>
            <delta_ts>2015-04-27 10:58:33 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>25159</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMzA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBA
CisyMDE1LTA0LTI0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmF0aW9uYWxpemUgREZHIERDRSBoYW5kbGluZyBvZiBub2RlcyB0aGF0IHBlcmZvcm0gY2hlY2tz
IHRoYXQgcHJvcGFnYXRlIHRocm91Z2ggQUkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NDE4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgSWYgSSBkbyBBcml0aEFkZChJbnQzMlVzZSwgSW50
MzJVc2UsIENoZWNrT3ZlcmZsb3cpIHRoZW4gQUkgd2lsbCBwcm92ZSB0aGF0IHRoaXMgcmV0dXJu
cworICAgICAgICBJbnQzMi4gV2UgbWF5IGxhdGVyIHBlcmZvcm0gY29kZSBzaW1wbGlmaWNhdGlv
bnMgYmFzZWQgb24gdGhlIHByb29mIHRoYXQgdGhpcyBpcyBJbnQzMiwgYW5kCisgICAgICAgIHdl
IG1heSBraWxsIGFsbCBERkcgdXNlcnMgb2YgdGhpcyBBcml0aEFkZC4gVGhlbiB3ZSBtYXkgcHJv
dmUgdGhhdCB0aGVyZSBpcyBubyBleGl0IHNpdGUgYXQKKyAgICAgICAgd2hpY2ggdGhlIEFyaXRo
QWRkIGlzIGxpdmUuIFRoaXMgc2VlbXMgbGlrZSBpdCBpcyBzdWZmaWNpZW50IHRvIHRoZW4ga2ls
bCB0aGUgQXJpdGhBZGQsCisgICAgICAgIGV4Y2VwdCB0aGF0IHdlIHN0aWxsIG5lZWQgdGhlIG92
ZXJmbG93IGNoZWNrIQorCisgICAgICAgIFByZXZpb3VzbHkgd2UgbWlzaGFuZGxlZCB0aGlzOgor
CisgICAgICAgIC0gSW4gcGxhY2VzIHdoZXJlIHdlIHdhbnQgdGhlIG92ZXJmbG93IGNoZWNrIHdl
IG5lZWQgdG8gdXNlIE11c3RHZW5lcmF0ZShAQXJpdGhBZGQpIGFzIGEgaGFjaworICAgICAgICAg
IHRvIGtlZXAgaXQgYWxpdmUuIFRoYXQncyBkaXJ0eSBhbmQgaXQncyBqdXN0IGluZGljYXRpdmUg
b2YgYSBkZWVwZXIgaXNzdWUuCisKKyAgICAgICAgLSBPdXIgTW92SGludCByZW1vdmFsIGRvZXNu
J3QgZG8gUGhhbnRvbSBjYW5vbmljYWxpemF0aW9uIHdoaWNoIGVzc2VudGlhbGx5IG1ha2VzIGl0
CisgICAgICAgICAgcG93ZXJsZXNzLiBUaGlzIHdhcyBzb3J0IG9mIGhpZGluZyB0aGUgYnVnLgor
CisgICAgICAgIC0gTm9kZXMgdGhhdCBoYXZlIGNoZWNrcyB0aGF0IEFJIGxldmVyYWdlcyBzaG91
bGQgYWx3YXlzIGJlIE5vZGVNdXN0R2VuZXJhdGUuIFlvdSBjYW4ndCBraWxsCisgICAgICAgICAg
c29tZXRoaW5nIHRoYXQgeW91IGFyZSByZWx5aW5nIG9uIGZvciBzdWJzZXF1ZW50IHNpbXBsaWZp
Y2F0aW9ucy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgZml4ZXMgTW92SGludCByZW1vdmFsIHRv
IGFsc28gY2Fub25pY2FsaXplIFBoYW50b21zLiBUaGlzIGFsc28gYWRkcyBNb2RlTXVzdEdlbmVy
YXRlIHRvCisgICAgICAgIG5vZGVzIHRoYXQgbWF5IHBlcmZvcm0gY2hlY2tzIHRoYXQgYXJlIHVz
ZWQgYnkgQUkgdG8gZ3VhcmFudGVlIHRoZSByZXN1bHQgdHlwZS4gQXMgYSByZXN1bHQsCisgICAg
ICAgIHdlIG5vIGxvbmdlciBuZWVkIHRoZSB3ZWlyZCBNdXN0R2VuZXJhdGUgbm9kZS4KKworICAg
ICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlND
OjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJl
cml6ZSk6CisgICAgICAgICogZGZnL0RGR0RDRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpEQ0VQaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OnRyeVRvUmVsYXhSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogZGZn
L0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpJ
bnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZTo6aGFuZGxlQmxvY2spOgorICAgICAgICAoSlNDOjpE
Rkc6OkludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlOjppbnNlcnRNdXN0QWRkKTogRGVsZXRlZC4K
KyAgICAgICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6bWF5RXhp
dCk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjp3
aWxsSGF2ZUNvZGVHZW5Pck9TUik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAg
ICAgICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6Ok9iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2U6OmhhbmRsZU5vZGUpOgorICAg
ICAgICAqIGRmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlOjpydW4pOgorICAgICAgICAq
IGRmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQaGFu
dG9tUmVtb3ZhbFBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKToKKyAgICAgICAgKiBkZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBy
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdT
YWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGRmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVy
ZUNoZWNrcyk6CisgICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRl
bnRpZnlSZWR1bmRhbnRBcnJheUNoZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhcmFyZ3NGb3J3
YXJkaW5nUGhhc2UuY3BwOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1Rv
TExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVOb2Rl
KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZm9sZC1iYXNlZC1vbi1pbnQzMi1wcm9vZi1tdWwt
YnJhbmNoLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogdGVzdHMvc3RyZXNz
L2ZvbGQtYmFzZWQtb24taW50MzItcHJvb2YtbXVsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2ZvbGQtYmFzZWQtb24taW50MzItcHJvb2Ytb3ItemVy
by5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9mb2xk
LWJhc2VkLW9uLWludDMyLXByb29mLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisKIDIwMTUt
MDQtMjQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBDUkFTSCBp
biBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE4MzMwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjA2
OSw3ICsyMDY5LDYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgIGNhc2UgUHJvZmlsZVR5cGU6CiAgICAgY2FzZSBQcm9maWxlQ29udHJvbEZsb3c6CiAgICAg
Y2FzZSBQaGFudG9tOgotICAgIGNhc2UgTXVzdEdlbmVyYXRlOgogICAgIGNhc2UgQ291bnRFeGVj
dXRpb246CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVw
QXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE4MzMwNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNiBAQCBwcml2YXRlOgogCiAgICAgICAg
ICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2s6Ci0gICAg
ICAgICAgICAgICAgY2FzZSBNdXN0R2VuZXJhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBNb3ZI
aW50OgogICAgICAgICAgICAgICAgIGNhc2UgUHV0SGludDoKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAko
cmV2aXNpb24gMTgzMzA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNiBAQCB2b2lkIGNsb2JiZXJpemUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIAogICAgIGNhc2UgSWRlbnRpdHk6CiAg
ICAgY2FzZSBQaGFudG9tOgotICAgIGNhc2UgTXVzdEdlbmVyYXRlOgogICAgIGNhc2UgQ2hlY2s6
CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJl
SW1tZWRpYXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5j
cHAJKHJldmlzaW9uIDE4MzMwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENF
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMpOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICAvLyBKdXN0IGRvIGEgYmFzaWMgTXVzdEdlbmVyYXRlL1BoYW50b20v
Q2hlY2sgY2xlYW4tdXAuCisgICAgICAgIC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNr
IGNsZWFuLXVwLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgu
bnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJs
b2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgICAgIGlmICghYmxvY2sp
CkBAIC04Miw3ICs4Miw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0g
YmxvY2stPmF0KHNvdXJjZUluZGV4KyspOwogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+
b3AoKSkgewogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2s6Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBNdXN0R2VuZXJhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCShyZXZpc2lvbiAxODMzMDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDYgQEAgYm9vbCBkb2VzR0Mo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTW92SGludDoKICAgICBjYXNlIFpv
bWJpZUhpbnQ6CiAgICAgY2FzZSBQaGFudG9tOgotICAgIGNhc2UgTXVzdEdlbmVyYXRlOgogICAg
IGNhc2UgVXBzaWxvbjoKICAgICBjYXNlIFBoaToKICAgICBjYXNlIEZsdXNoOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxODMz
MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDI3LDcgKzEwMjcsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENv
bnN0YW50U3RvcmFnZVBvaW50ZXI6CiAgICAgICAgIGNhc2UgRG91YmxlQXNJbnQzMjoKICAgICAg
ICAgY2FzZSBWYWx1ZVRvSW50MzI6Ci0gICAgICAgIGNhc2UgTXVzdEdlbmVyYXRlOiAvLyBNdXN0
R2VuZXJhdGUgd291bGQgYmUgdHJpdmlhbCB0byBoYW5kbGUgYnV0IGFueXdheSB3ZSBhc3NlcnQg
dGhhdCB3ZSB3b24ndCBzZWUgaXQgaGVyZSB5ZXQuCiAgICAgICAgIGNhc2UgRG91YmxlUmVwOgog
ICAgICAgICBjYXNlIFZhbHVlUmVwOgogICAgICAgICBjYXNlIEludDUyUmVwOgpAQCAtMjAxMiw3
ICsyMDExLDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNl
IFBoYW50b206CiAgICAgICAgIGNhc2UgQ2hlY2s6Ci0gICAgICAgIGNhc2UgTXVzdEdlbmVyYXRl
OgogICAgICAgICAgICAgREZHX05PREVfRE9fVE9fQ0hJTERSRU4obV9ncmFwaCwgbV9jdXJyZW50
Tm9kZSwgZml4RWRnZVJlcHJlc2VudGF0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0Nv
bWJpbmluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTgzMzA2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiwxMiArMjM2LDEyIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgc3dpdGNoIChkYXRhLm1fa2V5Lm1fa2luZCkgewogICAgICAgICAgICAgICAgIGNh
c2UgQWRkaXRpb246IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJhbmdlLm1fbWluQm91bmQg
PCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRNdXN0QWRkKAorICAgICAgICAg
ICAgICAgICAgICAgICAgaW5zZXJ0QWRkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v
ZGVJbmRleCwgTm9kZU9yaWdpbihyYW5nZS5tX21pbk9yaWdpbiwgbm9kZS0+b3JpZ2luLmZvckV4
aXQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEubV9rZXkubV9zb3VyY2UsIHJh
bmdlLm1fbWluQm91bmQpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChyYW5nZS5tX21heEJvdW5kID4gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
aW5zZXJ0TXVzdEFkZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydEFkZCgKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXgsIE5vZGVPcmlnaW4ocmFuZ2UubV9tYXhP
cmlnaW4sIG5vZGUtPm9yaWdpbi5mb3JFeGl0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhLm1fa2V5Lm1fc291cmNlLCByYW5nZS5tX21heEJvdW5kKTsKICAgICAgICAgICAgICAg
ICAgICAgfQpAQCAtMzg1LDE1ICszODUsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG5v
ZGVJbmRleCwgb3JpZ2luLCBqc051bWJlcihhZGRlbmQpLCBzb3VyY2UudXNlS2luZCgpKSk7CiAg
ICAgfQogICAgIAotICAgIE5vZGUqIGluc2VydE11c3RBZGQoCi0gICAgICAgIHVuc2lnbmVkIG5v
ZGVJbmRleCwgTm9kZU9yaWdpbiBvcmlnaW4sIEVkZ2Ugc291cmNlLCBpbnQzMl90IGFkZGVuZCkK
LSAgICB7Ci0gICAgICAgIE5vZGUqIHJlc3VsdCA9IGluc2VydEFkZChub2RlSW5kZXgsIG9yaWdp
biwgc291cmNlLCBhZGRlbmQpOwotICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAot
ICAgICAgICAgICAgbm9kZUluZGV4LCBTcGVjTm9uZSwgTXVzdEdlbmVyYXRlLCBvcmlnaW4sIHJl
c3VsdC0+ZGVmYXVsdEVkZ2UoKSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAg
IAogICAgIHR5cGVkZWYgc3RkOjp1bm9yZGVyZWRfbWFwPFJhbmdlS2V5LCBSYW5nZSwgSGFzaE1l
dGhvZDxSYW5nZUtleT4+IFJhbmdlTWFwOwogICAgIFJhbmdlTWFwIG1fbWFwOwogICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCShyZXZpc2lvbiAxODMz
MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03MSw3ICs3MSw2IEBAIGJvb2wgbWF5RXhpdChHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBGbHVzaDoKICAgICBjYXNlIFBoYW50b206CiAgICAgY2FzZSBDaGVj
azoKLSAgICBjYXNlIE11c3RHZW5lcmF0ZToKICAgICBjYXNlIEdldExvY2FsOgogICAgIGNhc2Ug
TG9vcEhpbnQ6CiAgICAgY2FzZSBQaGk6CkBAIC05MSw2ICs5MCw5IEBAIGJvb2wgbWF5RXhpdChH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNo
OgogICAgIGNhc2UgVW5yZWFjaGFibGU6CisgICAgY2FzZSBEb3VibGVSZXA6CisgICAgY2FzZSBJ
bnQ1MlJlcDoKKyAgICBjYXNlIFZhbHVlUmVwOgogICAgICAgICBicmVhazsKICAgICAgICAgCiAg
ICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lv
biAxODMzMDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU1NCw3ICsxNTU0LDYgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNl
IFpvbWJpZUhpbnQ6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBQaGFu
dG9tOgotICAgICAgICBjYXNlIE11c3RHZW5lcmF0ZToKICAgICAgICAgICAgIHJldHVybiBjaGls
ZDEoKS51c2VLaW5kVW5jaGVja2VkKCkgIT0gVW50eXBlZFVzZSB8fCBjaGlsZDIoKS51c2VLaW5k
VW5jaGVja2VkKCkgIT0gVW50eXBlZFVzZSB8fCBjaGlsZDMoKS51c2VLaW5kVW5jaGVja2VkKCkg
IT0gVW50eXBlZFVzZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBzaG91
bGRHZW5lcmF0ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAkocmV2aXNpb24gMTgzMzA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw2IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhNb3ZIaW50LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oWm9tYmllSGludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFBoYW50
b20sIE5vZGVNdXN0R2VuZXJhdGUpIFwKLSAgICBtYWNybyhNdXN0R2VuZXJhdGUsIE5vZGVNdXN0
R2VuZXJhdGUpIC8qIFV0aWxpdHkgbm9kZSBmb3IgbWFraW5nIHNvZW0gbm90LXVzdWFsbHktTm9k
ZU11c3RHZW5lcmF0ZSBub2RlIGJlY29tZSBsaWtlIE5vZGVNdXN0R2VuZXJhdGUuICovIFwKICAg
ICBtYWNybyhDaGVjaywgTm9kZU11c3RHZW5lcmF0ZSkgLyogVXNlZCBpZiB3ZSB3YW50IGp1c3Qg
YSB0eXBlIGNoZWNrIGJ1dCBub3QgbGl2ZW5lc3MuIE5vbi1jaGVja2luZyB1c2VzIHdpbGwgYmUg
cmVtb3ZlZC4gKi9cCiAgICAgbWFjcm8oVXBzaWxvbiwgTm9kZVJlbGV2YW50VG9PU1IpIFwKICAg
ICBtYWNybyhQaGksIE5vZGVSZWxldmFudFRvT1NSKSBcCkBAIC0xMzAsMTUgKzEyOSwyMSBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogQm9ndXMgdHlwZSBhc3NlcnRp
bmcgbm9kZS4gVXNlZnVsIGZvciB0ZXN0aW5nLCBkaXNhcHBlYXJzIGR1cmluZyBGaXh1cC4gKi9c
CiAgICAgbWFjcm8oRmlhdEludDUyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCi0gICAgLyogTm9k
ZXMgZm9yIGFyaXRobWV0aWMgb3BlcmF0aW9ucy4gKi9cCi0gICAgbWFjcm8oQXJpdGhBZGQsIE5v
ZGVSZXN1bHROdW1iZXIpIFwKLSAgICBtYWNybyhBcml0aFN1YiwgTm9kZVJlc3VsdE51bWJlcikg
XAotICAgIG1hY3JvKEFyaXRoTmVnYXRlLCBOb2RlUmVzdWx0TnVtYmVyKSBcCi0gICAgbWFjcm8o
QXJpdGhNdWwsIE5vZGVSZXN1bHROdW1iZXIpIFwKKyAgICAvKiBOb2RlcyBmb3IgYXJpdGhtZXRp
YyBvcGVyYXRpb25zLiBOb3RlIHRoYXQgaWYgdGhleSBkbyBjaGVja3Mgb3RoZXIgdGhhbiBqdXN0
IHR5cGUgY2hlY2tzLCAqL1wKKyAgICAvKiB0aGVuIHRoZXkgYXJlIE11c3RHZW5lcmF0ZS4gVGhp
cyBpcyBwcm9iYWJseSBzdHJpY3RlciB0aGFuIGl0IG5lZWRzIHRvIGJlIC0gZm9yIGV4YW1wbGUg
Ki9cCisgICAgLyogdGhleSB3b24ndCBkbyBjaGVja3MgaWYgdGhleSBhcmUgc3BlY3VsYXRlZCBk
b3VibGUuIEFsc28sIHdlIGNvdWxkIGtpbGwgdGhlc2UgaWYgd2UgZG8gaXQgKi9cCisgICAgLyog
YmVmb3JlIEFJIHN0YXJ0cyBlbGltaW5hdGluZyBkb3duc3RyZWFtIG9wZXJhdGlvbnMgYmFzZWQg
b24gcHJvb2ZzLCBmb3IgZXhhbXBsZSBpbiB0aGUgKi9cCisgICAgLyogY2FzZSBvZiAidmFyIHRt
cCA9IGEgKyBiOyByZXR1cm4gKHRtcCB8IDApID09IHRtcDsiLiBJZiBhLCBiIGFyZSBzcGVjdWxh
dGVkIGludGVnZXIgdGhlbiAqL1wKKyAgICAvKiB0aGlzIGlzIG9ubHkgdHJ1ZSBpZiB3ZSBkbyB0
aGUgb3ZlcmZsb3cgY2hlY2sgLSBoZW5jZSB0aGUgbmVlZCB0byBrZWVwIGl0IGFsaXZlLiBNb3Jl
ICovXAorICAgIC8qIGdlbmVyYWxseSwgd2UgbmVlZCB0byBrZWVwIGFsaXZlIGFueSBvcGVyYXRp
b24gd2hvc2UgY2hlY2tzIGNhdXNlIGZpbHRyYXRpb24gaW4gQUkuICovXAorICAgIG1hY3JvKEFy
aXRoQWRkLCBOb2RlUmVzdWx0TnVtYmVyIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3Jv
KEFyaXRoU3ViLCBOb2RlUmVzdWx0TnVtYmVyIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1h
Y3JvKEFyaXRoTmVnYXRlLCBOb2RlUmVzdWx0TnVtYmVyIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAor
ICAgIG1hY3JvKEFyaXRoTXVsLCBOb2RlUmVzdWx0TnVtYmVyIHwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKEFyaXRoSU11bCwgTm9kZVJlc3VsdEludDMyKSBcCi0gICAgbWFjcm8oQXJp
dGhEaXYsIE5vZGVSZXN1bHROdW1iZXIpIFwKLSAgICBtYWNybyhBcml0aE1vZCwgTm9kZVJlc3Vs
dE51bWJlcikgXAotICAgIG1hY3JvKEFyaXRoQWJzLCBOb2RlUmVzdWx0TnVtYmVyKSBcCisgICAg
bWFjcm8oQXJpdGhEaXYsIE5vZGVSZXN1bHROdW1iZXIgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisg
ICAgbWFjcm8oQXJpdGhNb2QsIE5vZGVSZXN1bHROdW1iZXIgfCBOb2RlTXVzdEdlbmVyYXRlKSBc
CisgICAgbWFjcm8oQXJpdGhBYnMsIE5vZGVSZXN1bHROdW1iZXIgfCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oQXJpdGhNaW4sIE5vZGVSZXN1bHROdW1iZXIpIFwKICAgICBtYWNybyhB
cml0aE1heCwgTm9kZVJlc3VsdE51bWJlcikgXAogICAgIG1hY3JvKEFyaXRoRlJvdW5kLCBOb2Rl
UmVzdWx0TnVtYmVyKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVj
dEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9u
IDE4MzMwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlv
blNpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5Nyw3ICs3OTcsNiBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAg
ICAgY2FzZSBDaGVjazoKLSAgICAgICAgY2FzZSBNdXN0R2VuZXJhdGU6CiAgICAgICAgIGNhc2Ug
U3RvcmVCYXJyaWVyOgogICAgICAgICBjYXNlIFN0b3JlQmFycmllcldpdGhOdWxsQ2hlY2s6CiAg
ICAgICAgIGNhc2UgUHV0SGludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMTgzMzA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fu
b25pY2FsaXphdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBzdGF0aWMgY29uc3QgTm9kZUZsYWdz
IE5vZGVOZWVkc1BoYW50b20gPSBOb2RlTWlzY0ZsYWcxOwotc3RhdGljIGNvbnN0IE5vZGVGbGFn
cyBOb2RlTmVlZHNNdXN0R2VuZXJhdGUgPSBOb2RlTWlzY0ZsYWcyOwogCiBjbGFzcyBQaGFudG9t
Q2Fub25pY2FsaXphdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKIHB1YmxpYzoKQEAgLTUxLDcg
KzUwLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09
IFNTQSk7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLmNsZWFyRmxhZ3NPbkFsbE5vZGVzKE5v
ZGVOZWVkc1BoYW50b20gfCBOb2RlTmVlZHNNdXN0R2VuZXJhdGUgfCBOb2RlUmVsZXZhbnRUb09T
Uik7CisgICAgICAgIG1fZ3JhcGguY2xlYXJGbGFnc09uQWxsTm9kZXMoTm9kZU5lZWRzUGhhbnRv
bSB8IE5vZGVSZWxldmFudFRvT1NSKTsKICAgICAgICAgbV9ncmFwaC5tZXJnZVJlbGV2YW50VG9P
U1IoKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9n
cmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewpAQCAtNjMsMTMgKzYyLDExIEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldEluZGV4ID0gMDsKICAgICAgICAgICAg
IHdoaWxlIChzb3VyY2VJbmRleCA8IGJsb2NrLT5zaXplKCkpIHsKICAgICAgICAgICAgICAgICBO
b2RlKiBub2RlID0gYmxvY2stPmF0KHNvdXJjZUluZGV4KyspOwotICAgICAgICAgICAgICAgIGlm
IChub2RlLT5vcCgpID09IE11c3RHZW5lcmF0ZSB8fCBub2RlLT5vcCgpID09IFBoYW50b20gfHwg
bm9kZS0+b3AoKSA9PSBDaGVjaykgeworICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09
IFBoYW50b20gfHwgbm9kZS0+b3AoKSA9PSBDaGVjaykgewogICAgICAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQWRqYWNlbmN5TGlzdDo6U2l6ZTsgKytpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBFZGdlIGVkZ2UgPSBub2RlLT5jaGlsZHJlbi5jaGlsZChpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZWRnZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09
IE11c3RHZW5lcmF0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGdlLT5tZXJnZUZs
YWdzKE5vZGVOZWVkc011c3RHZW5lcmF0ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
KGVkZ2UtPmZsYWdzKCkgJiBOb2RlUmVsZXZhbnRUb09TUikgJiYgbm9kZS0+b3AoKSA9PSBQaGFu
dG9tKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSBQaGFudG9tIG9uIGEgbm9k
ZSB0aGF0IGlzIFJlbGV2YW50VG9PU1IgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIGtlZXAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBhIFBoYW50b20gb24gdGhpcyBub2RlIGluc3RlYWQg
b2YganVzdCBoYXZpbmcgYSBDaGVjay4KQEAgLTEwMSwxMCArOTgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUlu
ZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAgICAgICAgICBOb2Rl
KiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmZsYWdzKCkgJiBOb2RlTmVlZHNNdXN0R2VuZXJhdGUpIHsKLSAgICAgICAgICAgICAgICAgICAg
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5k
ZXggKyAxLCBTcGVjTm9uZSwgTXVzdEdlbmVyYXRlLCBub2RlLT5vcmlnaW4sIG5vZGUtPmRlZmF1
bHRFZGdlKCkpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+ZmxhZ3MoKSAmIE5v
ZGVOZWVkc1BoYW50b20pIHsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+ZmxhZ3MoKSAmIE5v
ZGVOZWVkc1BoYW50b20pIHsKICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLCBTcGVjTm9uZSwg
UGhhbnRvbSwgbm9kZS0+b3JpZ2luLCBub2RlLT5kZWZhdWx0RWRnZSgpKTsKICAgICAgICAgICAg
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFs
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhh
bnRvbVJlbW92YWxQaGFzZS5jcHAJKHJldmlzaW9uIDE4MzMwNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0NywxNCArMTQ3LDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNh
c2UgTXVzdEdlbmVyYXRlOiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJl
bi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hbGxvY2F0
b3IuZnJlZShub2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAxODMzMDYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTUsOCAr
Mzk1LDEwIEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAgICAg
ICAgcGVyZm9ybUNGQShkZmcpOwogICAgICAgICBpZiAoT3B0aW9uczo6dmFsaWRhdGVGVExPU1JF
eGl0TGl2ZW5lc3MoKSkKICAgICAgICAgICAgIHBlcmZvcm1SZXN1cnJlY3Rpb25Gb3JWYWxpZGF0
aW9uKGRmZyk7Ci0gICAgICAgIGlmIChPcHRpb25zOjplbmFibGVNb3ZIaW50UmVtb3ZhbCgpKQor
ICAgICAgICBpZiAoT3B0aW9uczo6ZW5hYmxlTW92SGludFJlbW92YWwoKSkgewogICAgICAgICAg
ICAgcGVyZm9ybU1vdkhpbnRSZW1vdmFsKGRmZyk7CisgICAgICAgICAgICBwZXJmb3JtUGhhbnRv
bUNhbm9uaWNhbGl6YXRpb24oZGZnKTsKKyAgICAgICAgfQogICAgICAgICBwZXJmb3JtRENFKGRm
Zyk7IC8vIFdlIHJlbHkgb24gdGhpcyB0byBraWxsIGRlYWQgY29kZSB0aGF0IHdvbid0IGJlIHJl
Y29nbml6ZWQgYXMgZGVhZCBieSBMTFZNLgogICAgICAgICBwZXJmb3JtU3RhY2tMYXlvdXQoZGZn
KTsKICAgICAgICAgcGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMoZGZnKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxODMzMDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTM0LDcgKzUzNCw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6
CiAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKICAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6
Ci0gICAgICAgIGNhc2UgTXVzdEdlbmVyYXRlOgogICAgICAgICBjYXNlIERvdWJsZVJlcDoKICAg
ICAgICAgY2FzZSBWYWx1ZVJlcDoKICAgICAgICAgY2FzZSBJbnQ1MlJlcDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAxODMz
MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw2IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgY2FzZSBab21iaWVIaW50Ogog
ICAgIGNhc2UgUGhhbnRvbToKLSAgICBjYXNlIE11c3RHZW5lcmF0ZToKICAgICBjYXNlIFVwc2ls
b246CiAgICAgY2FzZSBQaGk6CiAgICAgY2FzZSBGbHVzaDoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNp
b24gMTgzMzA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYxNyw3ICs0NjE3LDYgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgUGhhbnRvbToKLSAgICBjYXNlIE11c3RHZW5lcmF0ZToKICAgICBjYXNlIENoZWNrOgogICAg
ICAgICBERkdfTk9ERV9ET19UT19DSElMRFJFTihtX2ppdC5ncmFwaCgpLCBub2RlLCBzcGVjdWxh
dGUpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTgzMzA2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDMzNCw3ICs0MzM0LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgUGhhbnRvbToKLSAg
ICBjYXNlIE11c3RHZW5lcmF0ZToKICAgICBjYXNlIENoZWNrOgogICAgICAgICBERkdfTk9ERV9E
T19UT19DSElMRFJFTihtX2ppdC5ncmFwaCgpLCBub2RlLCBzcGVjdWxhdGUpOwogICAgICAgICBu
b1Jlc3VsdChub2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNo
ZWNrSG9pc3RpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTgzMzA2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQ0LDcgKzI0NCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAgICAgIGNhc2Ug
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgot
ICAgICAgICAgICAgICAgIGNhc2UgTXVzdEdlbmVyYXRlOgogICAgICAgICAgICAgICAgIGNhc2Ug
TW92SGludDoKICAgICAgICAgICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgICAg
ICAgICAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgpAQCAtMzM3LDcgKzMzNiw2IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICAgICAgICAgICAg
ICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgICAgICAgICAgY2FzZSBQ
aGFudG9tOgotICAgICAgICAgICAgICAgIGNhc2UgTXVzdEdlbmVyYXRlOgogICAgICAgICAgICAg
ICAgIGNhc2UgTW92SGludDoKICAgICAgICAgICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6
CiAgICAgICAgICAgICAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxODMzMDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
cmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw2IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAg
IGNhc2UgUGhhbnRvbToKICAgICAgICAgICAgIGNhc2UgQ2hlY2s6Ci0gICAgICAgICAgICBjYXNl
IE11c3RHZW5lcmF0ZToKICAgICAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgICAgIGNh
c2UgUHV0SGludDoKICAgICAgICAgICAgIGNhc2UgTG9hZFZhcmFyZ3M6CkBAIC0yMTQsNyArMjEz
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAg
ICAgICAgY2FzZSBQaGFudG9tOgogICAgICAgICAgICAgY2FzZSBDaGVjazoKLSAgICAgICAgICAg
IGNhc2UgTXVzdEdlbmVyYXRlOgogICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICAg
ICAgY2FzZSBQdXRIaW50OgogICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY2hh
bmdlIGFueXRoaW5nIHdpdGggdGhlc2UuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxODMzMDYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUy
LDcgKzUyLDYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAg
IGNhc2UgTW92SGludDoKICAgICBjYXNlIFpvbWJpZUhpbnQ6CiAgICAgY2FzZSBQaGFudG9tOgot
ICAgIGNhc2UgTXVzdEdlbmVyYXRlOgogICAgIGNhc2UgRmx1c2g6CiAgICAgY2FzZSBQaGFudG9t
TG9jYWw6CiAgICAgY2FzZSBTZXRBcmd1bWVudDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxODMzMDYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDY0LDcgKzQ2NCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjb21waWxlUHV0
U3RhY2soKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBoYW50b206Ci0gICAg
ICAgIGNhc2UgTXVzdEdlbmVyYXRlOgogICAgICAgICBjYXNlIENoZWNrOgogICAgICAgICAgICAg
Y29tcGlsZVBoYW50b20oKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9mb2xkLWJhc2VkLW9uLWludDMyLXByb29mLW11bC1icmFu
Y2guanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9m
b2xkLWJhc2VkLW9uLWludDMyLXByb29mLW11bC1icmFuY2guanMJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ZvbGQtYmFzZWQtb24taW50MzItcHJv
b2YtbXVsLWJyYW5jaC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACitmdW5jdGlv
biBmb28oYSwgYikgeworICAgIHZhciB2YWx1ZSA9IERGR1RydWUoKSA/IC0wIDogImZvbyI7Cisg
ICAgaWYgKGEgKiBiID09IHZhbHVlKQorICAgICAgICByZXR1cm4gW0RGR1RydWUoKSwgdHJ1ZV07
CisgICAgcmV0dXJuIFtERkdUcnVlKCksIGZhbHNlXTsKK30KK25vSW5saW5lKGZvbyk7CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28oMSwg
MSk7CisgICAgaWYgKHJlc3VsdFsxXSAhPT0gZmFsc2UpCisgICAgICAgIHRocm93ICJFcnJvcjog
YmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KKwordmFyIHJlc3VsdCA9IGZvbygtMSwgMCk7Citp
ZiAocmVzdWx0WzFdICE9PSB0cnVlICYmIHJlc3VsdFswXSkKKyAgICB0aHJvdyAiRXJyb3I6IGJh
ZCByZXN1bHQgYXQgZW5kOiAiICsgcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9mb2xkLWJhc2VkLW9uLWludDMyLXByb29mLW11bC5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ZvbGQtYmFzZWQtb24taW50
MzItcHJvb2YtbXVsLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9mb2xkLWJhc2VkLW9uLWludDMyLXByb29mLW11bC5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE0IEBACitmdW5jdGlvbiBmb28oYSwgYikgeworICAgIHJldHVybiBhICog
YiA9PT0gLTA7Cit9Citub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAw
OyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKDEsIDEpOworICAgIGlmIChyZXN1bHQgIT09
IGZhbHNlKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9
CisKK3ZhciByZXN1bHQgPSBmb28oLTEsIDApOworaWYgKHJlc3VsdCAhPT0gdHJ1ZSkKKyAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5kOiAiICsgcmVzdWx0OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9mb2xkLWJhc2VkLW9uLWludDMyLXByb29mLW9y
LXplcm8uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9mb2xkLWJhc2VkLW9uLWludDMyLXByb29mLW9yLXplcm8uanMJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ZvbGQtYmFzZWQtb24taW50MzItcHJv
b2Ytb3ItemVyby5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1IEBACitmdW5jdGlvbiBm
b28oYSwgYikgeworICAgIHZhciBjID0gYSArIGI7CisgICAgcmV0dXJuIChjIHwgMCkgPT0gYzsK
K30KK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgewor
ICAgIHZhciByZXN1bHQgPSBmb28oMSwgMSk7CisgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSkKKyAg
ICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQorCit2YXIgcmVz
dWx0ID0gZm9vKDEwNzM3NDE4MjQsIDEwNzM3NDE4MjQpOworaWYgKHJlc3VsdCAhPT0gZmFsc2Up
CisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGF0IGVuZDogIiArIHJlc3VsdDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZm9sZC1iYXNlZC1vbi1pbnQzMi1w
cm9vZi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2ZvbGQtYmFzZWQtb24taW50MzItcHJvb2YuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ZvbGQtYmFzZWQtb24taW50MzItcHJvb2YuanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorZnVuY3Rpb24gZm9vKGEsIGIpIHsKKyAgICBy
ZXR1cm4gYSArIGIgPT09IDIxNDc0ODM2NDg7Cit9Citub0lubGluZShmb28pOworCitmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKDEsIDEpOwor
ICAgIGlmIChyZXN1bHQgIT09IGZhbHNlKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQ6ICIgKyByZXN1bHQ7Cit9CisKK3ZhciByZXN1bHQgPSBmb28oMTA3Mzc0MTgyNCwgMTA3Mzc0
MTgyNCk7CitpZiAocmVzdWx0ICE9PSB0cnVlKQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3Vs
dCBhdCBlbmQ6ICIgKyByZXN1bHQ7Cg==
</data>
<flag name="review"
          id="276391"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>