<?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>13963</bug_id>
          
          <creation_ts>2007-06-01 02:06:24 -0700</creation_ts>
          <short_desc>Reproducible crash playing SVG space invaders in JS code</short_desc>
          <delta_ts>2007-06-14 17:37:43 -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>SVG</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.croczilla.com/svg/samples/invaders/invaders.svg</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>NeedsReduction</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>8580</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-06-01 02:06:24 -0700</bug_when>
    <thetext>Reproducible crash playing SVG space invaders in JS code

http://www.croczilla.com/svg/samples/invaders/invaders.svg

I&apos;m not certain if this is on TOT or just the feature branch.  If it&apos;s on TOT too it needs to be bumped to a P1.

#0	0x04897fff in ??
#1	0x01627559 in WebCore::JSSVGPODTypeWrapperCreator&lt;WebCore::SVGLength, WebCore::SVGAnimatedTemplate&lt;WebCore::SVGLength&gt; &gt;::commitChange at JSSVGPODTypeWrapper.h:75
#2	0x01364445 in WebCore::JSSVGLength::putValueProperty at JSSVGLength.cpp:218
#3	0x0163dbde in KJS::lookupPut&lt;WebCore::JSSVGLength&gt; at lookup.h:252
#4	0x0163dc20 in KJS::lookupPut&lt;WebCore::JSSVGLength, KJS::DOMObject&gt; at lookup.h:268
#5	0x01364937 in WebCore::JSSVGLength::put at JSSVGLength.cpp:208
#6	0x0054aafa in KJS::AssignDotNode::evaluate at nodes.cpp:1498
#7	0x00544587 in KJS::ExprStatementNode::execute at nodes.cpp:1723
#8	0x005424b1 in KJS::SourceElementsNode::execute at nodes.cpp:2522
#9	0x00540e02 in KJS::BlockNode::execute at nodes.cpp:1699
#10	0x0054448f in KJS::IfNode::execute at nodes.cpp:1742
#11	0x005424b1 in KJS::SourceElementsNode::execute at nodes.cpp:2522
#12	0x00540e02 in KJS::BlockNode::execute at nodes.cpp:1699
#13	0x00549017 in KJS::ForInNode::execute at nodes.cpp:1999
#14	0x005424b1 in KJS::SourceElementsNode::execute at nodes.cpp:2522
#15	0x00540e02 in KJS::BlockNode::execute at nodes.cpp:1699
#16	0x005358fd in KJS::DeclaredFunctionImp::execute at function.cpp:317
#17	0x005384c7 in KJS::FunctionImp::callAsFunction at function.cpp:104
#18	0x0053d7ca in KJS::JSObject::call at object.cpp:98
#19	0x00538a3f in KJS::PropertySlot::functionGetter at property_slot.cpp:37
#20	0x00571b29 in KJS::PropertySlot::getValue at property_slot.h:47
#21	0x00540227 in KJS::ResolveNode::evaluate at nodes.cpp:398
#22	0x00544587 in KJS::ExprStatementNode::execute at nodes.cpp:1723
#23	0x005425bc in KJS::SourceElementsNode::execute at nodes.cpp:2528
#24	0x00540e02 in KJS::BlockNode::execute at nodes.cpp:1699
#25	0x0054326b in KJS::WithNode::execute at nodes.cpp:2090
#26	0x005424b1 in KJS::SourceElementsNode::execute at nodes.cpp:2522
#27	0x00540e02 in KJS::BlockNode::execute at nodes.cpp:1699
#28	0x005358fd in KJS::DeclaredFunctionImp::execute at function.cpp:317
#29	0x005384c7 in KJS::FunctionImp::callAsFunction at function.cpp:104
#30	0x0053d7ca in KJS::JSObject::call at object.cpp:98
#31	0x005474b5 in KJS::FunctionCallResolveNode::evaluate at nodes.cpp:694
#32	0x00544587 in KJS::ExprStatementNode::execute at nodes.cpp:1723
#33	0x005425bc in KJS::SourceElementsNode::execute at nodes.cpp:2528
#34	0x00540e02 in KJS::BlockNode::execute at nodes.cpp:1699
#35	0x0054448f in KJS::IfNode::execute at nodes.cpp:1742
#36	0x005424b1 in KJS::SourceElementsNode::execute at nodes.cpp:2522
#37	0x00540e02 in KJS::BlockNode::execute at nodes.cpp:1699
#38	0x0054448f in KJS::IfNode::execute at nodes.cpp:1742
#39	0x005424b1 in KJS::SourceElementsNode::execute at nodes.cpp:2522
#40	0x00540e02 in KJS::BlockNode::execute at nodes.cpp:1699
#41	0x0054326b in KJS::WithNode::execute at nodes.cpp:2090
#42	0x005424b1 in KJS::SourceElementsNode::execute at nodes.cpp:2522
#43	0x00540e02 in KJS::BlockNode::execute at nodes.cpp:1699
#44	0x005358fd in KJS::DeclaredFunctionImp::execute at function.cpp:317
#45	0x005384c7 in KJS::FunctionImp::callAsFunction at function.cpp:104
#46	0x0053d7ca in KJS::JSObject::call at object.cpp:98
#47	0x0127ec57 in KJS::ScheduledAction::execute at kjs_window.cpp:1916
#48	0x01281cd9 in KJS::Window::timerFired at kjs_window.cpp:2039
#49	0x01281ea5 in KJS::DOMWindowTimer::fired at kjs_window.cpp:2639
#50	0x012173c2 in WebCore::TimerBase::fireTimers at Timer.cpp:336
#51	0x0121745f in WebCore::TimerBase::sharedTimerFired at Timer.cpp:353
#52	0x01216b16 in timerFired at SharedTimerMac.cpp:46
#53	0x9082c7e2 in CFRunLoopRunSpecific
#54	0x9082bace in CFRunLoopRunInMode
#55	0x92ddc8d8 in RunCurrentEventLoopInMode
#56	0x92ddbf19 in ReceiveNextEventCommon
#57	0x92ddbe39 in BlockUntilNextEventMatchingListInMode
#58	0x93282465 in _DPSNextEvent
#59	0x93282056 in -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
#60	0x00006f96 in ??
#61	0x9327bddb in -[NSApplication run]
#62	0x9326fd2f in NSApplicationMain
#63	0x0005f7de in ??
#64	0x0005f6f9 in ??</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>8576</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-06-01 02:07:33 -0700</bug_when>
    <thetext>This is the line which crashes, btw:

     virtual void commitChange(KJS::ExecState* exec)
    {
        (m_creator-&gt;*m_setter)((PODType&amp;)(*this));  // &lt;-- CRASH HERE

        ASSERT(exec &amp;&amp; exec-&gt;dynamicInterpreter());

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>8574</commentid>
    <comment_count>2</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2007-06-01 02:11:27 -0700</bug_when>
    <thetext>Can make it crash by mashing keys :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>8575</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2007-06-01 02:15:15 -0700</bug_when>
    <thetext>Looks like badness

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0xc5d7bd67
0x017bdd23 in WebCore::JSSVGPODTypeWrapperCreator&lt;WebCore::SVGLength, WebCore::SVGAnimatedTemplate&lt;WebCore::SVGLength&gt; &gt;::commitChange (this=0x181e6e30, exec=0xbfffdc5c) at JSSVGPODTypeWrapper.h:75
75	        (m_creator-&gt;*m_setter)((PODType&amp;)(*this));
(gdb) p m_creator
$1 = (SVGAnimatedLength *) 0x17583ad0
Current language:  auto; currently c++
(gdb) p *m_creator
$2 = {
  &lt;WebCore::Shared&lt;WebCore::SVGAnimatedTemplate&lt;WebCore::SVGLength&gt; &gt;&gt; = {
    &lt;WTFNoncopyable::Noncopyable&gt; = {&lt;No data fields&gt;}, 
    members of WebCore::Shared&lt;WebCore::SVGAnimatedTemplate&lt;WebCore::SVGLength&gt; &gt;: 
    m_refCount = -975824033, 
    m_inDestructor = true
  }, 
  members of WebCore::SVGAnimatedTemplate&lt;WebCore::SVGLength&gt;: 
  _vptr$SVGAnimatedTemplate = 0xc5d7bd5b
}
(gdb) 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7921</commentid>
    <comment_count>4</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-06-11 17:28:37 -0700</bug_when>
    <thetext>Niko says this is caused by his code. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7547</commentid>
    <comment_count>5</comment_count>
      <attachid>15026</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2007-06-14 12:07:42 -0700</bug_when>
    <thetext>Created attachment 15026
Initial patch

Not asking for review yet - as it doesn&apos;t contain a ChangeLog yet, and still makes problems. Just for Eric to have a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7515</commentid>
    <comment_count>6</comment_count>
      <attachid>15034</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2007-06-14 15:24:31 -0700</bug_when>
    <thetext>Created attachment 15034
Final patch

Finally a working patch :-) Thank Eric for the final hints to get it going.
Long lives peer reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7494</commentid>
    <comment_count>7</comment_count>
      <attachid>15034</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-06-14 17:05:12 -0700</bug_when>
    <thetext>Comment on attachment 15034
Final patch

looks good.
r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7492</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-06-14 17:14:16 -0700</bug_when>
    <thetext>This needs to go on TOT as well.  it&apos;s a p1 reproducible crasher.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7490</commentid>
    <comment_count>9</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2007-06-14 17:37:43 -0700</bug_when>
    <thetext>Landed in r23543.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15026</attachid>
            <date>2007-06-14 12:07:42 -0700</date>
            <delta_ts>2007-06-14 15:24:31 -0700</delta_ts>
            <desc>Initial patch</desc>
            <filename>FixInvaders.diff</filename>
            <type>text/plain</type>
            <size>16778</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IGJpbmRpbmdzL2pzL0pTU1ZHTWF0cml4Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBi
aW5kaW5ncy9qcy9KU1NWR01hdHJpeEN1c3RvbS5jcHAJKHJldmlzaW9uIDIzNTA0KQorKysgYmlu
ZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICsz
Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSogSlNTVkdNYXRyaXg6OmludmVy
c2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBMaXN0JikKIHsKLSAgICBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIGltcCgqaW1wbCgpKTsKLSAgICBLSlM6OkpTVmFsdWUqIHJlc3VsdCA9IHRvSlMoZXhl
YywgbmV3IEpTU1ZHUE9EVHlwZVdyYXBwZXI8QWZmaW5lVHJhbnNmb3JtPihpbXAuaW52ZXJzZSgp
KSk7CisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtIGltcCgqaW1wbCgpKTsKKyAgICBLSlM6OkpT
VmFsdWUqIHJlc3VsdCA9IHRvSlMoZXhlYywgbmV3IEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9y
UmVhZE9ubHk8QWZmaW5lVHJhbnNmb3JtPihpbXAuaW52ZXJzZSgpKSk7CiAKICAgICBpZiAoIWlt
cC5pc0ludmVydGlibGUoKSkKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFNWR19NQVRS
SVhfTk9UX0lOVkVSVEFCTEUpOwpAQCAtNDMsMTIgKzQzLDEyIEBAIEpTVmFsdWUqIEpTU1ZHTWF0
cml4OjppbnZlcnNlKEV4ZWNTdGF0ZSoKIAogSlNWYWx1ZSogSlNTVkdNYXRyaXg6OnJvdGF0ZUZy
b21WZWN0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBMaXN0JiBhcmdzKQogewotICAgIEFmZmlu
ZVRyYW5zZm9ybSYgaW1wKCppbXBsKCkpOworICAgIEFmZmluZVRyYW5zZm9ybSBpbXAoKmltcGwo
KSk7CiAgCiAgICAgZmxvYXQgeCA9IGFyZ3NbMF0tPnRvTnVtYmVyKGV4ZWMpOwogICAgIGZsb2F0
IHkgPSBhcmdzWzFdLT50b051bWJlcihleGVjKTsKIAotICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0
ID0gdG9KUyhleGVjLCBuZXcgSlNTVkdQT0RUeXBlV3JhcHBlcjxBZmZpbmVUcmFuc2Zvcm0+KGlt
cC5yb3RhdGVGcm9tVmVjdG9yKHgsIHkpKSk7CisgICAgS0pTOjpKU1ZhbHVlKiByZXN1bHQgPSB0
b0pTKGV4ZWMsIG5ldyBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvclJlYWRPbmx5PEFmZmluZVRy
YW5zZm9ybT4oaW1wLnJvdGF0ZUZyb21WZWN0b3IoeCwgeSkpKTsKIAogICAgIGlmICh4ID09IDAu
MCB8fCB5ID09IDAuMCkKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFNWR19JTlZBTElE
X1ZBTFVFX0VSUik7CkluZGV4OiBiaW5kaW5ncy9qcy9KU1NWR1BPRFR5cGVXcmFwcGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gYmluZGluZ3MvanMvSlNTVkdQT0RUeXBlV3JhcHBlci5oCShyZXZpc2lvbiAy
MzUwNCkKKysrIGJpbmRpbmdzL2pzL0pTU1ZHUE9EVHlwZVdyYXBwZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKIAogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC00MCwzOSArNDEsNDQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgUE9EVHlw
ZT4KIGNsYXNzIEpTU1ZHUE9EVHlwZVdyYXBwZXIgOiBwdWJsaWMgU2hhcmVkPEpTU1ZHUE9EVHlw
ZVdyYXBwZXI8UE9EVHlwZT4gPgogewogcHVibGljOgotICAgIEpTU1ZHUE9EVHlwZVdyYXBwZXIo
Y29uc3QgUE9EVHlwZSYgdHlwZSkKLSAgICA6IG1fcG9kVHlwZSh0eXBlKQotICAgIHsgfQotCiAg
ICAgdmlydHVhbCB+SlNTVkdQT0RUeXBlV3JhcHBlcigpIHsgfQogCi0gICAgb3BlcmF0b3IgUE9E
VHlwZSYoKSB7IHJldHVybiBtX3BvZFR5cGU7IH0KLQotICAgIC8vIEltcGxlbWVudGVkIGJ5IEpT
U1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yCi0gICAgdmlydHVhbCB2b2lkIGNvbW1pdENoYW5nZShL
SlM6OkV4ZWNTdGF0ZSopIHsgfQorICAgIC8vIEdldHRlciB3cmFwcGVyCisgICAgdmlydHVhbCBv
cGVyYXRvciBQT0RUeXBlKCkgPSAwOwogCi1wcml2YXRlOgotICAgIFBPRFR5cGUgbV9wb2RUeXBl
OworICAgIC8vIFNldHRlciB3cmFwcGVyCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENoYW5nZShL
SlM6OkV4ZWNTdGF0ZSosIFBPRFR5cGUpID0gMDsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFBP
RFR5cGUsIHR5cGVuYW1lIFBPRFR5cGVDcmVhdG9yPgotY2xhc3MgSlNTVkdQT0RUeXBlV3JhcHBl
ckNyZWF0b3IgOiBwdWJsaWMgSlNTVkdQT0RUeXBlV3JhcHBlcjxQT0RUeXBlPgorY2xhc3MgSlNT
VkdQT0RUeXBlV3JhcHBlckNyZWF0b3JSZWFkV3JpdGUgOiBwdWJsaWMgSlNTVkdQT0RUeXBlV3Jh
cHBlcjxQT0RUeXBlPgogewogcHVibGljOgotICAgIHR5cGVkZWYgUE9EVHlwZSAoUE9EVHlwZUNy
ZWF0b3I6OipHZXR0ZXJNZXRob2QpKCkgY29uc3Q7CisgICAgdHlwZWRlZiBQT0RUeXBlIChQT0RU
eXBlQ3JlYXRvcjo6KkdldHRlck1ldGhvZCkoKSBjb25zdDsgCiAgICAgdHlwZWRlZiB2b2lkIChQ
T0RUeXBlQ3JlYXRvcjo6KlNldHRlck1ldGhvZCkoUE9EVHlwZSk7CiAKLSAgICBKU1NWR1BPRFR5
cGVXcmFwcGVyQ3JlYXRvcihQT0RUeXBlQ3JlYXRvciogY3JlYXRvciwgR2V0dGVyTWV0aG9kIGdl
dHRlciwgU2V0dGVyTWV0aG9kIHNldHRlcikKLSAgICA6IEpTU1ZHUE9EVHlwZVdyYXBwZXI8UE9E
VHlwZT4oKGNyZWF0b3ItPipnZXR0ZXIpKCkpCi0gICAgLCBtX2NyZWF0b3IoY3JlYXRvcikKLSAg
ICAsIG1fc2V0dGVyKHNldHRlcikKLSAgICB7IH0KKyAgICBKU1NWR1BPRFR5cGVXcmFwcGVyQ3Jl
YXRvclJlYWRXcml0ZShQT0RUeXBlQ3JlYXRvciogY3JlYXRvciwgR2V0dGVyTWV0aG9kIGdldHRl
ciwgU2V0dGVyTWV0aG9kIHNldHRlcikKKyAgICAgICAgOiBtX2NyZWF0b3IoY3JlYXRvcikKKyAg
ICAgICAgLCBtX2dldHRlcihnZXR0ZXIpCisgICAgICAgICwgbV9zZXR0ZXIoc2V0dGVyKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGNyZWF0b3IpOworICAgICAgICBBU1NFUlQoZ2V0dGVyKTsKKyAg
ICAgICAgQVNTRVJUKHNldHRlcik7CisgICAgfQogCi0gICAgdmlydHVhbCB+SlNTVkdQT0RUeXBl
V3JhcHBlckNyZWF0b3IoKSB7IH0KKyAgICB2aXJ0dWFsIH5KU1NWR1BPRFR5cGVXcmFwcGVyQ3Jl
YXRvclJlYWRXcml0ZSgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvbW1pdENoYW5nZShLSlM6
OkV4ZWNTdGF0ZSogZXhlYykKKyAgICAvLyBHZXR0ZXIgd3JhcHBlcgorICAgIHZpcnR1YWwgb3Bl
cmF0b3IgUE9EVHlwZSgpIHsgcmV0dXJuIChtX2NyZWF0b3ItPiptX2dldHRlcikoKTsgfQorCisg
ICAgLy8gU2V0dGVyIHdyYXBwZXIKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q2hhbmdlKEtKUzo6
RXhlY1N0YXRlKiBleGVjLCBQT0RUeXBlIHR5cGUpCiAgICAgewotICAgICAgICAobV9jcmVhdG9y
LT4qbV9zZXR0ZXIpKChQT0RUeXBlJikoKnRoaXMpKTsKKyAgICAgICAgaWYgKCFtX3NldHRlcikK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAobV9jcmVhdG9yLT4qbV9zZXR0ZXIpKHR5
cGUpOwogCiAgICAgICAgIEFTU0VSVChleGVjICYmIGV4ZWMtPmR5bmFtaWNJbnRlcnByZXRlcigp
KTsKICAgICAgICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0gc3RhdGljX2Nhc3Q8S0pTOjpTY3JpcHRJ
bnRlcnByZXRlcio+KGV4ZWMtPmR5bmFtaWNJbnRlcnByZXRlcigpKS0+ZnJhbWUoKTsKQEAgLTkx
LDQxICs5NywxOTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBVcGRhdGUgY2FsbGJhY2tz
CiAgICAgUE9EVHlwZUNyZWF0b3IqIG1fY3JlYXRvcjsKKyAgICBHZXR0ZXJNZXRob2QgbV9nZXR0
ZXI7CiAgICAgU2V0dGVyTWV0aG9kIG1fc2V0dGVyOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
UE9EVHlwZT4KK2NsYXNzIEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yUmVhZE9ubHkgOiBwdWJs
aWMgSlNTVkdQT0RUeXBlV3JhcHBlcjxQT0RUeXBlPgoreworcHVibGljOgorICAgIEpTU1ZHUE9E
VHlwZVdyYXBwZXJDcmVhdG9yUmVhZE9ubHkoUE9EVHlwZSB0eXBlKQorICAgICAgICA6IG1fcG9k
VHlwZSh0eXBlKQorICAgIHsgfQorCisgICAgdmlydHVhbCB+SlNTVkdQT0RUeXBlV3JhcHBlckNy
ZWF0b3JSZWFkT25seSgpIHsgfQorCisgICAgLy8gR2V0dGVyIHdyYXBwZXIKKyAgICB2aXJ0dWFs
IG9wZXJhdG9yIFBPRFR5cGUoKSB7IHJldHVybiBtX3BvZFR5cGU7IH0KKworICAgIC8vIFNldHRl
ciB3cmFwcGVyCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENoYW5nZShLSlM6OkV4ZWNTdGF0ZSos
IFBPRFR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIG1fcG9kVHlwZSA9IHR5cGU7CisgICAgfQor
Citwcml2YXRlOgorICAgIFBPRFR5cGUgbV9wb2RUeXBlOworfTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgUE9EVHlwZT4KIGNsYXNzIFNWR1BPRExpc3RJdGVtOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQ
T0RUeXBlLCB0eXBlbmFtZSBMaXN0VHlwZT4KLWNsYXNzIEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVh
dG9yRm9yTGlzdCA6IHB1YmxpYyBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvcjxQT0RUeXBlLCBT
VkdQT0RMaXN0SXRlbTxQT0RUeXBlPiA+CitjbGFzcyBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRv
ckZvckxpc3QgOiBwdWJsaWMgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JSZWFkV3JpdGU8UE9E
VHlwZSwgU1ZHUE9ETGlzdEl0ZW08UE9EVHlwZT4gPgogewogcHVibGljOgogICAgIEpTU1ZHUE9E
VHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlzdChTVkdQT0RMaXN0SXRlbTxQT0RUeXBlPiogY3JlYXRv
ciwgY29uc3QgTGlzdFR5cGUqIGxpc3QpCi0gICAgOiBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRv
cjxQT0RUeXBlLCBTVkdQT0RMaXN0SXRlbTxQT0RUeXBlPiA+KGNyZWF0b3IsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZTVkdQT0RMaXN0SXRlbTxQT0RUeXBlPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTVkdQT0RMaXN0
SXRlbTxQT0RUeXBlPjo6c2V0VmFsdWUpCi0gICAgLCBtX2xpc3QobGlzdCkKKyAgICAgICAgOiBK
U1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvclJlYWRXcml0ZTxQT0RUeXBlLCBTVkdQT0RMaXN0SXRl
bTxQT0RUeXBlPiA+KGNyZWF0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU1ZHUE9ETGlzdEl0ZW08UE9E
VHlwZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNWR1BPRExpc3RJdGVtPFBPRFR5cGU+Ojpz
ZXRWYWx1ZSkKKyAgICAgICAgLCBtX2xpc3QobGlzdCkKICAgICB7IH0KIAogICAgIHZpcnR1YWwg
fkpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlzdCgpIHsgfQogCi0gICAgdmlydHVhbCB2
b2lkIGNvbW1pdENoYW5nZShLSlM6OkV4ZWNTdGF0ZSogZXhlYykKKyAgICB2aXJ0dWFsIHZvaWQg
Y29tbWl0Q2hhbmdlKEtKUzo6RXhlY1N0YXRlKiBleGVjLCBQT0RUeXBlIHR5cGUpCiAgICAgewog
ICAgICAgICAvLyBVcGRhdGUgUE9EIGl0ZW0gd2l0aGluIFNWR0xpc3QKLSAgICAgICAgSlNTVkdQ
T0RUeXBlV3JhcHBlckNyZWF0b3I8UE9EVHlwZSwgU1ZHUE9ETGlzdEl0ZW08UE9EVHlwZT4gPjo6
Y29tbWl0Q2hhbmdlKGV4ZWMpOworICAgICAgICBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvclJl
YWRXcml0ZTxQT0RUeXBlLCBTVkdQT0RMaXN0SXRlbTxQT0RUeXBlPiA+Ojpjb21taXRDaGFuZ2Uo
ZXhlYywgdHlwZSk7CiAKICAgICAgICAgLy8gTm90aWZ5IG93bmVyIG9mIHRoZSBsaXN0LCB0aGF0
IGl0J3MgY29udGVudCBjaGFuZ2VkCiAgICAgICAgIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHQg
PSBtX2xpc3QtPmNvbnRleHQoKTsKICAgICAgICAgQVNTRVJUKGNvbnRleHQpOwogCi0gICAgICAg
IGNvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOyAgICAgICAgIAorICAgICAgICBjb250
ZXh0LT5ub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgY29u
c3QgTGlzdFR5cGUqIG1fbGlzdDsKIH07CiAKKy8vIENhY2hpbmcgZmFjaWxpdGllcwordGVtcGxh
dGU8dHlwZW5hbWUgUE9EVHlwZSwgdHlwZW5hbWUgUE9EVHlwZUNyZWF0b3I+CitzdHJ1Y3QgUE9E
VHlwZVJlYWRXcml0ZUhhc2hJbmZvIHsKKyAgICB0eXBlZGVmIFBPRFR5cGUgKFBPRFR5cGVDcmVh
dG9yOjoqR2V0dGVyTWV0aG9kKSgpIGNvbnN0OyAKKyAgICB0eXBlZGVmIHZvaWQgKFBPRFR5cGVD
cmVhdG9yOjoqU2V0dGVyTWV0aG9kKShQT0RUeXBlKTsKKworICAgIC8vIEVtcHR5IHZhbHVlCisg
ICAgUE9EVHlwZVJlYWRXcml0ZUhhc2hJbmZvKCkKKyAgICAgICAgOiBjcmVhdG9yKDApCisgICAg
ICAgICwgZ2V0dGVyKDApCisgICAgICAgICwgc2V0dGVyKDApCisgICAgeyB9CisKKyAgICAvLyBE
ZWxldGVkIHZhbHVlCisgICAgZXhwbGljaXQgUE9EVHlwZVJlYWRXcml0ZUhhc2hJbmZvKGJvb2wp
CisgICAgICAgIDogY3JlYXRvcihyZWludGVycHJldF9jYXN0PFBPRFR5cGVDcmVhdG9yKj4oLTEp
KQorICAgICAgICAsIGdldHRlcigwKQorICAgICAgICAsIHNldHRlcigwKQorICAgIHsgfQorCisg
ICAgUE9EVHlwZVJlYWRXcml0ZUhhc2hJbmZvKFBPRFR5cGVDcmVhdG9yKiBfY3JlYXRvciwgR2V0
dGVyTWV0aG9kIF9nZXR0ZXIsIFNldHRlck1ldGhvZCBfc2V0dGVyKQorICAgICAgICA6IGNyZWF0
b3IoX2NyZWF0b3IpCisgICAgICAgICwgZ2V0dGVyKF9nZXR0ZXIpCisgICAgICAgICwgc2V0dGVy
KF9zZXR0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY3JlYXRvcik7CisgICAgICAgIEFTU0VS
VChnZXR0ZXIpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQT0RUeXBlUmVh
ZFdyaXRlSGFzaEluZm8mIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0
b3IgPT0gb3RoZXIuY3JlYXRvciAmJiBnZXR0ZXIgPT0gb3RoZXIuZ2V0dGVyICYmIHNldHRlciA9
PSBvdGhlci5zZXR0ZXI7CisgICAgfQorCisgICAgUE9EVHlwZUNyZWF0b3IqIGNyZWF0b3I7Cisg
ICAgR2V0dGVyTWV0aG9kIGdldHRlcjsKKyAgICBTZXR0ZXJNZXRob2Qgc2V0dGVyOworfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgUE9EVHlwZSwgdHlwZW5hbWUgUE9EVHlwZUNyZWF0b3I+CitzdHJ1
Y3QgUE9EVHlwZVJlYWRXcml0ZUhhc2hJbmZvSGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhh
c2goY29uc3QgUE9EVHlwZVJlYWRXcml0ZUhhc2hJbmZvPFBPRFR5cGUsIFBPRFR5cGVDcmVhdG9y
PiYgaW5mbykKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpjb21wdXRlSGFzaCgo
VUNoYXIqKSAmaW5mbywgc2l6ZW9mKFBPRFR5cGVSZWFkV3JpdGVIYXNoSW5mbzxQT0RUeXBlLCBQ
T0RUeXBlQ3JlYXRvcj4pIC8gc2l6ZW9mKFVDaGFyKSk7CisgICAgfQorCisgICAgc3RhdGljIGJv
b2wgZXF1YWwoY29uc3QgUE9EVHlwZVJlYWRXcml0ZUhhc2hJbmZvPFBPRFR5cGUsIFBPRFR5cGVD
cmVhdG9yPiYgYSwgY29uc3QgUE9EVHlwZVJlYWRXcml0ZUhhc2hJbmZvPFBPRFR5cGUsIFBPRFR5
cGVDcmVhdG9yPiYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBhID09IGI7CisgICAgfQorfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgUE9EVHlwZSwgdHlwZW5hbWUgUE9EVHlwZUNyZWF0b3I+Citz
dHJ1Y3QgUE9EVHlwZVJlYWRXcml0ZUhhc2hJbmZvVHJhaXRzIDogV1RGOjpHZW5lcmljSGFzaFRy
YWl0czxQT0RUeXBlUmVhZFdyaXRlSGFzaEluZm88UE9EVHlwZSwgUE9EVHlwZUNyZWF0b3I+ID4g
eworICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOworICAgIHN0
YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKKworICAgIHN0YXRpYyBj
b25zdCBQT0RUeXBlUmVhZFdyaXRlSGFzaEluZm88UE9EVHlwZSwgUE9EVHlwZUNyZWF0b3I+JiBk
ZWxldGVkVmFsdWUoKQorICAgIHsKKyAgICAgICAgc3RhdGljIFBPRFR5cGVSZWFkV3JpdGVIYXNo
SW5mbzxQT0RUeXBlLCBQT0RUeXBlQ3JlYXRvcj4ga2V5KHRydWUpOworICAgICAgICByZXR1cm4g
a2V5OworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBQT0RUeXBlUmVhZFdyaXRlSGFzaEluZm88
UE9EVHlwZSwgUE9EVHlwZUNyZWF0b3I+JiBlbXB0eVZhbHVlKCkKKyAgICB7CisgICAgICAgIHN0
YXRpYyBQT0RUeXBlUmVhZFdyaXRlSGFzaEluZm88UE9EVHlwZSwgUE9EVHlwZUNyZWF0b3I+IGtl
eTsKKyAgICAgICAgcmV0dXJuIGtleTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQ
T0RUeXBlLCB0eXBlbmFtZSBQT0RUeXBlQ3JlYXRvcj4KK2NsYXNzIEpTU1ZHUE9EVHlwZVdyYXBw
ZXJDYWNoZQoreworcHVibGljOgorICAgIHR5cGVkZWYgUE9EVHlwZSAoUE9EVHlwZUNyZWF0b3I6
OipHZXR0ZXJNZXRob2QpKCkgY29uc3Q7IAorICAgIHR5cGVkZWYgdm9pZCAoUE9EVHlwZUNyZWF0
b3I6OipTZXR0ZXJNZXRob2QpKFBPRFR5cGUpOworCisgICAgdHlwZWRlZiBIYXNoTWFwPFBPRFR5
cGVSZWFkV3JpdGVIYXNoSW5mbzxQT0RUeXBlLCBQT0RUeXBlQ3JlYXRvcj4sIEpTU1ZHUE9EVHlw
ZVdyYXBwZXJDcmVhdG9yUmVhZFdyaXRlPFBPRFR5cGUsIFBPRFR5cGVDcmVhdG9yPiosIFBPRFR5
cGVSZWFkV3JpdGVIYXNoSW5mb0hhc2g8UE9EVHlwZSwgUE9EVHlwZUNyZWF0b3I+LCBQT0RUeXBl
UmVhZFdyaXRlSGFzaEluZm9UcmFpdHM8UE9EVHlwZSwgUE9EVHlwZUNyZWF0b3I+ID4gUmVhZFdy
aXRlSGFzaE1hcDsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIFJlYWRXcml0ZUhhc2hNYXA6OmNvbnN0
X2l0ZXJhdG9yIFJlYWRXcml0ZUhhc2hNYXBJdGVyYXRvcjsKKworICAgIHN0YXRpYyBSZWFkV3Jp
dGVIYXNoTWFwJiByZWFkV3JpdGVIYXNoTWFwKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBSZWFk
V3JpdGVIYXNoTWFwIF9yZWFkV3JpdGVIYXNoTWFwOworICAgICAgICByZXR1cm4gX3JlYWRXcml0
ZUhhc2hNYXA7CisgICAgfQorCisgICAgLy8gVXNlZCBmb3IgcmVhZHdyaXRlIGF0dHJpYnV0ZXMg
b25seQorICAgIHN0YXRpYyBKU1NWR1BPRFR5cGVXcmFwcGVyPFBPRFR5cGU+KiBsb29rdXBPckNy
ZWF0ZVdyYXBwZXIoUE9EVHlwZUNyZWF0b3IqIGNyZWF0b3IsIEdldHRlck1ldGhvZCBnZXR0ZXIs
IFNldHRlck1ldGhvZCBzZXR0ZXIpCisgICAgeworICAgICAgICBQT0RUeXBlUmVhZFdyaXRlSGFz
aEluZm88UE9EVHlwZSwgUE9EVHlwZUNyZWF0b3I+IGluZm8oY3JlYXRvciwgZ2V0dGVyLCBzZXR0
ZXIpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlNFVFRJTkcgVVAgSEFTSElORyBGT1IgQ1JF
QVRPUj0lcFxuIiwgY3JlYXRvcik7CisKKyAgICAgICAgaWYgKHJlYWRXcml0ZUhhc2hNYXAoKS5j
b250YWlucyhpbmZvKSkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGT1VORCFcbiIp
OworICAgICAgICAgICAgcmV0dXJuIHJlYWRXcml0ZUhhc2hNYXAoKS5nZXQoaW5mbyk7CisgICAg
ICAgIH0KKyAgICAgICAgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JSZWFkV3JpdGU8UE9EVHlw
ZSwgUE9EVHlwZUNyZWF0b3I+KiB3cmFwcGVyID0gbmV3IEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVh
dG9yUmVhZFdyaXRlPFBPRFR5cGUsIFBPRFR5cGVDcmVhdG9yPihjcmVhdG9yLCBnZXR0ZXIsIHNl
dHRlcik7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ0FDSElORyAtPiAlcFxuIiwgd3JhcHBl
cik7CisgICAgICAgIHJlYWRXcml0ZUhhc2hNYXAoKS5zZXQoaW5mbywgd3JhcHBlcik7CisgICAg
ICAgIHJldHVybiB3cmFwcGVyOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGZvcmdldFdyYXBw
ZXIoSlNTVkdQT0RUeXBlV3JhcHBlcjxQT0RUeXBlPiogd3JhcHBlcikKKyAgICB7CisgICAgICAg
IGZwcmludGYoc3RkZXJyLCAiRk9SR0VUIFdSQVBQRVI9JXBcbiIsIHdyYXBwZXIpOworICAgICAg
ICBSZWFkV3JpdGVIYXNoTWFwJiBtYXAocmVhZFdyaXRlSGFzaE1hcCgpKTsKKyAgICAgICAgUmVh
ZFdyaXRlSGFzaE1hcEl0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7CisgICAgICAgIFJlYWRXcml0
ZUhhc2hNYXBJdGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7CisKKyAgICAgICAgVmVjdG9yPFBPRFR5
cGVSZWFkV3JpdGVIYXNoSW5mbzxQT0RUeXBlLCBQT0RUeXBlQ3JlYXRvcj4gPiB0b0JlUmVtb3Zl
ZDsKKyAgICAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaWYgKGl0
LT5zZWNvbmQgIT0gd3JhcHBlcikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICAgICAgdG9CZVJlbW92ZWQuYXBwZW5kKGl0LT5maXJzdCk7CisgICAgICAgIH0KKworICAgICAg
ICB0eXBlbmFtZSBWZWN0b3I8UE9EVHlwZVJlYWRXcml0ZUhhc2hJbmZvPFBPRFR5cGUsIFBPRFR5
cGVDcmVhdG9yPiA+OjppdGVyYXRvciBpdFNldCA9IHRvQmVSZW1vdmVkLmJlZ2luKCk7CisgICAg
ICAgIHR5cGVuYW1lIFZlY3RvcjxQT0RUeXBlUmVhZFdyaXRlSGFzaEluZm88UE9EVHlwZSwgUE9E
VHlwZUNyZWF0b3I+ID46Oml0ZXJhdG9yIGVuZFNldCA9IHRvQmVSZW1vdmVkLmVuZCgpOworICAg
IAorICAgICAgICBmb3IgKDsgaXRTZXQgIT0gZW5kU2V0OyArK2l0U2V0KQorICAgICAgICAgICAg
bWFwLnJlbW92ZSgqaXRTZXQpOworICAgIH0KK307CisKIH07CiAKICNlbmRpZiAvLyBFTkFCTEUo
U1ZHKQpJbmRleDogYmluZGluZ3MvanMvSlNTVkdQb2ludExpc3RDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGJpbmRpbmdzL2pzL0pTU1ZHUG9pbnRMaXN0Q3VzdG9tLmNwcAkocmV2aXNpb24gMjM1
MDQpCisrKyBiaW5kaW5ncy9qcy9KU1NWR1BvaW50TGlzdEN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE2MCw3ICsxNjAsNyBAQCBKU1ZhbHVlKiBKU1NWR1BvaW50TGlzdDo6cmVtb3ZlSXRl
bShFeGVjCiAgICAgU1ZHTGlzdDxSZWZQdHI8U1ZHUE9ETGlzdEl0ZW08RmxvYXRQb2ludD4gPiA+
KiBsaXN0SW1wID0gaW1wOwogCiAgICAgUmVmUHRyPFNWR1BPRExpc3RJdGVtPEZsb2F0UG9pbnQ+
ID4gbGlzdEl0ZW0obGlzdEltcC0+cmVtb3ZlSXRlbShpbmRleCwgZWMpKTsKLSAgICBKU1NWR1BP
RFR5cGVXcmFwcGVyPEZsb2F0UG9pbnQ+KiBvYmogPSBuZXcgSlNTVkdQT0RUeXBlV3JhcHBlcjxG
bG9hdFBvaW50PigoRmxvYXRQb2ludCYpICpsaXN0SXRlbS5nZXQoKSk7CisgICAgSlNTVkdQT0RU
eXBlV3JhcHBlcjxGbG9hdFBvaW50Piogb2JqID0gbmV3IEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVh
dG9yUmVhZE9ubHk8RmxvYXRQb2ludD4oKmxpc3RJdGVtLmdldCgpKTsKIAogICAgIEtKUzo6SlNW
YWx1ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBvYmopOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVj
LCBlYyk7CkluZGV4OiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjM1
MDQpCisrKyBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5
KQpAQCAtNzQ0LDcgKzc0NCwyMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4gICAgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpm
b3JnZXRHZW5lcmljQ29udGV4dDwkY29udGV4dEludGVyZmFjZU5hbWU+KG1faW1wbC5nZXQoKSk7
XG4iKTsgICAKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFNjcmlwdEludGVy
cHJldGVyOjpmb3JnZXRET01PYmplY3QobV9pbXBsLmdldCgpKTtcbn1cblxuIik7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiAgICBTY3JpcHRJ
bnRlcnByZXRlcjo6Zm9yZ2V0RE9NT2JqZWN0KG1faW1wbC5nZXQoKSk7XG59XG5cbiIpOworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKworICAgICAgICAgICAgaWYgKCRw
b2RUeXBlKSB7CisgICAgICAgICAgICAgICAgbXkgJGFuaW1hdGVkVHlwZSA9ICRpbXBsQ2xhc3NO
YW1lOworICAgICAgICAgICAgICAgICRhbmltYXRlZFR5cGUgPX4gcy9TVkcvU1ZHQW5pbWF0ZWQv
OworCisgICAgICAgICAgICAgICAgIyBTcGVjaWFsIGNhc2UgZm9yIEpTU1ZHTnVtYmVyCisgICAg
ICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkYW5pbWF0
ZWRUeXBlKSBhbmQgJHBvZFR5cGUgbmUgImRvdWJsZSIpIHsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNTVkdQT0RUeXBlV3JhcHBlckNhY2hlPCRwb2RUeXBl
LCAkYW5pbWF0ZWRUeXBlPjo6Zm9yZ2V0V3JhcHBlcihtX2ltcGwuZ2V0KCkpO1xuIik7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBTY3JpcHRJbnRlcnByZXRlcjo6Zm9yZ2V0RE9NT2JqZWN0KG1faW1wbC5nZXQo
KSk7Iik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxufVxuXG4iKTsgICAgCiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTgxNCw3ICs4MjcsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTVmFsdWUqICR7Y2xhc3NOYW1l
fTo6Z2V0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGludCB0b2tlbikgY29uc3Rcbntc
biIpOwogCiAgICAgICAgIGlmICgkcG9kVHlwZSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgJHBvZFR5cGUmIGltcCgqaW1wbCgpKTtcblxuIik7CisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAkcG9kVHlwZSBpbXAoKmltcGwoKSk7XG5cbiIpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGltcGxD
bGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oaW1wbCgpKTtcblxu
Iik7CiAgICAgICAgIH0KQEAgLTkxMSw3ICs5MjQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKIAogICAgICAgICAg
ICAgaWYgKCRwb2RUeXBlKSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgJHBvZFR5cGUmIGltcCgqaW1wbCgpKTtcblxuIik7CisgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgJHBvZFR5cGUgaW1wKCppbXBsKCkpO1xuXG4iKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGlt
cGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oaW1wbCgpKTtc
blxuIik7CiAgICAgICAgICAgICB9CkBAIC05NDQsNyArOTU3LDcgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgaW1w
LnNldCIgLiBXS191Y2ZpcnN0KCRuYW1lKSAuICIoIiAuIEpTVmFsdWVUb05hdGl2ZSgkYXR0cmli
dXRlLT5zaWduYXR1cmUsICJ2YWx1ZSIpIC4gIik7XG4iKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIG1faW1wbC0+Y29tbWl0Q2hhbmdlKGV4ZWMpO1xuIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIG1faW1wbC0+Y29tbWl0
Q2hhbmdlKGV4ZWMsIGltcCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIikgaWYgQHskYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRp
b25zfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgaW1wLT5zZXQiIC4gV0tfdWNmaXJzdCgkbmFtZSkgLiAiKCIgLiBKU1ZhbHVlVG9OYXRp
dmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUiKSk7CkBAIC05OTMsNyArMTAwNiw3IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgaWYgKCRwb2RUeXBlKSB7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1NWR1BPRFR5cGVXcmFwcGVyPCRw
b2RUeXBlPiogd3JhcHBlciA9IHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2JqKS0+aW1w
bCgpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkcG9kVHlwZSYg
aW1wKCp3cmFwcGVyKTtcblxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAkcG9kVHlwZSBpbXAoKndyYXBwZXIpO1xuXG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSBzdGF0
aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPih0aGlzT2Jq
KS0+aW1wbCgpKTtcblxuIik7CiAgICAgICAgIH0KQEAgLTExNTgsMTIgKzExNzEsMTIgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwoKQogICAgIGlmICgkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+dHlwZSBlcSAidm9pZCIpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICRpbmRlbnQgLiAiJGZ1bmN0aW9uU3RyaW5nO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAkaW5kZW50IC4gInNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKSBpZiBAeyRmdW5j
dGlvbi0+cmFpc2VzRXhjZXB0aW9uc307Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5k
ZW50IC4gIndyYXBwZXItPmNvbW1pdENoYW5nZShleGVjKTtcbiIpIGlmICRwb2RUeXBlOworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJ3cmFwcGVyLT5jb21taXRDaGFuZ2Uo
ZXhlYywgaW1wKTtcbiIpIGlmICRwb2RUeXBlOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
JGluZGVudCAuICJyZXR1cm4ganNVbmRlZmluZWQoKTtcbiIpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iIC4gJGluZGVudCAuICJLSlM6OkpTVmFsdWUqIHJl
c3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUsICIiLCAkZnVu
Y3Rpb25TdHJpbmcpIC4gIjtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVu
dCAuICJzZXRET01FeGNlcHRpb24oZXhlYywgZWMpO1xuIikgaWYgQHskZnVuY3Rpb24tPnJhaXNl
c0V4Y2VwdGlvbnN9OwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJ3cmFw
cGVyLT5jb21taXRDaGFuZ2UoZXhlYyk7XG4iKSBpZiAkcG9kVHlwZTsKKyAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICRpbmRlbnQgLiAid3JhcHBlci0+Y29tbWl0Q2hhbmdlKGV4ZWMsIGltcCk7
XG4iKSBpZiAkcG9kVHlwZTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAi
cmV0dXJuIHJlc3VsdDtcbiIpOwogICAgIH0KIH0KQEAgLTEzNjMsOSArMTM3Niw5IEBAIHN1YiBO
YXRpdmVUb0pTVmFsdWUKICAgICAgICAgbXkgJHNldHRlciA9ICJzZXQiIC4gV0tfdWNmaXJzdCgk
Z2V0dGVyKTsKIAogICAgICAgICBpZiAoJGltcGxDbGFzc05hbWUgZXEgIiIpIHsKLSAgICAgICAg
ICAgIHJldHVybiAidG9KUyhleGVjLCBuZXcgSlNTVkdQT0RUeXBlV3JhcHBlcjwkbmF0aXZlVHlw
ZT4oJHZhbHVlKSkiOworICAgICAgICAgICAgcmV0dXJuICJ0b0pTKGV4ZWMsIG5ldyBKU1NWR1BP
RFR5cGVXcmFwcGVyQ3JlYXRvclJlYWRPbmx5PCRuYXRpdmVUeXBlPigkdmFsdWUpKSI7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gInRvSlMoZXhlYywgbmV3IEpTU1ZHUE9E
VHlwZVdyYXBwZXJDcmVhdG9yPCRuYXRpdmVUeXBlLCAkaW1wbENsYXNzTmFtZT4oaW1wLCAmJHtp
bXBsQ2xhc3NOYW1lfTo6JGdldHRlciwgJiR7aW1wbENsYXNzTmFtZX06OiRzZXR0ZXIpKSI7Cisg
ICAgICAgICAgICByZXR1cm4gInRvSlMoZXhlYywgSlNTVkdQT0RUeXBlV3JhcHBlckNhY2hlPCRu
YXRpdmVUeXBlLCAkaW1wbENsYXNzTmFtZT46Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcihpbXAsICYk
e2ltcGxDbGFzc05hbWV9OjokZ2V0dGVyLCAmJHtpbXBsQ2xhc3NOYW1lfTo6JHNldHRlcikpIjsK
ICAgICAgICAgfQogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15034</attachid>
            <date>2007-06-14 15:24:31 -0700</date>
            <delta_ts>2007-06-14 17:05:12 -0700</delta_ts>
            <desc>Final patch</desc>
            <filename>FixInvaders.diff</filename>
            <type>text/plain</type>
            <size>19410</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIzNTM5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMDctMDYt
MTUgIE5pa29sYXMgWmltbWVybWFubiAgPHppbW1lcm1hbm5Aa2RlLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljLgorCisgICAgICAgIEZpeGVzOiBodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzk2MworCisgICAgICAgIEZpeCBTVkcgc3BhY2UgaW52YWRlcnMu
IEl0IGFjdHVhbGx5IGhpZ2hsaWdodGVkIGEgYmFkIHByb2JsZW0gd2l0aCBvdXIgSlNTVkdQT0RU
eXBlV3JhcHBlcidzLgorICAgICAgICBJbnRyb2R1Y2UgYSBuZXcgIjJuZC1sZXZlbCBjYWNoZSIg
Zm9yIGFsbCByZWFkd3JpdGUgUE9EIHByb3BlcnRpZXMuIFN1YnNlcXVlbnQgY2FsbHMgdG8gaWUu
CisgICAgICAgIG15UmVjdC54LmJhc2VWYWwudmFsdWUgZG9uJ3QgY3JlYXRlIGEgbmV3IHdyYXBw
ZXIgZXZlcnl0aW1lLCBidXQgYXJlIHByb3Blcmx5IGNhY2hlZCBub3cuCisgICAgICAgIFRoaXMg
bGVhZHMgdG8gYSBtYXNzaXZlIHJlZHVjdGlvbiBpbiBjcmVhdGVkIHdyYXBwZXJzLgorCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNTVkdNYXRyaXg6OmludmVyc2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdNYXRyaXg6
OnJvdGF0ZUZyb21WZWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1ZHUE9EVHlwZVdy
YXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yUmVh
ZFdyaXRlOjpKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvclJlYWRXcml0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvclJlYWRXcml0ZTo6fkpTU1ZHUE9EVHlw
ZVdyYXBwZXJDcmVhdG9yUmVhZFdyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHUE9EVHlw
ZVdyYXBwZXJDcmVhdG9yUmVhZFdyaXRlOjpvcGVyYXRvciBQT0RUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yUmVhZFdyaXRlOjpjb21taXRDaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JSZWFkT25seTo6
SlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JSZWFkT25seSk6CisgICAgICAgIChXZWJDb3JlOjpK
U1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvclJlYWRPbmx5Ojp+SlNTVkdQT0RUeXBlV3JhcHBlckNy
ZWF0b3JSZWFkT25seSk6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR1BPRFR5cGVXcmFwcGVyQ3Jl
YXRvclJlYWRPbmx5OjpvcGVyYXRvciBQT0RUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZH
UE9EVHlwZVdyYXBwZXJDcmVhdG9yUmVhZE9ubHk6OmNvbW1pdENoYW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q6OkpTU1ZHUE9EVHlwZVdy
YXBwZXJDcmVhdG9yRm9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR1BPRFR5cGVXcmFw
cGVyQ3JlYXRvckZvckxpc3Q6OmNvbW1pdENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpQT0RU
eXBlUmVhZFdyaXRlSGFzaEluZm86OlBPRFR5cGVSZWFkV3JpdGVIYXNoSW5mbyk6CisgICAgICAg
IChXZWJDb3JlOjpQT0RUeXBlUmVhZFdyaXRlSGFzaEluZm86Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoV2ViQ29yZTo6UE9EVHlwZVJlYWRXcml0ZUhhc2hJbmZvSGFzaDo6aGFzaCk6CisgICAgICAg
IChXZWJDb3JlOjpQT0RUeXBlUmVhZFdyaXRlSGFzaEluZm9IYXNoOjplcXVhbCk6CisgICAgICAg
IChXZWJDb3JlOjpQT0RUeXBlUmVhZFdyaXRlSGFzaEluZm9UcmFpdHM6OmRlbGV0ZWRWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQT0RUeXBlUmVhZFdyaXRlSGFzaEluZm9UcmFpdHM6OmVtcHR5
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdQT0RUeXBlV3JhcHBlckNhY2hlOjpyZWFk
V3JpdGVIYXNoTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHUE9EVHlwZVdyYXBwZXJDYWNo
ZTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHUE9EVHlw
ZVdyYXBwZXJDYWNoZTo6Zm9yZ2V0V3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNT
VkdQb2ludExpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdQb2ludExpc3Q6
OnJlbW92ZUl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorCiAyMDA3LTA2LTE0ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBOaWtvLgpJbmRleDogYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL2pzL0pTU1ZHTWF0cml4Q3VzdG9tLmNwcAko
cmV2aXNpb24gMjM1MzQpCisrKyBiaW5kaW5ncy9qcy9KU1NWR01hdHJpeEN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1Zh
bHVlKiBKU1NWR01hdHJpeDo6aW52ZXJzZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IExpc3QmKQog
ewotICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW1wKCppbXBsKCkpOwotICAgIEtKUzo6SlNW
YWx1ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBuZXcgSlNTVkdQT0RUeXBlV3JhcHBlcjxBZmZpbmVU
cmFuc2Zvcm0+KGltcC5pbnZlcnNlKCkpKTsKKyAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0gaW1w
KCppbXBsKCkpOworICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBuZXcgSlNT
VkdQT0RUeXBlV3JhcHBlckNyZWF0b3JSZWFkT25seTxBZmZpbmVUcmFuc2Zvcm0+KGltcC5pbnZl
cnNlKCkpKTsKIAogICAgIGlmICghaW1wLmlzSW52ZXJ0aWJsZSgpKQogICAgICAgICBzZXRET01F
eGNlcHRpb24oZXhlYywgU1ZHX01BVFJJWF9OT1RfSU5WRVJUQUJMRSk7CkBAIC00MywxMiArNDMs
MTIgQEAgSlNWYWx1ZSogSlNTVkdNYXRyaXg6OmludmVyc2UoRXhlY1N0YXRlKgogCiBKU1ZhbHVl
KiBKU1NWR01hdHJpeDo6cm90YXRlRnJvbVZlY3RvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IExp
c3QmIGFyZ3MpCiB7Ci0gICAgQWZmaW5lVHJhbnNmb3JtJiBpbXAoKmltcGwoKSk7CisgICAgQWZm
aW5lVHJhbnNmb3JtIGltcCgqaW1wbCgpKTsKICAKICAgICBmbG9hdCB4ID0gYXJnc1swXS0+dG9O
dW1iZXIoZXhlYyk7CiAgICAgZmxvYXQgeSA9IGFyZ3NbMV0tPnRvTnVtYmVyKGV4ZWMpOwogCi0g
ICAgS0pTOjpKU1ZhbHVlKiByZXN1bHQgPSB0b0pTKGV4ZWMsIG5ldyBKU1NWR1BPRFR5cGVXcmFw
cGVyPEFmZmluZVRyYW5zZm9ybT4oaW1wLnJvdGF0ZUZyb21WZWN0b3IoeCwgeSkpKTsKKyAgICBL
SlM6OkpTVmFsdWUqIHJlc3VsdCA9IHRvSlMoZXhlYywgbmV3IEpTU1ZHUE9EVHlwZVdyYXBwZXJD
cmVhdG9yUmVhZE9ubHk8QWZmaW5lVHJhbnNmb3JtPihpbXAucm90YXRlRnJvbVZlY3Rvcih4LCB5
KSkpOwogCiAgICAgaWYgKHggPT0gMC4wIHx8IHkgPT0gMC4wKQogICAgICAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgU1ZHX0lOVkFMSURfVkFMVUVfRVJSKTsKSW5kZXg6IGJpbmRpbmdzL2pzL0pT
U1ZHUE9EVHlwZVdyYXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9KU1NWR1BPRFR5
cGVXcmFwcGVyLmgJKHJldmlzaW9uIDIzNTM0KQorKysgYmluZGluZ3MvanMvSlNTVkdQT0RUeXBl
V3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiU1ZH
RWxlbWVudC5oIgogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDM5ICs0MSw0NCBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBQT0RUeXBlPgogY2xhc3MgSlNTVkdQT0RUeXBlV3JhcHBlciA6IHB1
YmxpYyBTaGFyZWQ8SlNTVkdQT0RUeXBlV3JhcHBlcjxQT0RUeXBlPiA+CiB7CiBwdWJsaWM6Ci0g
ICAgSlNTVkdQT0RUeXBlV3JhcHBlcihjb25zdCBQT0RUeXBlJiB0eXBlKQotICAgIDogbV9wb2RU
eXBlKHR5cGUpCi0gICAgeyB9Ci0KICAgICB2aXJ0dWFsIH5KU1NWR1BPRFR5cGVXcmFwcGVyKCkg
eyB9CiAKLSAgICBvcGVyYXRvciBQT0RUeXBlJigpIHsgcmV0dXJuIG1fcG9kVHlwZTsgfQotCi0g
ICAgLy8gSW1wbGVtZW50ZWQgYnkgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3IKLSAgICB2aXJ0
dWFsIHZvaWQgY29tbWl0Q2hhbmdlKEtKUzo6RXhlY1N0YXRlKikgeyB9CisgICAgLy8gR2V0dGVy
IHdyYXBwZXIKKyAgICB2aXJ0dWFsIG9wZXJhdG9yIFBPRFR5cGUoKSA9IDA7CiAKLXByaXZhdGU6
Ci0gICAgUE9EVHlwZSBtX3BvZFR5cGU7CisgICAgLy8gU2V0dGVyIHdyYXBwZXIKKyAgICB2aXJ0
dWFsIHZvaWQgY29tbWl0Q2hhbmdlKEtKUzo6RXhlY1N0YXRlKiwgUE9EVHlwZSkgPSAwOwogfTsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgUE9EVHlwZSwgdHlwZW5hbWUgUE9EVHlwZUNyZWF0b3I+Ci1j
bGFzcyBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvciA6IHB1YmxpYyBKU1NWR1BPRFR5cGVXcmFw
cGVyPFBPRFR5cGU+CitjbGFzcyBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvclJlYWRXcml0ZSA6
IHB1YmxpYyBKU1NWR1BPRFR5cGVXcmFwcGVyPFBPRFR5cGU+CiB7CiBwdWJsaWM6Ci0gICAgdHlw
ZWRlZiBQT0RUeXBlIChQT0RUeXBlQ3JlYXRvcjo6KkdldHRlck1ldGhvZCkoKSBjb25zdDsKKyAg
ICB0eXBlZGVmIFBPRFR5cGUgKFBPRFR5cGVDcmVhdG9yOjoqR2V0dGVyTWV0aG9kKSgpIGNvbnN0
OyAKICAgICB0eXBlZGVmIHZvaWQgKFBPRFR5cGVDcmVhdG9yOjoqU2V0dGVyTWV0aG9kKShQT0RU
eXBlKTsKIAotICAgIEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yKFBPRFR5cGVDcmVhdG9yKiBj
cmVhdG9yLCBHZXR0ZXJNZXRob2QgZ2V0dGVyLCBTZXR0ZXJNZXRob2Qgc2V0dGVyKQotICAgIDog
SlNTVkdQT0RUeXBlV3JhcHBlcjxQT0RUeXBlPigoY3JlYXRvci0+KmdldHRlcikoKSkKLSAgICAs
IG1fY3JlYXRvcihjcmVhdG9yKQotICAgICwgbV9zZXR0ZXIoc2V0dGVyKQotICAgIHsgfQorICAg
IEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yUmVhZFdyaXRlKFBPRFR5cGVDcmVhdG9yKiBjcmVh
dG9yLCBHZXR0ZXJNZXRob2QgZ2V0dGVyLCBTZXR0ZXJNZXRob2Qgc2V0dGVyKQorICAgICAgICA6
IG1fY3JlYXRvcihjcmVhdG9yKQorICAgICAgICAsIG1fZ2V0dGVyKGdldHRlcikKKyAgICAgICAg
LCBtX3NldHRlcihzZXR0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY3JlYXRvcik7CisgICAg
ICAgIEFTU0VSVChnZXR0ZXIpOworICAgICAgICBBU1NFUlQoc2V0dGVyKTsKKyAgICB9CiAKLSAg
ICB2aXJ0dWFsIH5KU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvcigpIHsgfQorICAgIHZpcnR1YWwg
fkpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yUmVhZFdyaXRlKCkgeyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0Q2hhbmdlKEtKUzo6RXhlY1N0YXRlKiBleGVjKQorICAgIC8vIEdldHRlciB3
cmFwcGVyCisgICAgdmlydHVhbCBvcGVyYXRvciBQT0RUeXBlKCkgeyByZXR1cm4gKG1fY3JlYXRv
ci5nZXQoKS0+Km1fZ2V0dGVyKSgpOyB9CisKKyAgICAvLyBTZXR0ZXIgd3JhcHBlcgorICAgIHZp
cnR1YWwgdm9pZCBjb21taXRDaGFuZ2UoS0pTOjpFeGVjU3RhdGUqIGV4ZWMsIFBPRFR5cGUgdHlw
ZSkKICAgICB7Ci0gICAgICAgIChtX2NyZWF0b3ItPiptX3NldHRlcikoKFBPRFR5cGUmKSgqdGhp
cykpOworICAgICAgICBpZiAoIW1fc2V0dGVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIChtX2NyZWF0b3IuZ2V0KCktPiptX3NldHRlcikodHlwZSk7CiAKICAgICAgICAgQVNTRVJU
KGV4ZWMgJiYgZXhlYy0+ZHluYW1pY0ludGVycHJldGVyKCkpOwogICAgICAgICBGcmFtZSogYWN0
aXZlRnJhbWUgPSBzdGF0aWNfY2FzdDxLSlM6OlNjcmlwdEludGVycHJldGVyKj4oZXhlYy0+ZHlu
YW1pY0ludGVycHJldGVyKCkpLT5mcmFtZSgpOwpAQCAtODAsOCArODYsOCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgU1ZHRG9jdW1lbnRFeHRlbnNpb25zKiBleHRl
bnNpb25zID0gKGFjdGl2ZUZyYW1lLT5kb2N1bWVudCgpID8gYWN0aXZlRnJhbWUtPmRvY3VtZW50
KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKSA6IDApOwotICAgICAgICBpZiAoZXh0ZW5zaW9ucyAm
JiBleHRlbnNpb25zLT5oYXNHZW5lcmljQ29udGV4dDxQT0RUeXBlQ3JlYXRvcj4obV9jcmVhdG9y
KSkgewotICAgICAgICAgICAgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dCA9IGV4dGVuc2lvbnMt
PmdlbmVyaWNDb250ZXh0PFBPRFR5cGVDcmVhdG9yPihtX2NyZWF0b3IpOworICAgICAgICBpZiAo
ZXh0ZW5zaW9ucyAmJiBleHRlbnNpb25zLT5oYXNHZW5lcmljQ29udGV4dDxQT0RUeXBlQ3JlYXRv
cj4obV9jcmVhdG9yLmdldCgpKSkgeworICAgICAgICAgICAgY29uc3QgU1ZHRWxlbWVudCogY29u
dGV4dCA9IGV4dGVuc2lvbnMtPmdlbmVyaWNDb250ZXh0PFBPRFR5cGVDcmVhdG9yPihtX2NyZWF0
b3IuZ2V0KCkpOwogICAgICAgICAgICAgQVNTRVJUKGNvbnRleHQpOwogCiAgICAgICAgICAgICBj
b250ZXh0LT5ub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsKQEAgLTkwLDQyICs5NiwxODQgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIC8vIFVwZGF0ZSBjYWxsYmFja3MKLSAgICBQT0RUeXBlQ3Jl
YXRvciogbV9jcmVhdG9yOworICAgIFJlZlB0cjxQT0RUeXBlQ3JlYXRvcj4gbV9jcmVhdG9yOwor
ICAgIEdldHRlck1ldGhvZCBtX2dldHRlcjsKICAgICBTZXR0ZXJNZXRob2QgbV9zZXR0ZXI7CiB9
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQT0RUeXBlPgorY2xhc3MgSlNTVkdQT0RUeXBlV3JhcHBl
ckNyZWF0b3JSZWFkT25seSA6IHB1YmxpYyBKU1NWR1BPRFR5cGVXcmFwcGVyPFBPRFR5cGU+Cit7
CitwdWJsaWM6CisgICAgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JSZWFkT25seShQT0RUeXBl
IHR5cGUpCisgICAgICAgIDogbV9wb2RUeXBlKHR5cGUpCisgICAgeyB9CisKKyAgICB2aXJ0dWFs
IH5KU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvclJlYWRPbmx5KCkgeyB9CisKKyAgICAvLyBHZXR0
ZXIgd3JhcHBlcgorICAgIHZpcnR1YWwgb3BlcmF0b3IgUE9EVHlwZSgpIHsgcmV0dXJuIG1fcG9k
VHlwZTsgfQorCisgICAgLy8gU2V0dGVyIHdyYXBwZXIKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0
Q2hhbmdlKEtKUzo6RXhlY1N0YXRlKiwgUE9EVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgbV9w
b2RUeXBlID0gdHlwZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUE9EVHlwZSBtX3BvZFR5cGU7
Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQT0RUeXBlPgogY2xhc3MgU1ZHUE9ETGlzdEl0ZW07
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFBPRFR5cGUsIHR5cGVuYW1lIExpc3RUeXBlPgotY2xhc3Mg
SlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0IDogcHVibGljIEpTU1ZHUE9EVHlwZVdy
YXBwZXJDcmVhdG9yPFBPRFR5cGUsIFNWR1BPRExpc3RJdGVtPFBPRFR5cGU+ID4KK2NsYXNzIEpT
U1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlzdCA6IHB1YmxpYyBKU1NWR1BPRFR5cGVXcmFw
cGVyQ3JlYXRvclJlYWRXcml0ZTxQT0RUeXBlLCBTVkdQT0RMaXN0SXRlbTxQT0RUeXBlPiA+CiB7
CiBwdWJsaWM6CiAgICAgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0KFNWR1BPRExp
c3RJdGVtPFBPRFR5cGU+KiBjcmVhdG9yLCBjb25zdCBMaXN0VHlwZSogbGlzdCkKLSAgICA6IEpT
U1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yPFBPRFR5cGUsIFNWR1BPRExpc3RJdGVtPFBPRFR5cGU+
ID4oY3JlYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJlNWR1BPRExpc3RJdGVtPFBPRFR5cGU+Ojp2YWx1ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJlNWR1BPRExpc3RJdGVtPFBPRFR5cGU+OjpzZXRWYWx1ZSkKLSAgICAsIG1f
bGlzdChsaXN0KQorICAgICAgICA6IEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yUmVhZFdyaXRl
PFBPRFR5cGUsIFNWR1BPRExpc3RJdGVtPFBPRFR5cGU+ID4oY3JlYXRvciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZTVkdQT0RMaXN0SXRlbTxQT0RUeXBlPjo6dmFsdWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU1ZH
UE9ETGlzdEl0ZW08UE9EVHlwZT46OnNldFZhbHVlKQorICAgICAgICAsIG1fbGlzdChsaXN0KQog
ICAgIHsgfQogCiAgICAgdmlydHVhbCB+SlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0
KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q2hhbmdlKEtKUzo6RXhlY1N0YXRlKiBl
eGVjKQorICAgIHZpcnR1YWwgdm9pZCBjb21taXRDaGFuZ2UoS0pTOjpFeGVjU3RhdGUqIGV4ZWMs
IFBPRFR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIC8vIFVwZGF0ZSBQT0QgaXRlbSB3aXRoaW4g
U1ZHTGlzdAotICAgICAgICBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvcjxQT0RUeXBlLCBTVkdQ
T0RMaXN0SXRlbTxQT0RUeXBlPiA+Ojpjb21taXRDaGFuZ2UoZXhlYyk7CisgICAgICAgIEpTU1ZH
UE9EVHlwZVdyYXBwZXJDcmVhdG9yUmVhZFdyaXRlPFBPRFR5cGUsIFNWR1BPRExpc3RJdGVtPFBP
RFR5cGU+ID46OmNvbW1pdENoYW5nZShleGVjLCB0eXBlKTsKIAogICAgICAgICAvLyBOb3RpZnkg
b3duZXIgb2YgdGhlIGxpc3QsIHRoYXQgaXQncyBjb250ZW50IGNoYW5nZWQKICAgICAgICAgY29u
c3QgU1ZHRWxlbWVudCogY29udGV4dCA9IG1fbGlzdC0+Y29udGV4dCgpOwogICAgICAgICBBU1NF
UlQoY29udGV4dCk7CiAKLSAgICAgICAgY29udGV4dC0+bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7
ICAgICAgICAgCisgICAgICAgIGNvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOwogICAg
IH0KIAogcHJpdmF0ZToKICAgICBjb25zdCBMaXN0VHlwZSogbV9saXN0OwogfTsKIAorLy8gQ2Fj
aGluZyBmYWNpbGl0aWVzCit0ZW1wbGF0ZTx0eXBlbmFtZSBQT0RUeXBlLCB0eXBlbmFtZSBQT0RU
eXBlQ3JlYXRvcj4KK3N0cnVjdCBQT0RUeXBlUmVhZFdyaXRlSGFzaEluZm8geworICAgIHR5cGVk
ZWYgUE9EVHlwZSAoUE9EVHlwZUNyZWF0b3I6OipHZXR0ZXJNZXRob2QpKCkgY29uc3Q7IAorICAg
IHR5cGVkZWYgdm9pZCAoUE9EVHlwZUNyZWF0b3I6OipTZXR0ZXJNZXRob2QpKFBPRFR5cGUpOwor
CisgICAgLy8gRW1wdHkgdmFsdWUKKyAgICBQT0RUeXBlUmVhZFdyaXRlSGFzaEluZm8oKQorICAg
ICAgICA6IGNyZWF0b3IoMCkKKyAgICAgICAgLCBnZXR0ZXIoMCkKKyAgICAgICAgLCBzZXR0ZXIo
MCkKKyAgICB7IH0KKworICAgIC8vIERlbGV0ZWQgdmFsdWUKKyAgICBleHBsaWNpdCBQT0RUeXBl
UmVhZFdyaXRlSGFzaEluZm8oYm9vbCkKKyAgICAgICAgOiBjcmVhdG9yKHJlaW50ZXJwcmV0X2Nh
c3Q8UE9EVHlwZUNyZWF0b3IqPigtMSkpCisgICAgICAgICwgZ2V0dGVyKDApCisgICAgICAgICwg
c2V0dGVyKDApCisgICAgeyB9CisKKyAgICBQT0RUeXBlUmVhZFdyaXRlSGFzaEluZm8oUE9EVHlw
ZUNyZWF0b3IqIF9jcmVhdG9yLCBHZXR0ZXJNZXRob2QgX2dldHRlciwgU2V0dGVyTWV0aG9kIF9z
ZXR0ZXIpCisgICAgICAgIDogY3JlYXRvcihfY3JlYXRvcikKKyAgICAgICAgLCBnZXR0ZXIoX2dl
dHRlcikKKyAgICAgICAgLCBzZXR0ZXIoX3NldHRlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChj
cmVhdG9yKTsKKyAgICAgICAgQVNTRVJUKGdldHRlcik7CisgICAgfQorCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFBPRFR5cGVSZWFkV3JpdGVIYXNoSW5mbyYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gY3JlYXRvciA9PSBvdGhlci5jcmVhdG9yICYmIGdldHRlciA9PSBv
dGhlci5nZXR0ZXIgJiYgc2V0dGVyID09IG90aGVyLnNldHRlcjsKKyAgICB9CisKKyAgICBQT0RU
eXBlQ3JlYXRvciogY3JlYXRvcjsKKyAgICBHZXR0ZXJNZXRob2QgZ2V0dGVyOworICAgIFNldHRl
ck1ldGhvZCBzZXR0ZXI7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQT0RUeXBlLCB0eXBlbmFt
ZSBQT0RUeXBlQ3JlYXRvcj4KK3N0cnVjdCBQT0RUeXBlUmVhZFdyaXRlSGFzaEluZm9IYXNoIHsK
KyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBQT0RUeXBlUmVhZFdyaXRlSGFzaEluZm88
UE9EVHlwZSwgUE9EVHlwZUNyZWF0b3I+JiBpbmZvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0
cmluZ0ltcGw6OmNvbXB1dGVIYXNoKChVQ2hhciopICZpbmZvLCBzaXplb2YoUE9EVHlwZVJlYWRX
cml0ZUhhc2hJbmZvPFBPRFR5cGUsIFBPRFR5cGVDcmVhdG9yPikgLyBzaXplb2YoVUNoYXIpKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBQT0RUeXBlUmVhZFdyaXRlSGFz
aEluZm88UE9EVHlwZSwgUE9EVHlwZUNyZWF0b3I+JiBhLCBjb25zdCBQT0RUeXBlUmVhZFdyaXRl
SGFzaEluZm88UE9EVHlwZSwgUE9EVHlwZUNyZWF0b3I+JiBiKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGEgPT0gYjsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQT0RUeXBlLCB0eXBl
bmFtZSBQT0RUeXBlQ3JlYXRvcj4KK3N0cnVjdCBQT0RUeXBlUmVhZFdyaXRlSGFzaEluZm9UcmFp
dHMgOiBXVEY6OkdlbmVyaWNIYXNoVHJhaXRzPFBPRFR5cGVSZWFkV3JpdGVIYXNoSW5mbzxQT0RU
eXBlLCBQT0RUeXBlQ3JlYXRvcj4gPiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1
ZUlzWmVybyA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9
IGZhbHNlOworCisgICAgc3RhdGljIGNvbnN0IFBPRFR5cGVSZWFkV3JpdGVIYXNoSW5mbzxQT0RU
eXBlLCBQT0RUeXBlQ3JlYXRvcj4mIGRlbGV0ZWRWYWx1ZSgpCisgICAgeworICAgICAgICBzdGF0
aWMgUE9EVHlwZVJlYWRXcml0ZUhhc2hJbmZvPFBPRFR5cGUsIFBPRFR5cGVDcmVhdG9yPiBrZXko
dHJ1ZSk7CisgICAgICAgIHJldHVybiBrZXk7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IFBP
RFR5cGVSZWFkV3JpdGVIYXNoSW5mbzxQT0RUeXBlLCBQT0RUeXBlQ3JlYXRvcj4mIGVtcHR5VmFs
dWUoKQorICAgIHsKKyAgICAgICAgc3RhdGljIFBPRFR5cGVSZWFkV3JpdGVIYXNoSW5mbzxQT0RU
eXBlLCBQT0RUeXBlQ3JlYXRvcj4ga2V5OworICAgICAgICByZXR1cm4ga2V5OworICAgIH0KK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFBPRFR5cGUsIHR5cGVuYW1lIFBPRFR5cGVDcmVhdG9yPgor
Y2xhc3MgSlNTVkdQT0RUeXBlV3JhcHBlckNhY2hlCit7CitwdWJsaWM6CisgICAgdHlwZWRlZiBQ
T0RUeXBlIChQT0RUeXBlQ3JlYXRvcjo6KkdldHRlck1ldGhvZCkoKSBjb25zdDsgCisgICAgdHlw
ZWRlZiB2b2lkIChQT0RUeXBlQ3JlYXRvcjo6KlNldHRlck1ldGhvZCkoUE9EVHlwZSk7CisKKyAg
ICB0eXBlZGVmIEhhc2hNYXA8UE9EVHlwZVJlYWRXcml0ZUhhc2hJbmZvPFBPRFR5cGUsIFBPRFR5
cGVDcmVhdG9yPiwgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JSZWFkV3JpdGU8UE9EVHlwZSwg
UE9EVHlwZUNyZWF0b3I+KiwgUE9EVHlwZVJlYWRXcml0ZUhhc2hJbmZvSGFzaDxQT0RUeXBlLCBQ
T0RUeXBlQ3JlYXRvcj4sIFBPRFR5cGVSZWFkV3JpdGVIYXNoSW5mb1RyYWl0czxQT0RUeXBlLCBQ
T0RUeXBlQ3JlYXRvcj4gPiBSZWFkV3JpdGVIYXNoTWFwOworICAgIHR5cGVkZWYgdHlwZW5hbWUg
UmVhZFdyaXRlSGFzaE1hcDo6Y29uc3RfaXRlcmF0b3IgUmVhZFdyaXRlSGFzaE1hcEl0ZXJhdG9y
OworCisgICAgc3RhdGljIFJlYWRXcml0ZUhhc2hNYXAmIHJlYWRXcml0ZUhhc2hNYXAoKQorICAg
IHsKKyAgICAgICAgc3RhdGljIFJlYWRXcml0ZUhhc2hNYXAgX3JlYWRXcml0ZUhhc2hNYXA7Cisg
ICAgICAgIHJldHVybiBfcmVhZFdyaXRlSGFzaE1hcDsKKyAgICB9CisKKyAgICAvLyBVc2VkIGZv
ciByZWFkd3JpdGUgYXR0cmlidXRlcyBvbmx5CisgICAgc3RhdGljIEpTU1ZHUE9EVHlwZVdyYXBw
ZXI8UE9EVHlwZT4qIGxvb2t1cE9yQ3JlYXRlV3JhcHBlcihQT0RUeXBlQ3JlYXRvciogY3JlYXRv
ciwgR2V0dGVyTWV0aG9kIGdldHRlciwgU2V0dGVyTWV0aG9kIHNldHRlcikKKyAgICB7CisgICAg
ICAgIFJlYWRXcml0ZUhhc2hNYXAmIG1hcChyZWFkV3JpdGVIYXNoTWFwKCkpOworICAgICAgICBQ
T0RUeXBlUmVhZFdyaXRlSGFzaEluZm88UE9EVHlwZSwgUE9EVHlwZUNyZWF0b3I+IGluZm8oY3Jl
YXRvciwgZ2V0dGVyLCBzZXR0ZXIpOworCisgICAgICAgIGlmIChtYXAuY29udGFpbnMoaW5mbykp
CisgICAgICAgICAgICByZXR1cm4gbWFwLmdldChpbmZvKTsKKworICAgICAgICBKU1NWR1BPRFR5
cGVXcmFwcGVyQ3JlYXRvclJlYWRXcml0ZTxQT0RUeXBlLCBQT0RUeXBlQ3JlYXRvcj4qIHdyYXBw
ZXIgPSBuZXcgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JSZWFkV3JpdGU8UE9EVHlwZSwgUE9E
VHlwZUNyZWF0b3I+KGNyZWF0b3IsIGdldHRlciwgc2V0dGVyKTsKKyAgICAgICAgbWFwLnNldChp
bmZvLCB3cmFwcGVyKTsKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgfQorCisgICAgc3Rh
dGljIHZvaWQgZm9yZ2V0V3JhcHBlcihKU1NWR1BPRFR5cGVXcmFwcGVyPFBPRFR5cGU+KiB3cmFw
cGVyKQorICAgIHsKKyAgICAgICAgUmVhZFdyaXRlSGFzaE1hcCYgbWFwKHJlYWRXcml0ZUhhc2hN
YXAoKSk7CisKKyAgICAgICAgUmVhZFdyaXRlSGFzaE1hcEl0ZXJhdG9yIGl0ID0gbWFwLmJlZ2lu
KCk7CisgICAgICAgIFJlYWRXcml0ZUhhc2hNYXBJdGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7CisK
KyAgICAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaWYgKGl0LT5z
ZWNvbmQgIT0gd3JhcHBlcikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgLy8gSXQncyBndWFydWFudGVlZCB0aGF0IHRoZXJlJ3MganVzdCBvbmUgb2JqZWN0IHdlIG5l
ZWQgdG8gdGFrZSBjYXJlIG9mLgorICAgICAgICAgICAgbWFwLnJlbW92ZShpdC0+Zmlyc3QpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9OworCiB9OwogCiAjZW5kaWYg
Ly8gRU5BQkxFKFNWRykKSW5kZXg6IGJpbmRpbmdzL2pzL0pTU1ZHUG9pbnRMaXN0Q3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9KU1NWR1BvaW50TGlzdEN1c3RvbS5jcHAJKHJl
dmlzaW9uIDIzNTM0KQorKysgYmluZGluZ3MvanMvSlNTVkdQb2ludExpc3RDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDcgQEAgSlNWYWx1ZSogSlNTVkdQb2ludExpc3Q6
OnJlbW92ZUl0ZW0oRXhlYwogICAgIFNWR0xpc3Q8UmVmUHRyPFNWR1BPRExpc3RJdGVtPEZsb2F0
UG9pbnQ+ID4gPiogbGlzdEltcCA9IGltcDsKIAogICAgIFJlZlB0cjxTVkdQT0RMaXN0SXRlbTxG
bG9hdFBvaW50PiA+IGxpc3RJdGVtKGxpc3RJbXAtPnJlbW92ZUl0ZW0oaW5kZXgsIGVjKSk7Ci0g
ICAgSlNTVkdQT0RUeXBlV3JhcHBlcjxGbG9hdFBvaW50Piogb2JqID0gbmV3IEpTU1ZHUE9EVHlw
ZVdyYXBwZXI8RmxvYXRQb2ludD4oKEZsb2F0UG9pbnQmKSAqbGlzdEl0ZW0uZ2V0KCkpOworICAg
IEpTU1ZHUE9EVHlwZVdyYXBwZXI8RmxvYXRQb2ludD4qIG9iaiA9IG5ldyBKU1NWR1BPRFR5cGVX
cmFwcGVyQ3JlYXRvclJlYWRPbmx5PEZsb2F0UG9pbnQ+KCpsaXN0SXRlbS5nZXQoKSk7CiAKICAg
ICBLSlM6OkpTVmFsdWUqIHJlc3VsdCA9IHRvSlMoZXhlYywgb2JqKTsKICAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgZWMpOwpJbmRleDogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJl
dmlzaW9uIDIzNTM0KQorKysgYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdv
cmtpbmcgY29weSkKQEAgLTc0NCw3ICs3NDQsMjAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuICAgIFNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6Zm9yZ2V0R2VuZXJpY0NvbnRleHQ8JGNvbnRleHRJbnRlcmZhY2VOYW1lPihtX2lt
cGwuZ2V0KCkpO1xuIik7ICAgCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBT
Y3JpcHRJbnRlcnByZXRlcjo6Zm9yZ2V0RE9NT2JqZWN0KG1faW1wbC5nZXQoKSk7XG59XG5cbiIp
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4g
ICAgU2NyaXB0SW50ZXJwcmV0ZXI6OmZvcmdldERPTU9iamVjdChtX2ltcGwuZ2V0KCkpO1xufVxu
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisKKyAgICAgICAg
ICAgIGlmICgkcG9kVHlwZSkgeworICAgICAgICAgICAgICAgIG15ICRhbmltYXRlZFR5cGUgPSAk
aW1wbENsYXNzTmFtZTsKKyAgICAgICAgICAgICAgICAkYW5pbWF0ZWRUeXBlID1+IHMvU1ZHL1NW
R0FuaW1hdGVkLzsKKworICAgICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciBKU1NWR051
bWJlcgorICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTVkdBbmltYXRlZFR5
cGUoJGFuaW1hdGVkVHlwZSkgYW5kICRwb2RUeXBlIG5lICJkb3VibGUiKSB7CisgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTU1ZHUE9EVHlwZVdyYXBwZXJDYWNo
ZTwkcG9kVHlwZSwgJGFuaW1hdGVkVHlwZT46OmZvcmdldFdyYXBwZXIobV9pbXBsLmdldCgpKTtc
biIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgU2NyaXB0SW50ZXJwcmV0ZXI6OmZvcmdldERPTU9iamVjdCht
X2ltcGwuZ2V0KCkpOyIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbn1cblxu
Iik7ICAgIAogICAgICAgICB9CiAgICAgfQogCkBAIC04MTQsNyArODI3LDcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlKiAk
e2NsYXNzTmFtZX06OmdldFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBpbnQgdG9rZW4p
IGNvbnN0XG57XG4iKTsKIAogICAgICAgICBpZiAoJHBvZFR5cGUpIHsKLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICRwb2RUeXBlJiBpbXAoKmltcGwoKSk7XG5cbiIpOworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHBvZFR5cGUgaW1wKCppbXBsKCkpO1xu
XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KGlt
cGwoKSk7XG5cbiIpOwogICAgICAgICB9CkBAIC05MTEsNyArOTI0LDcgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAK
ICAgICAgICAgICAgIGlmICgkcG9kVHlwZSkgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICRwb2RUeXBlJiBpbXAoKmltcGwoKSk7XG5cbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRwb2RUeXBlIGltcCgqaW1wbCgpKTtcblxuIik7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+
KGltcGwoKSk7XG5cbiIpOwogICAgICAgICAgICAgfQpAQCAtOTQ0LDcgKzk1Nyw3IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIGltcC5zZXQiIC4gV0tfdWNmaXJzdCgkbmFtZSkgLiAiKCIgLiBKU1ZhbHVlVG9OYXRp
dmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUiKSAuICIpO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICBtX2ltcGwtPmNvbW1pdENoYW5nZShleGVjKTtcbiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBtX2lt
cGwtPmNvbW1pdENoYW5nZShleGVjLCBpbXApO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpIGlmIEB7JGF0dHJpYnV0ZS0+c2V0
dGVyRXhjZXB0aW9uc307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIGltcC0+c2V0IiAuIFdLX3VjZmlyc3QoJG5hbWUpIC4gIigiIC4gSlNW
YWx1ZVRvTmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIikpOwpAQCAtOTkzLDcg
KzEwMDYsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgIGlmICgkcG9k
VHlwZSkgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNTVkdQT0RUeXBl
V3JhcHBlcjwkcG9kVHlwZT4qIHdyYXBwZXIgPSBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhp
c09iaiktPmltcGwoKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
JHBvZFR5cGUmIGltcCgqd3JhcHBlcik7XG5cbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgJHBvZFR5cGUgaW1wKCp3cmFwcGVyKTtcblxuIik7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW1wbENsYXNzTmFtZSog
aW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihzdGF0aWNfY2FzdDwkY2xhc3NOYW1l
Kj4odGhpc09iaiktPmltcGwoKSk7XG5cbiIpOwogICAgICAgICB9CkBAIC0xMTU4LDEyICsxMTcx
LDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCkKICAgICBpZiAo
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUgZXEgInZvaWQiKSB7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAkaW5kZW50IC4gIiRmdW5jdGlvblN0cmluZztcbiIpOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgJGluZGVudCAuICJzZXRET01FeGNlcHRpb24oZXhlYywgZWMpO1xuIikg
aWYgQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlvbnN9OwotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgJGluZGVudCAuICJ3cmFwcGVyLT5jb21taXRDaGFuZ2UoZXhlYyk7XG4iKSBpZiAkcG9k
VHlwZTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAid3JhcHBlci0+Y29t
bWl0Q2hhbmdlKGV4ZWMsIGltcCk7XG4iKSBpZiAkcG9kVHlwZTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICRpbmRlbnQgLiAicmV0dXJuIGpzVW5kZWZpbmVkKCk7XG4iKTsKICAgICB9IGVs
c2UgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIiAuICRpbmRlbnQgLiAiS0pTOjpK
U1ZhbHVlKiByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRmdW5jdGlvbi0+c2lnbmF0dXJl
LCAiIiwgJGZ1bmN0aW9uU3RyaW5nKSAuICI7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICRpbmRlbnQgLiAic2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTtcbiIpIGlmIEB7JGZ1bmN0
aW9uLT5yYWlzZXNFeGNlcHRpb25zfTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRl
bnQgLiAid3JhcHBlci0+Y29tbWl0Q2hhbmdlKGV4ZWMpO1xuIikgaWYgJHBvZFR5cGU7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIndyYXBwZXItPmNvbW1pdENoYW5nZShl
eGVjLCBpbXApO1xuIikgaWYgJHBvZFR5cGU7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAk
aW5kZW50IC4gInJldHVybiByZXN1bHQ7XG4iKTsKICAgICB9CiB9CkBAIC0xMzYzLDkgKzEzNzYs
OSBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgIG15ICRzZXR0ZXIgPSAic2V0IiAuIFdL
X3VjZmlyc3QoJGdldHRlcik7CiAKICAgICAgICAgaWYgKCRpbXBsQ2xhc3NOYW1lIGVxICIiKSB7
Ci0gICAgICAgICAgICByZXR1cm4gInRvSlMoZXhlYywgbmV3IEpTU1ZHUE9EVHlwZVdyYXBwZXI8
JG5hdGl2ZVR5cGU+KCR2YWx1ZSkpIjsKKyAgICAgICAgICAgIHJldHVybiAidG9KUyhleGVjLCBu
ZXcgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JSZWFkT25seTwkbmF0aXZlVHlwZT4oJHZhbHVl
KSkiOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuICJ0b0pTKGV4ZWMsIG5l
dyBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvcjwkbmF0aXZlVHlwZSwgJGltcGxDbGFzc05hbWU+
KGltcCwgJiR7aW1wbENsYXNzTmFtZX06OiRnZXR0ZXIsICYke2ltcGxDbGFzc05hbWV9Ojokc2V0
dGVyKSkiOworICAgICAgICAgICAgcmV0dXJuICJ0b0pTKGV4ZWMsIEpTU1ZHUE9EVHlwZVdyYXBw
ZXJDYWNoZTwkbmF0aXZlVHlwZSwgJGltcGxDbGFzc05hbWU+Ojpsb29rdXBPckNyZWF0ZVdyYXBw
ZXIoaW1wLCAmJHtpbXBsQ2xhc3NOYW1lfTo6JGdldHRlciwgJiR7aW1wbENsYXNzTmFtZX06OiRz
ZXR0ZXIpKSI7CiAgICAgICAgIH0KICAgICB9CiAK
</data>
<flag name="review"
          id="6198"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>