<?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>20020</bug_id>
          
          <creation_ts>2008-07-12 13:01:56 -0700</creation_ts>
          <short_desc>Proposed enhancement to JavaScriptCore API</short_desc>
          <delta_ts>2008-09-22 16:02:12 -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>Mac</rep_platform>
          <op_sys>OS X 10.5</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="Kelvin Sherlock">ksherlock</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ggaren</cc>
    
    <cc>mjs</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>85844</commentid>
    <comment_count>0</comment_count>
    <who name="Kelvin Sherlock">ksherlock</who>
    <bug_when>2008-07-12 13:01:56 -0700</bug_when>
    <thetext>It would be very convenient to be able to create builtin objects (Array, Date, Error, RegExp) directly through the exported API. The SpiderMonkey JSAPI, for comparison, has JS_NewArrayObject and JS_NewRegExpObject functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85845</commentid>
    <comment_count>1</comment_count>
      <attachid>22256</attachid>
    <who name="Kelvin Sherlock">ksherlock</who>
    <bug_when>2008-07-12 13:07:50 -0700</bug_when>
    <thetext>Created attachment 22256
Add new API functions (JSObjectMake(Array|Date|Error|RegExp)

Add new API functions to JSObjectRef.cpp and tweak visibility of contructor functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85846</commentid>
    <comment_count>2</comment_count>
      <attachid>22257</attachid>
    <who name="Kelvin Sherlock">ksherlock</who>
    <bug_when>2008-07-12 13:11:00 -0700</bug_when>
    <thetext>Created attachment 22257
test of new functionality

XCode project to test new functionality, written in objective c.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85859</commentid>
    <comment_count>3</comment_count>
      <attachid>22256</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-07-12 16:23:46 -0700</bug_when>
    <thetext>Comment on attachment 22256
Add new API functions (JSObjectMake(Array|Date|Error|RegExp)

If you would like the patch to be reviewed, please set the review flag to ?. It should only be set to + by a reviewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86513</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-07-20 15:51:39 -0700</bug_when>
    <thetext>A better place to add tests for new API functionality would be the testapi.c and testapi.js files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87341</commentid>
    <comment_count>5</comment_count>
      <attachid>22256</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-07-29 17:13:47 -0700</bug_when>
    <thetext>Comment on attachment 22256
Add new API functions (JSObjectMake(Array|Date|Error|RegExp)

Hi Kevin. Nice additions. We&apos;ve been talking about this forever -- I&apos;m glad you finally did it!

As the submit policy says, &quot;Please also add your copyright (name and year) to the relevant files for changes that are more than 10 lines of code.&quot;

+2008-07-12  Kelvin Sherlock  &lt;set EMAIL_ADDRESS environment variable&gt;

Please add your email address to this changelog.

 436  @abstract Convenience method for creating a JavaScript Date Object.

You switched this line between JSObjectMakeArray and JSObjectMakeDate.

 439  @param arguments A JSValue array of data to populate the Array with . Pass NULL if argumentCount is 0.

Typo: &quot;with .&quot; should be &quot;with.&quot;.

+ @param arguments A JSValue array of data to populate the Array with . Pass NULL if argumentCount is 0.

This is a little controversial. All the other convenience functions you&apos;ve added do exactly what their JavaScript constructors do, but this one doesn&apos;t.

That said, I think the behavior here is a lot less weird than the behavior of the JavaScript constructor, so maybe that&apos;s OK, but I think we should document the difference more clearly. 

I would change all the abstracts to read, &quot;Creates a JavaScript X object, as if by invoking the built-in X constructor.&quot; Then, I would change the JSObjectMakeArray abstract to read, &quot;Creates a JavaScript Array object.&quot; Finally, I would add an @discussion to JSObjectMakeArray that reads, &quot;The behavior of this function does not exactly match the behavior of the built-in Array constructor. Specifically, if one argument is supplied, this function returns an array with one element.&quot;

 447  @abstract Convenience method for creating a JavaScript Array Object.

You switched this line between JSObjectMakeArray and JSObjectMakeDate.

 465 JS_EXPORT JSObjectRef JSObjectMakeDate(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef *exception);    

You included this declaration and documentation twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87738</commentid>
    <comment_count>6</comment_count>
      <attachid>22627</attachid>
    <who name="Kelvin Sherlock">ksherlock</who>
    <bug_when>2008-08-03 19:08:57 -0700</bug_when>
    <thetext>Created attachment 22627
Add new API functions (JSObjectMake(Array|Date|Error|RegExp)

cleaned up documentation from previous patch, removed JSLock, added call to exec-&gt;globalData().heap-&gt;registerThread();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87784</commentid>
    <comment_count>7</comment_count>
      <attachid>22627</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-08-04 12:29:46 -0700</bug_when>
    <thetext>Comment on attachment 22627
Add new API functions (JSObjectMake(Array|Date|Error|RegExp)

Your copyright should go into JSObjectRef.h, as well.

The ChangeLog should mention the bug number and what the API added. If you&apos;re not going to specifically comment on each function you changed, you can leave that boilerplate function list out.

+ @abstract Creates a JavaScript RefExp object

Typo: &quot;RefExp&quot; should be &quot;RegExp&quot;.

Otherwise, this is ready to land.

I have to r- over the copyright issue, though :(.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87807</commentid>
    <comment_count>8</comment_count>
      <attachid>22643</attachid>
    <who name="Kelvin Sherlock">ksherlock</who>
    <bug_when>2008-08-04 16:00:44 -0700</bug_when>
    <thetext>Created attachment 22643
Add new API functions (JSObjectMake(Array|Date|Error|RegExp)

fix typo, add copyright, added more info to change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87824</commentid>
    <comment_count>9</comment_count>
      <attachid>22643</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-08-04 19:28:19 -0700</bug_when>
    <thetext>Comment on attachment 22643
Add new API functions (JSObjectMake(Array|Date|Error|RegExp)

The * should be on the other side for JSValueRef *exception.  There is also an extra space.
+JSObjectRef JSObjectMakeArray(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[],  JSValueRef *exception)

+JSObjectRef JSObjectMakeDate(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[],  JSValueRef *exception)

+JSObjectRef JSObjectMakeDate(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[],  JSValueRef *exception)

+JSObjectRef JSObjectMakeRegExp(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[],  JSValueRef *exception)

Same here and few other places.
+    JSObject *result;


We like to use ++i where we can.  This issue exists in a number of  places.
+        for (size_t i = 0; i &lt; argumentCount; i++)

The braces are not needed.
+    } else {
+        result = constructEmptyArray(exec);
+    }

It is 2008!  :)
+ * Copyright (C) 2007 Kelvin W Sherlock (ksherlock@gmail.com)

There are some uses of tabs that need to be removed.

You should also add some tests to the testapi.c test.

r-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92229</commentid>
    <comment_count>10</comment_count>
      <attachid>23678</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-09-22 15:55:26 -0700</bug_when>
    <thetext>Created attachment 23678
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92230</commentid>
    <comment_count>11</comment_count>
      <attachid>23678</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-09-22 15:58:45 -0700</bug_when>
    <thetext>Comment on attachment 23678
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92232</commentid>
    <comment_count>12</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-09-22 16:02:12 -0700</bug_when>
    <thetext>Fixed in r36784.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22256</attachid>
            <date>2008-07-12 13:07:50 -0700</date>
            <delta_ts>2008-08-03 19:08:57 -0700</delta_ts>
            <desc>Add new API functions (JSObjectMake(Array|Date|Error|RegExp)</desc>
            <filename>20020.patch</filename>
            <type>text/plain</type>
            <size>12811</size>
            <attacher name="Kelvin Sherlock">ksherlock</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM1MTUwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDgtMDctMTIgIEtlbHZpbiBT
aGVybG9jayAgPHNldCBFTUFJTF9BRERSRVNTIGVudmlyb25tZW50IHZhcmlhYmxlPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTT2JqZWN0
UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0TWFrZUFycmF5KToKKyAgICAgICAgKEpTT2JqZWN0
TWFrZURhdGUpOgorICAgICAgICAoSlNPYmplY3RNYWtlRXJyb3IpOgorICAgICAgICAoSlNPYmpl
Y3RNYWtlUmVnRXhwKToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuaDoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICoga2pzL0RhdGVDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChLSlM6OmNvbnN0cnVjdERhdGUpOgorICAgICAgICAoS0pTOjpjb25zdHJ1Y3RXaXRo
RGF0ZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEtKUzo6RGF0ZUNvbnN0cnVjdG9yOjpnZXRDb25z
dHJ1Y3REYXRhKToKKyAgICAgICAgKiBranMvRGF0ZUNvbnN0cnVjdG9yLmg6CisgICAgICAgICog
a2pzL0Vycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoS0pTOjpjb25zdHJ1Y3RFcnJvcik6
CisgICAgICAgICoga2pzL0Vycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBranMvUmVnRXhw
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoS0pTOjpjb25zdHJ1Y3RSZWdFeHApOgorICAgICAg
ICAqIGtqcy9SZWdFeHBDb25zdHJ1Y3Rvci5oOgorCiAyMDA4LTA3LTEyICBKYW4gTWljaGFlbCBB
bG9uem8gIDxqbWFsb256b0B3ZWJraXQub3JnPgogCiAgICAgICAgIEd0aywgUXQgYW5kIFd4IGJ1
aWxkIGZpeDogQWRkIHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIgaW4gdGhlCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZpc2lvbiAzNTEwNykKKysrIEphdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMjAsOSArMjAsMTMgQEAgX0pT
T2JqZWN0SGFzUHJvcGVydHkKIF9KU09iamVjdElzQ29uc3RydWN0b3IKIF9KU09iamVjdElzRnVu
Y3Rpb24KIF9KU09iamVjdE1ha2UKK19KU09iamVjdE1ha2VBcnJheQogX0pTT2JqZWN0TWFrZUNv
bnN0cnVjdG9yCitfSlNPYmplY3RNYWtlRGF0ZQorX0pTT2JqZWN0TWFrZUVycm9yCiBfSlNPYmpl
Y3RNYWtlRnVuY3Rpb24KIF9KU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjaworX0pTT2Jq
ZWN0TWFrZVJlZ0V4cAogX0pTT2JqZWN0U2V0UHJpdmF0ZQogX0pTT2JqZWN0U2V0UHJvcGVydHkK
IF9KU09iamVjdFNldFByb3BlcnR5QXRJbmRleApJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJL0pT
T2JqZWN0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RS
ZWYuY3BwCShyZXZpc2lvbiAzNTEwNykKKysrIEphdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJl
Zi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDEwIEBACiAjaW5jbHVkZSAiSlNPYmpl
Y3RSZWYuaCIKIAogI2luY2x1ZGUgIkFQSUNhc3QuaCIKKyNpbmNsdWRlICJEYXRlQ29uc3RydWN0
b3IuaCIKKyNpbmNsdWRlICJFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25D
b25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0NhbGxiYWNr
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0NhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0NhbGxiYWNrT2JqZWN0LmgiCkBAIC00MCwxMSArNDMsMTUgQEAKICNpbmNsdWRlICJKU1Zh
bHVlUmVmLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiUHJvcGVy
dHlOYW1lQXJyYXkuaCIKKyNpbmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
ImlkZW50aWZpZXIuaCIKKworCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBLSlM7CiAKKwogSlNDbGFzc1JlZiBKU0NsYXNzQ3JlYXRlKGNvbnN0IEpTQ2xhc3NE
ZWZpbml0aW9uKiBkZWZpbml0aW9uKQogewogICAgIFJlZlB0cjxPcGFxdWVKU0NsYXNzPiBqc0Ns
YXNzID0gKGRlZmluaXRpb24tPmF0dHJpYnV0ZXMgJiBrSlNDbGFzc0F0dHJpYnV0ZU5vQXV0b21h
dGljUHJvdG90eXBlKQpAQCAtMTI4LDYgKzEzNSw5OCBAQCBKU09iamVjdFJlZiBKU09iamVjdE1h
a2VGdW5jdGlvbihKU0NvbnRlCiAgICAgcmV0dXJuIHRvUmVmKHJlc3VsdCk7CiB9CiAKKworCitK
U09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheShKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgIEpTVmFsdWVSZWYgKmV4
Y2VwdGlvbikKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgSlNMb2Nr
IGxvY2soZXhlYyk7CisgICAgSlNPYmplY3QgKnJlc3VsdDsKKyAgICAKKyAgICBpZiAoYXJndW1l
bnRDb3VudCkgeworICAgICAgICBBcmdMaXN0IGFyZ0xpc3Q7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgaSsrKQorICAgICAgICAgICAgYXJnTGlzdC5hcHBl
bmQodG9KUyhhcmd1bWVudHNbaV0pKTsKKworICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RBcnJh
eShleGVjLCBhcmdMaXN0KTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQgPSBjb25zdHJ1
Y3RFbXB0eUFycmF5KGV4ZWMpOworICAgIH0KKworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkgeworICAgICAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRv
UmVmKGV4ZWMtPmV4Y2VwdGlvbigpKTsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsK
KyAgICB9CisKKyAgICByZXR1cm4gdG9SZWYocmVzdWx0KTsKK30KKworCitKU09iamVjdFJlZiBK
U09iamVjdE1ha2VEYXRlKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCAgSlNWYWx1ZVJlZiAqZXhjZXB0aW9uKQorewor
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0xvY2sgbG9jayhleGVjKTsK
KyAgICBKU09iamVjdCAqcmVzdWx0OworCQorICAgIEFyZ0xpc3QgYXJnTGlzdDsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7IGkrKykKKyAgICAgICAgYXJnTGlzdC5h
cHBlbmQodG9KUyhhcmd1bWVudHNbaV0pKTsJCisJCisJcmVzdWx0ID0gY29uc3RydWN0RGF0ZShl
eGVjLCBhcmdMaXN0KTsKKwkKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAg
ICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVjLT5l
eGNlcHRpb24oKSk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgfQorICAg
IAorICAgIHJldHVybiB0b1JlZihyZXN1bHQpOworfQorCitKU09iamVjdFJlZiBKU09iamVjdE1h
a2VFcnJvcihKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgIEpTVmFsdWVSZWYgKmV4Y2VwdGlvbikKK3sKKyAgICBFeGVj
U3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgSlNMb2NrIGxvY2soZXhlYyk7CisgICAgSlNP
YmplY3QgKnJlc3VsdDsKKwkKKyAgICBBcmdMaXN0IGFyZ0xpc3Q7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyBpKyspCisgICAgICAgIGFyZ0xpc3QuYXBwZW5kKHRv
SlMoYXJndW1lbnRzW2ldKSk7CQorCQorCXJlc3VsdCA9IGNvbnN0cnVjdEVycm9yKGV4ZWMsIGFy
Z0xpc3QpOworCQorICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICBpZiAo
ZXhjZXB0aW9uKQorICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGV4ZWMtPmV4Y2VwdGlv
bigpKTsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIHRvUmVmKHJlc3VsdCk7Cit9CisKK0pTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVJlZ0V4
cChKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgIEpTVmFsdWVSZWYgKmV4Y2VwdGlvbikKK3sKKyAgICBFeGVjU3RhdGUq
IGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgSlNMb2NrIGxvY2soZXhlYyk7CisgICAgSlNPYmplY3Qg
KnJlc3VsdDsKKwkKKyAgICBBcmdMaXN0IGFyZ0xpc3Q7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBhcmd1bWVudENvdW50OyBpKyspCisgICAgICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlMoYXJn
dW1lbnRzW2ldKSk7CQorCQorCXJlc3VsdCA9IGNvbnN0cnVjdFJlZ0V4cChleGVjLCBhcmdMaXN0
KTsKKwkKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgaWYgKGV4Y2Vw
dGlvbikKKyAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVjLT5leGNlcHRpb24oKSk7
CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgfQorICAgIAorICAgIHJldHVy
biB0b1JlZihyZXN1bHQpOworfQorCisKIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm90b3R5cGUo
SlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiBvYmplY3QpCiB7CiAgICAgSlNPYmplY3QqIGpzT2Jq
ZWN0ID0gdG9KUyhvYmplY3QpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVm
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgJKHJldmlz
aW9uIDM1MTA3KQorKysgSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyOCw2ICs0MjgsNjUgQEAgSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0
TWFrZUZ1bmN0aQogKi8KIEpTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VDb25zdHJ1
Y3RvcihKU0NvbnRleHRSZWYgY3R4LCBKU0NsYXNzUmVmIGpzQ2xhc3MsIEpTT2JqZWN0Q2FsbEFz
Q29uc3RydWN0b3JDYWxsYmFjayBjYWxsQXNDb25zdHJ1Y3Rvcik7CiAKKworCisgICAgCisvKiEK
KyBAZnVuY3Rpb24KKyBAYWJzdHJhY3QgQ29udmVuaWVuY2UgbWV0aG9kIGZvciBjcmVhdGluZyBh
IEphdmFTY3JpcHQgRGF0ZSBPYmplY3QuCisgQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRl
eHQgdG8gdXNlLgorIEBwYXJhbSBhcmd1bWVudENvdW50IEFuIGludGVnZXIgY291bnQgb2YgdGhl
IG51bWJlciBvZiBhcmd1bWVudHMgaW4gYXJndW1lbnRzLgorIEBwYXJhbSBhcmd1bWVudHMgQSBK
U1ZhbHVlIGFycmF5IG9mIGRhdGEgdG8gcG9wdWxhdGUgdGhlIEFycmF5IHdpdGggLiBQYXNzIE5V
TEwgaWYgYXJndW1lbnRDb3VudCBpcyAwLgorIEBwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRv
IGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFz
cyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24uCisgQHJlc3Vs
dCBBIEpTT2JqZWN0IHRoYXQgaXMgYW4gQXJyYXkuIAorICovICAgIAorSlNfRVhQT1JUIEpTT2Jq
ZWN0UmVmIEpTT2JqZWN0TWFrZUFycmF5KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmICpleGNlcHRp
b24pOyAgICAgICAgCisKKy8qIQorIEBmdW5jdGlvbgorIEBhYnN0cmFjdCBDb252ZW5pZW5jZSBt
ZXRob2QgZm9yIGNyZWF0aW5nIGEgSmF2YVNjcmlwdCBBcnJheSBPYmplY3QuCisgQHBhcmFtIGN0
eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorIEBwYXJhbSBhcmd1bWVudENvdW50IEFu
IGludGVnZXIgY291bnQgb2YgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgaW4gYXJndW1lbnRzLgor
IEBwYXJhbSBhcmd1bWVudHMgQSBKU1ZhbHVlIGFycmF5IG9mIGFyZ3VtZW50cyB0byBwYXNzIHRv
IHRoZSBEYXRlIENvbnN0cnVjdG9yLiBQYXNzIE5VTEwgaWYgYXJndW1lbnRDb3VudCBpcyAwLgor
IEBwYXJhbSBleGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBz
dG9yZSBhbiBleGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0
byBzdG9yZSBhbiBleGNlcHRpb24uCisgQHJlc3VsdCBBIEpTT2JqZWN0IHRoYXQgaXMgYSBEYXRl
LgorICovICAgIAorSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZURhdGUoSlNDb250
ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYgKmV4Y2VwdGlvbik7ICAgIAorCisvKiEKKyBAZnVuY3Rpb24KKyBA
YWJzdHJhY3QgQ29udmVuaWVuY2UgbWV0aG9kIGZvciBjcmVhdGluZyBhIEphdmFTY3JpcHQgQXJy
YXkgT2JqZWN0LgorIEBwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KKyBA
cGFyYW0gYXJndW1lbnRDb3VudCBBbiBpbnRlZ2VyIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgYXJn
dW1lbnRzIGluIGFyZ3VtZW50cy4KKyBAcGFyYW0gYXJndW1lbnRzIEEgSlNWYWx1ZSBhcnJheSBv
ZiBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgRGF0ZSBDb25zdHJ1Y3Rvci4gUGFzcyBOVUxMIGlm
IGFyZ3VtZW50Q291bnQgaXMgMC4KKyBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpT
VmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVM
TCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgorIEByZXN1bHQgQSBK
U09iamVjdCB0aGF0IGlzIGEgRGF0ZS4KKyAqLyAgICAKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBK
U09iamVjdE1ha2VEYXRlKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmICpleGNlcHRpb24pOyAgICAK
KyAgICAKKy8qIQorIEBmdW5jdGlvbgorIEBhYnN0cmFjdCBDb252ZW5pZW5jZSBtZXRob2QgZm9y
IGNyZWF0aW5nIGEgSmF2YVNjcmlwdCBFcnJvciBPYmplY3QuCisgQHBhcmFtIGN0eCBUaGUgZXhl
Y3V0aW9uIGNvbnRleHQgdG8gdXNlLgorIEBwYXJhbSBhcmd1bWVudENvdW50IEFuIGludGVnZXIg
Y291bnQgb2YgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgaW4gYXJndW1lbnRzLgorIEBwYXJhbSBh
cmd1bWVudHMgQSBKU1ZhbHVlIGFycmF5IG9mIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBFcnJv
ciBDb25zdHJ1Y3Rvci4gUGFzcyBOVUxMIGlmIGFyZ3VtZW50Q291bnQgaXMgMC4KKyBAcGFyYW0g
ZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4g
ZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUg
YW4gZXhjZXB0aW9uLgorIEByZXN1bHQgQSBKU09iamVjdCB0aGF0IGlzIGEgRXJyb3IuCisgKi8g
ICAgCitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRXJyb3IoSlNDb250ZXh0UmVm
IGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYgKmV4Y2VwdGlvbik7ICAgIAorICAgIAorLyohCisgQGZ1bmN0aW9uCisgQGFi
c3RyYWN0IENvbnZlbmllbmNlIG1ldGhvZCBmb3IgY3JlYXRpbmcgYSBKYXZhU2NyaXB0IFJlZ0V4
cCBPYmplY3QuCisgQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorIEBw
YXJhbSBhcmd1bWVudENvdW50IEFuIGludGVnZXIgY291bnQgb2YgdGhlIG51bWJlciBvZiBhcmd1
bWVudHMgaW4gYXJndW1lbnRzLgorIEBwYXJhbSBhcmd1bWVudHMgQSBKU1ZhbHVlIGFycmF5IG9m
IGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBSZWdFeHAgQ29uc3RydWN0b3IuIFBhc3MgTlVMTCBp
ZiBhcmd1bWVudENvdW50IGlzIDAuCisgQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBK
U1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5V
TEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KKyBAcmVzdWx0IEEg
SlNPYmplY3QgdGhhdCBpcyBhIFJlZ0V4cC4KKyAqLyAgICAKK0pTX0VYUE9SVCBKU09iamVjdFJl
ZiBKU09iamVjdE1ha2VSZWdFeHAoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYgKmV4Y2VwdGlvbik7
ICAgIAorICAgIAorICAgIAogLyohCiBAZnVuY3Rpb24KIEBhYnN0cmFjdCBDcmVhdGVzIGEgZnVu
Y3Rpb24gd2l0aCBhIGdpdmVuIHNjcmlwdCBhcyBpdHMgYm9keS4KSW5kZXg6IEphdmFTY3JpcHRD
b3JlL2tqcy9EYXRlQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L2tqcy9EYXRlQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAzNTEwNykKKysrIEphdmFTY3JpcHRD
b3JlL2tqcy9EYXRlQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3
IEBAIERhdGVDb25zdHJ1Y3Rvcjo6RGF0ZUNvbnN0cnVjdG9yKEV4ZWNTdGEKIH0KIAogLy8gRUNN
QSAxNS45LjMKLXN0YXRpYyBKU09iamVjdCogY29uc3RydWN0RGF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYgYXJncykKK0pTT2JqZWN0KiBjb25zdHJ1Y3REYXRl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAgICBpbnQgbnVtQXJn
cyA9IGFyZ3Muc2l6ZSgpOwogCkBAIC0xMDgsMTAgKzEwOCwxNSBAQCBzdGF0aWMgSlNPYmplY3Qq
IGNvbnN0cnVjdERhdGUoRXhlY1N0YXRlCiAgICAgcmV0LT5zZXRJbnRlcm5hbFZhbHVlKGpzTnVt
YmVyKGV4ZWMsIHRpbWVDbGlwKHZhbHVlKSkpOwogICAgIHJldHVybiByZXQ7CiB9CisgICAgCitz
dGF0aWMgSlNPYmplY3QqIGNvbnN0cnVjdFdpdGhEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCosIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgcmV0dXJuIGNvbnN0
cnVjdERhdGUoZXhlYywgYXJncyk7Cit9CiAKIENvbnN0cnVjdFR5cGUgRGF0ZUNvbnN0cnVjdG9y
OjpnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiB7Ci0gICAg
Y29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3REYXRlOworICAgIGNvbnN0
cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0V2l0aERhdGVDb25zdHJ1Y3RvcjsK
ICAgICByZXR1cm4gQ29uc3RydWN0VHlwZU5hdGl2ZTsKIH0KIApJbmRleDogSmF2YVNjcmlwdENv
cmUva2pzL0RhdGVDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tq
cy9EYXRlQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMzUxMDcpCisrKyBKYXZhU2NyaXB0Q29yZS9r
anMvRGF0ZUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDggQEAgbmFt
ZXNwYWNlIEtKUyB7CiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERh
dGEmKTsKICAgICB9OwogCisgICAgSlNPYmplY3QqIGNvbnN0cnVjdERhdGUoRXhlY1N0YXRlKiwg
Y29uc3QgQXJnTGlzdCYpOworICAgIAogfSAvLyBuYW1lc3BhY2UgS0pTCiAKICNlbmRpZiAvLyBE
YXRlQ29uc3RydWN0b3JfaApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0Vycm9yQ29uc3RydWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9FcnJvckNvbnN0cnVjdG9y
LmNwcAkocmV2aXNpb24gMzUxMDcpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvRXJyb3JDb25zdHJ1
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJFcnJvckNvbnN0cnVjdG9yLmgiCiAKLSNpbmNsdWRlICJFcnJvcklu
c3RhbmNlLmgiCiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5jdGlv
blByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC0zOCw3ICszNyw3
IEBAIEVycm9yQ29uc3RydWN0b3I6OkVycm9yQ29uc3RydWN0b3IoRXhlY1MKIH0KIAogLy8gRUNN
QSAxNS45LjMKLXN0YXRpYyBFcnJvckluc3RhbmNlKiBjb25zdHJ1Y3RFcnJvcihFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCitFcnJvckluc3RhbmNlKiBjb25zdHJ1Y3RFcnJv
cihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgRXJyb3JJbnN0
YW5jZSogb2JqID0gbmV3IChleGVjKSBFcnJvckluc3RhbmNlKGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+ZXJyb3JQcm90b3R5cGUoKSk7CiAgICAgaWYgKCFhcmdzWzBdLT5pc1VuZGVmaW5l
ZCgpKQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0Vycm9yQ29uc3RydWN0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvRXJyb3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAz
NTEwNykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9FcnJvckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDYgKzIxLDcgQEAKICNpZm5kZWYgRXJyb3JDb25zdHJ1Y3Rvcl9oCiAjZGVm
aW5lIEVycm9yQ29uc3RydWN0b3JfaAogCisjaW5jbHVkZSAiRXJyb3JJbnN0YW5jZS5oIgogI2lu
Y2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKIAogbmFtZXNwYWNlIEtKUyB7CkBAIC0zNyw2ICsz
OCw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxE
YXRhKENhbGxEYXRhJik7CiAgICAgfTsKIAorICAgIEVycm9ySW5zdGFuY2UqIGNvbnN0cnVjdEVy
cm9yKEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmKTsKKwogfSAvLyBuYW1lc3BhY2UgS0pTCiAK
ICNlbmRpZiAvLyBFcnJvckNvbnN0cnVjdG9yX2gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9S
ZWdFeHBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL1Jl
Z0V4cENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMzUxMDcpCisrKyBKYXZhU2NyaXB0Q29yZS9r
anMvUmVnRXhwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjgsNyArMjY4LDcg
QEAgdm9pZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6cHV0VmFsdWVQcm9wZXJ0eQogfQogICAKIC8vIEVD
TUEgMTUuMTAuNAotc3RhdGljIEpTT2JqZWN0KiBjb25zdHJ1Y3RSZWdFeHAoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQorSlNPYmplY3QqIGNvbnN0cnVjdFJlZ0V4cChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgSlNWYWx1ZSogYXJnMCA9
IGFyZ3NbMF07CiAgICAgSlNWYWx1ZSogYXJnMSA9IGFyZ3NbMV07CkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ranMvUmVnRXhwQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ranMvUmVnRXhwQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMzUxMDcpCisrKyBKYXZhU2NyaXB0
Q29yZS9ranMvUmVnRXhwQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQg
QEAKLS8qCisgLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBv
cnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOCBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgpAQCAtNzcsNiArNzcsOSBAQCBuYW1lc3BhY2Ug
S0pTIHsKIAogICAgICAgICBPd25QdHI8UmVnRXhwQ29uc3RydWN0b3JQcml2YXRlPiBkOwogICAg
IH07CisgICAgCisgICAgSlNPYmplY3QqIGNvbnN0cnVjdFJlZ0V4cChFeGVjU3RhdGUqLCBjb25z
dCBBcmdMaXN0Jik7CisgICAgCiAKIH0gLy8gbmFtZXNwYWNlIEtKUwogCg==
</data>
<flag name="review"
          id="9795"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>22257</attachid>
            <date>2008-07-12 13:11:00 -0700</date>
            <delta_ts>2008-09-22 15:55:26 -0700</delta_ts>
            <desc>test of new functionality</desc>
            <filename>jstest.zip</filename>
            <type>application/zip</type>
            <size>45450</size>
            <attacher name="Kelvin Sherlock">ksherlock</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAABqB7DgAAAAAAAAAAAAAAAAHABAAanN0ZXN0L1VYDACf9XhIUw95SPUBFABQSwME
FAAIAAgAHIHsOAAAAAAAAAAAAAAAABAAEABqc3Rlc3QvLkRTX1N0b3JlVVgMAFwPeUhYD3lI9QEU
AO2Yy0rDQBSG/xMDDrgZXbmcJyj4BkOpC3eCe5WmFVsqES/gRsjT+Q4+jc5k/uo0iQtXLXo+GL6E
mXNyksVcAkDGz7MTwAIwSJZ4MYBh61HQZQxuczziCSPcna3qajjXzhFrN1i2lc/z+qereor0YS5D
e/1oaWNsZ/wLKtSYhft7PISr5Wa8HHXiDzfir3Aeoua4wSJkGoUcFW47Gd46Gfazp4dcA/W+Z6MV
RVEUJUeSzMF2y1AUZQeJ84OjPd0kC/sLusxiLO1oTzfJwnEFXdKGtrSjPd0kc9ISHj6ET14fXsTS
jva/emVF+TfsJdm4/p/+fP5XFOUPI+XkYjLG14GgR1xrXWjX6wBwNUd/E1Ckn4XH+O53tKebZN0I
KMq2+ARQSwcITNYV/iEBAAAEGAAAUEsDBAoAAAAAACCB7DgAAAAAAAAAAAAAAAAJABAAX19NQUNP
U1gvVVgMAFwPeUhcD3lI9QEUAFBLAwQKAAAAAAAggew4AAAAAAAAAAAAAAAAEAAQAF9fTUFDT1NY
L2pzdGVzdC9VWAwAXA95SFwPeUj1ARQAUEsDBBQACAAIAByB7DgAAAAAAAAAAAAAAAAbABAAX19N
QUNPU1gvanN0ZXN0Ly5fLkRTX1N0b3JlVVgMAFwPeUhYD3lI9QEUAGNgFWNnYGJg8E1MVvAPVohQ
gAKQGAMnEBsBsQIQg/hBDEjAgQE7AABQSwcI3JGPuCgAAABSAAAAUEsDBBQACAAIAMF97DgAAAAA
AAAAAAAAAAAPABAAanN0ZXN0L2pzdGVzdC5tVVgMAFwPeUj6CXlI9QEUAO1XW2/bNhR+rn4F4aKB
1Appsqchl6GZYxcwUjeImu3BEQZGomwlMilIVOos83/fIY+om+XWXvdYA4lI6lw/nptex8tUZJKc
jUXBQypjwd/Xy8PFb5b1OuZBUoSMnE3oE/WCLE7lUGTsfXuraa2J9wdNCnbDIvKQX2cxl/bEGwou
2Uqqw0CuXIts/ibe5/sHFmiaqOCB0v5dQrmIc9z1kubx3+wvSWg2L5aMg5EF7ycMBM8laZhuWPKZ
v8WIivQtWwUsVeZajvWiiafeRSEBkYTRnF0LkZC3JFWPczKbbb6kSSICn8Q8lv6p9cp6FYmM2KXx
MTAdncLjrO0HHL1755AXqzbJkwD3XCOPS2AtDf0i8GQo0mdbXUHDw9h3yfT26so5rWRNS1lgd24k
zez61DHKlLzhGNf243B8oVyh4N4li2iRSNeY4hBae+3XmqpFlBYyt2elutsv41+REYzLZSgK2TCv
dlWLs40OAG+tiWYa7TCjMVeIZkwWGTdYfKKP7JaHLIo5CxUYwLfuBO6Ufb3IMvq8W+zuE777RfA+
QUz+QxyT74VyBR0aqbBDYFpBhEbV2lxSSeoH95JKtiO2uyO7D667o7o/pnsjqtH4MUBHWSayn4ga
RBGOH4P0hs1Hq9TemjY/C0MH9BKw/VCH8QJLMaFhOC4BQhkC3SecLplLIofcWaEgL3dWq9Wpt7rR
lR0pY5BNf8ZyoXrIsGxNisg5JYq1cR0rzVc7YNQr7iF05XsaPKIpD8aGpgyPyetMpCyTz22DDTUc
PU48Q3MhwZb7QrJLCJwRL5bkn62vL6GzSWb6Mmm6XLa8yqM1+bqIE0bsIwfAfBJxqJD89GycyTeq
grnCJhbzRNzTRONREn9k8qM+RKKyUWrGjZtCbpcMUjXwDVwz+pU9ezs9L/usZjFNdxcuVTINk1rv
wqOLgmHSm124MKoNG+4wdMFBsoQRg9hqBSEeuGWiBQuawewER08z/3+ZCpUApQXTTicm8B2XFxJH
xFb6yfk5+cXRR/VgOPW0r6CN6ee5jqreYS+lcqHMqY5wHNP5gCcn6NSxTxgPRKhPpl49ro3KU79/
mNQfC9s0qLiDEvE5GkM8n6Ax39aCHp2QA/1s6FSA6LPmhIzGXIm5/WGAkEDmcSUmUgn05sMJ/MFF
K8Uuim4MnetqxZKcdcROPMyVdqLpdGq9wOpkd8ZtlFDXNIQJ912qqib3X2aHCCXd1EHTpmxtOlUD
830rddPG3vJbfRbYZgUGOcj2LcE9Wm5aQT/xRk+wBDX47Ykp27QH66b5f+yW8dHRqmJkU/7BQf3N
9DvkIaO8qaBB6nRjS/1MfEkGZSClec7Cwzs+6KhWv3YmH7UJ1n1BtiE/ohC3ffLX2xHtNpImbhsh
2Qlq5GgHRq3K6jXcGHyb0zkk9ZtcJ9vhQz5wsZQc+aU0lNTz/Vaj1QRNleB/AVBLBwiRewiNPgQA
AL0QAABQSwMEFAAIAAgAwX3sOAAAAAAAAAAAAAAAABoAEABfX01BQ09TWC9qc3Rlc3QvLl9qc3Rl
c3QubVVYDABcD3lI+gl5SPUBFABjYBVjZ2BiYPBNTFbwD1aIUIACkBgDJxAbAXElEIP4qxmIAo4h
IUEMel/4oDrmADE/mhJGhLh4cn6uXmJBQU6qXkhqRYlrXnJ+SmZeOlAyNMRN18La0NjEyNDc0sIE
AFBLBwi+HSu5XwAAAKsAAABQSwMECgAAAAAAAoHsOAAAAAAAAAAAAAAAABgAEABqc3Rlc3QvanN0
ZXN0Lnhjb2RlcHJvai9VWAwAXup4SCQPeUj1ARQAUEsDBBQACAAIAAKB7DgAAAAAAAAAAAAAAAAm
ABAAanN0ZXN0L2pzdGVzdC54Y29kZXByb2ova2VsdmluLm1vZGUxdjNVWAwAXA95SCMPeUj1ARQA
7T1pc9s4sp+9vwLPVbuzWxVbvI+33swTKSnjt742cjKZTylagi1OKFJFUj4mNf99AfAmQRKQZEdO
ZWaSkS10E91o9IVG8+Tnx6UH7mEYuYH/r0PxWDgE0J8Fc9e/+9fhh+vJkXH489u/nPzP6NK+/u1q
DFaeG8Xg6oN1dmqDw6PBYLhaeXAwGF2PwNXZ6fQaIByDwfjiEBwu4nj1v4PBw8PDsYNHHc+CJR4Y
Da7CYAXD+OkMITtCAMfzeH6IHpNgr0wH/XbuzuK3fzk4+QKf3g5nsXsPr9CIFSQfL5wlPBngr9CI
KA7RxN8i9L+jb08G6c8ZrOcFD3B+HszXHoxyICcMHfzhIHvQQTLcWvtzD54FzvzKiRfZ8IP8KSX0
KcS583jqR7Hjzwr0xXifAkCm0hx6ZX2aLp0wfhcG69V1CGE2sI6gTH0BTsAi4PhzMHERqeByHXuu
D8FHFz6UkZwMMpL3ivYL5969c+IgJISwUj2euwhk38n7ZF870Rcs+HxriqEABtt/AkcwdlyPjzws
p0RgidwDsvAgQUSkFn6bhRW55NZau978PYzWXhzxkZ9QCueAoAApjtdDeapxJ64/5yM8BQSWE88W
AMOD6yDw9l/IM4qDcOnEduDfemhunKueEZ8gATmWV7HPsbwHwRe0Xb9wkp2DvYqlRnTanhNFVhg8
RDDkI5VAghT0NVD6ccpH4DRYhzOIRHeO//LjMPBey6qO4M36zgqh82UVuD6/xkbQoAT+KshGxjmY
fXFuPIjwYQ+66jB1EUwF2Eca0dJerqD/n7U7++I98a0qBgQp5LdbUD7bSyRxCiMcM20gw3evwsEg
U7XPTjfZpEgvRUEVaB/l9pM99Z1VtAg4I4MMqkMDnQyyILdEZJnADNdgBO+hh4PzwZl7EzrhE4rV
3XsnhpMQPfwhQFYbj8FPik79GIa3zgwe32ZfDpDnSixCVA++RzCahe4qRkJaf+gI3jrI3S2N+Dd8
asAjvYV+nD5FMVx+dCP3puDhya3jRXCQDR0/xtCPKA9aIisl3st11BPn3nJC7H25dzlILh/458LD
TZbm3YfTUb4QuVujWRNLNYbCWDJlUbYFYTKxtbFWWREM88lGj0sQnSJi8KoWkkMePGgbWxpHVpTQ
nK8yIcYNo/jaXcJfkS8dPIzcaOU5T3DewqvTOfRj99bFSqDKrFmwTNM2qyLbEh2vEj4ct/Dy3Pk9
CD8mCZwcIzKPEKmZtzIann3Oxrt++3ihMZyW7UnFpz6TiwDTNXOwPNWSPTn1WN0naYP+dBD2bhCv
Svsv/55BSBpiMu4SkxaMZ84N9Cgof0d7IkJLQkcxXXluiuDUz1MrZIsVmApaEjgCJJRGVIYwEdwg
edJNMiPRfWSnaD4vUAwVhE+2s3JmbvxUxUCVsAL4Jo1Q2qnRZBVTo2hDuZOadBZVRLmIUbg0UQhe
0TBa8Q7K8IUlqyydHazLstpmdivgCXTsxOsIKR2iY12vyrqTOFwT5VGBJIDvYLCEcZnU+gYhJoQi
vl+/Cm+AJPz5BnwVZVl8AwzR/PNPujAnMpHotnyqv7hzpMakMupcy2Ww79c3NzBMANsmIpomEBUV
4FkAQxMA/lc0JfSXqBugapALD6LNl9ixxrB2qDHIxvk92nOFYe9YYVCpfil9oT2PvtBFjFcaWuIP
ffHS+kJRBCCZxqb6ouaVlw61fnXn8YLmkmTCdyRWBLHl9+0PYHB3FkEEfezn3zhh1fWsCGTGC4fg
PYqd8A7GR6tgVTu4qQ+8wYnuKH7yYN/gwKd/dzFNZzfx4CMOB6Zo5xIvmT6ePPEytD3otGAkI44c
f350F1yG7wL6qMIxdufwGMlYOo1pHKysdRy3zRfzxfVvW7DGwd0d4gVsHGJtTnDJg795PI4T2OMI
OuFsgTx+b14T0GJVc/MVBp4HwyT/6USQHoA2A9XTWeDTxyYb6vI21di/uvGieW7XFpoUaEohSRaR
UBBEKLCIUQhQsgbljU4GnTlPwTpuke26qrQg4ilMzqAryrJQc1XbnwSV69Apx7111LmysgIkPcvi
5Pfd6ShisQSiLesTa2gLiiqY9kgg/4iCVLcEVYAhF4BgjHUdAyimhkyNYJuiYo16nmDZgso1JQIg
IwBRlESxE2AsaYpiITdclS3NtCRBQBCS2jB/zSfkRIv4P6UDADkgQ0UQFOzsT0z0QVFEweIBEEUK
QNUic/pGoj0WLHEyFjRFF0djRIepD1HYsKVvRAoFenBMkZjP4nUI0c/3SPnNqZie2vHQihrswFsv
/ZETO1Vs5Q3CgCAxmVUntbljDk5C6HhvRQOJCfmUjxvUtlbvA/GzPt8rPY9L+XDuuH4C1hSemjAM
aJqBNo20qAN7NZDMRd+QgWVE48eVQ3Jn/ZxM6RCMiaXrpjIZG4qoqiNbkLBm0RuE1iFUdghbM1Rz
PJQEyRRMaYw2LVI/utFUDvVnjNifwa6xOESlzNop9OAsZmJt7edSBq0Rf5S/FTu/bcYuFFo2pC1N
yL5HBDapK7vtidduaG+Aoqh1p71N+q+DVa9RHFSAPtmn/sxbz8uVYtH0wY1niyps2XBnoNOFg+d0
HXyBPlXDFY7Vp1mAfMB3kypIhaZmwJVFPhzOQT0CoXFVEmTEVU2mcJU8NVu9a3z81/rsNh+jS4PR
dSrNynVFVaWtqEtA0gWgGwZQBaUrrKLxt37AUiBmqavLxC4MVkHYWJl0IOL1Kq553eXIuD4lfHpR
wVNlTVNV9/mPdSBGJ6LmRiAyiBuBnIk2N4LZkShQt+VlS+qEIcNEobEt00QbysyQBkuUfpZwMIWF
LQcMKSgyqkuVH3SkosrTSNNRSl86KsdIS0mRL+tWqvYM1ZD78ncUoInUl/8mMIPGw8lcVyG8RwZp
RiG/d7bqBrM1NBag5myrdu6gLNmNTFz5qSJlTw0oiqA7K0eGVSxfHQubnaIroaZep1kr1cBJPIPi
AzCZig2NBZ3QpsGomIyOcuQcBd1clAyGodYNRsPb+XZWQH0GK5CUtDLx/7kEDUULuaiJOsUx2i9R
66icZpYzRGaPnNWOA/p9HcS+Dl+nkTbsLHVtJummMLx3Z5CkGGFPjvmTnbAm8aZoKU8mB48LXdfm
Z1i4BnuI9315m+7sHoJTI2P0nPxxZYZquE0O3L3uIpdaabImyVC3aIEM9yMJubJs9owMPp4nNSAf
y/Uo3Qezz53Z3jyfvQzC1YIxm93iEO4ws92aW/iR5v6R5n7ONLf4I839I829P2luybRMXRaVycie
DGUUoIr2ULLHw1eeUN6zpLAs63uQFG7Pp38HGWJZpeXdX1mGWNZlIGkm0EwByKaeRGK4HMfYkwQx
srl/3TZmOqc7glchvIVhCOfEFlCcQVmguYMvH2htF/swOQDPEEMcRwu0rC2RREdFVZZsa72WMF1A
7xZ58d2DyO2JjssSt+SidAx+2t1VjcEnu6IR0Ye8cv4cl/kfP87SAOWnepV9kmjEJWINwrIEY7Iu
7hIbheUq/5ooAuFYyFVCef3Sawv46TkAVSuXgfqmkJZpuX9AVrxPq2ZviUoRXZUZH1ZzxP5zGEXO
XQPwegFBelUB/IoXBxdvAdcH8cKNsp4XILgFxGIAP3hAXxJzFYFovcK6BsQBWCCHlFyUR2L6gGAh
mCe35O9d+AD+/rBAsrFwInADoQ8yTYEB0e/w6MNzZFiCI6JbDsEtdLCj+49jAH4L1mC5jmIwd6OZ
E84Bih5DMFsjeD+mzDyCcYzoStpMrAnl+DH4GZ6DTzro1AbhHIZ44J2T0Z5OAs1hFOCnggc3WuAh
VKwFtnTDIgRBCNIqMPDTX//vp5/rC5OYk/9H1OWC3Vh+tbH8aUSPJ5xcyE4hipLJ3NMbicLQNAXN
HE8MaygIlqDpklBRIZW0iyl23hKqpmg6C7+zsYMPERIhNEXv3vUHaSQTDZJDp/R/x0TvYU51PK3r
YkpN/WVltfjburgz50pLmIiqwpq3wehq/qbvjtNBs8yvK/nykD/8mFSAMuZeSqXN3OmWfTwPHgmq
ZEwETZJ1AQmvIGqapqs7OAloQfEKzqgEfIggGlsfHCgqLhRX0EYQyJ89PaMSjX08o0LOKDIVzd4q
CcjW0mk1tnyB55Ndfux16OLb0p9RkOM5q6ix2LkjIUi0SqwOjPgeYjs2kYLtRY/RJLnYDbL2CnZD
TyOeQk76doSs7fo0TVHN7U/TKl2CtjtTY2hbVJ9Tu8/ftIobHHd1+0aN0RLrARaLfePWObsMQInz
UQ082/2sjbZTzdeqKl2uVahhoklC4YK1HsQ9nyM3p7S2eN2+XNGso6pUaYVEvwSh+wd6iuORkqKk
7V8FrKVe7vMssW2IY0SDj9DaVFopFMMb8XsNE1oL+Ih3fmIs57RJMFW0fV7BcIb4hWLqXnQ9k3Kj
HL61Po5yrpPDR+4fMGpCtpeWFb6kLGpvgEivd6oAkIEJiG50gLAWlWXS/kMS9kQSNFNhkwQhGZaD
mFTXi0USqDWCZ87any1gaqpqPThqkzEYHe3OAFPUJNPA1bW2KIwUQbBMdajT7nDwuvBJm58j8O7s
w/X40VmucM/Tv39AYhc+ODEM//GcVWhJZ6KkxVDDCFameRH4TT+0iaTfgf76VSK+uFBEqTL63OaX
Jw2irkenlztHzRZHE/GVDbEVTa2LFangJajx3v43W1k4QfDRCV3scUY9R1gHtL2arxOhibLPklMs
iaZT0tEfHW/dAWuo7aDT9XLphE8dD1aMBjRl67ctC7+JYQrqcrSaIiP3UwJosYEiSX1RHV0nsYaQ
nA/bIITs6aqWo+kLIZHY7zqEpKDkDyFpvd82ih772s+9WPTIkoVvRDk9VxT4jFcNt8IVx/ZcP6iN
7rl3UButc43uLjfd7ZEr1tncES/H7meKeJkkZzcRL2P4eos+Np/+vGFpHaBpIql2tz+abQsxOC9n
jUaqZNiCJklSkr+RFer5BIcDWaD/mxf/8yIASS+Kv93F/+zCy3p9jUJ4qgOpV9howzk4VeEVznWN
+s9yDihRY3mO1MtIpQfRwxHqavcf9xz03WSmxrcMbnubAFL9GYr/qhsi8pI0SmlajqrXTSqUl4Rc
YRUgnEDRhc7KpXaiac5LxSr3nAf1OC8FKp3mvjQdKmqFYI9npNYrpOpoKTqqrUy9W3Re9AR1/Awn
qHmj+LpZoK3FFrFsdzhnZNtBl1GEqCpbHwRxbYUNfPjutxLsTFD5z4CkxkHrxjeqmjKxiRPf8/4G
Lh++ZSNu4tCrsjBSdeSWTUR7TK5jTOzxuM1FJ6MNrtEm62gW56OGe8iKm+fWFpOSaaxXjzvNug0Z
nWmGVWNwpun54I0c6/PxxYfp+Gr4fnh9+Z7phhjnKROlw/hLeOz7bQ11Y4zvXmnqSDElDcdUumDu
whpmqQtaY/emdn5Oi5gnOFWcM1Xb86SsFlEVNaDJKLLFZ7pquhc1A/0lSPru8lr0RvrFYvSVRQiN
GoZtTSIF5eY5LapgbJzbannrwLeyiWRbjbq3VW30mGt095bdZfpnlp6a8CeA0NZQxOoukcguEaSN
TBYDU1/WZJWMTJS93+GlzUt3r4KOl1UwK5LmLZlt9cgu7t1M2xnOd4mm630eXOojBfwNUqa0xf7r
kKzu/SeLKjAkBR8NAlXlcBnZidt618yWL71fXsinsqRn8KkY8p+82c+Xbt5FeCP382Yfmi91uecv
7bwqqoQ/beu66ooMZN0ECB3SC0aXUW4j8wVq3ButbOozeXVhFs4HmNIzJB2n9vlzRlapj95ffa6a
DFLai0bPkWCELyzsJUe/65iieU0/WwqiUWiqjNSDyM2KlAwS97toqWdJq0pMsxU4eUNYK6B+jPQr
EjicEhNksY6mUZtSMIFDMdGj6g20B/3Vljl0b8yrSTuPebXG7YINnNXaLt0kzG156+e3jHAthSdm
tVSu0T0OFJdu3WU8TPVZuz1xdkW0rUN9U7zqlLGofmfNqV5FYrS3q1WHfkdyWevZ1NIqpkWp8nZ8
ZOirtIHDQO2t1MAz7eyuVGDzg44QhL3BUkscskmTJcoCZrZQYy7N5G+2RH1sdrLR3nOFJiu0aGWz
tkt8bGVrvdRFKPsO4WQ8W0Ml6tQoxf49lxgohfqbzrWruRLNmUIiinv/0D3oFrnobrGUcWBQA2Rt
s9TNrhcPg0VDRQzS2i97s7ZH6tDz3du1TZXQdT5rqIJzdYqkAF1RgCKYu6+yYGiYxOhji/vaJHko
DscjXdBk0xhbSPmohikqtHeJ8JrMb90kWTTzXgeq0i3++yFvu+iRjEjdeUm+xlXRQ3tL8kHrW14S
EMqLknt87Ja7411+PGfgyNNrmb1F8kvFmaORpWmGoE9MY2QaKBa0VEPUW2NBPNpkHc1X08OgX3Z6
0bwQAf6zV/b9zXj2yrAMHGev4k7PXkmBz9B3lw71FYXf7vx1R+nw/TyATe5zojVeO577xw7uKHWw
aofaZ8t7MJmY8W9JxHOc7wF6uQPE8ySB0rfL7FUtAkm+pPP6/qoRrHaW8/Z56WDSZtuA5nV0i6oq
G8h6IMMhAtHQn1FS036AkyBEmwrvSQ9h2Sux/WRfUef4/YlwXqpOCAUdq8FXX8PMv11Ld+phIp8c
dxNtEoxb8pAuvHx6HEEZuLJNx7n8SlNjfZdbY0ZeehEGDxHNtH5nmflL0kU3msL4oj1m/QWxDL8V
++kNcDwPzDLxY4rvuzMHmqJqKA6QLUW1FHxvQDdHrN00ujIHZIuAdBXBEbiYXt403jvS2P4H2x3Z
J3xhy6fJuvIG0FuWlJFtl1DDh5cYD17bJLFW3gMtKTZJoGTrawixrWRHKLGl7BiLyWXcdENu75Zx
Dpc3MOxfBlFQ84WQzfY3raX4tl6JBA9umozfkrMF95pI+dZXrL/2omWazBhNvR/hs0gMxk5UQWY4
0sqyX9w5eojEUVbGmcQzVCDqJkCyCGRV2n3S2C7ZoK3aa8g7L8ugoOR3eSrqefsCjW5u7c694cyg
CcORNJyQm15j0xIEfELX3kIDj0aDGEczWM6d3kXALL5pW6+elBjzbmFMiTHwlSMlttvrCCG8dWZx
kHCiPqH05O/UJ628z6G/fu31IM9x7FLpLy3L6rZHLgwI+c9Z3hfr/P1FpO+7hJgvCO3mE+dVXEkQ
cO81ksWTVa3U2Qb/lhoE5k/IfnMyWHluhD78F1BLBwiaTAkeChUAAN2lAABQSwMEFAAIAAgAAoHs
OAAAAAAAAAAAAAAAACYAEABqc3Rlc3QvanN0ZXN0Lnhjb2RlcHJvai9rZWx2aW4ucGJ4dXNlclVY
DABcD3lIJA95SPUBFADVV9ty2zYQfZa/gvHkofGoFu+Xuu2MJIodj3PxmEqdtwxEIQpjEvAAoGLX
o38vAJLixZJFOnU7fYhDAbt79mAXi93RSHn1+uTjPHBPXr86ejgaqG4wcRzPCGauqVmWP1X18Xiq
OsroRLkk+BuMmIIX8r+TkfKbwlUGIGLxGk6yOFlOMfoSrzICWIzRe5BCLuLDRbY628rN7mCUMbBI
xN7EngQT0x+rM93TNX+mqkEwtWe2gPtGGaQCptIN/YtLAr9AAlEk1FMQYXqnqadWJTMHZAUZ33R9
37EDz1ZN1x6PHVtVfc+eWLPHtpfLOc7VKNf7iS8NOikPueQbYSHCSxhCROE7gMAKkopZkDML/Dqz
KRdXqJAvPIDbM9k60Olktg7cQvKRQuLHkTh4QO6L0AwuJ58aMTnlC0Gc8FPiYD5gIMQZiaAh1meE
YEKvAUExWtFqs7Q12K07xUmWohATxtX8mEDpwwUUPhz/rB2fddXNVZ5w5PNbHEkW5/5ho9fxkn2l
uU15ooOBrg7zD0Mtv3RDy7/eHLbYNPaUn/P7W3juDw8LvoOU8oTpJFuRr3u8Oesb5h3r/3qEhWCN
mviJeLX4nEv/cHhNbdhaMt3yw2h/lDLPyYAdPFgr9oeo7pUUBZUdFvsgq3EY/9XBZJ5bh+XK7Dss
mZfNllwrMy8hKZ6OOUxvE8BgyMQfsBaWRPLphmM5tu2opco1Jjf0FkRPS25qpa9AOGcwpWU6yxpq
OZqsoeOJVq+hHGSC8U0KyE3+knUXPqtsu4YQNzRj2hKfwzu2y35XhTqG1Rejo0Idw+6L0VGhhhHo
QsXUXLcjRleFOobZF6OjQoVhG7mKPTa6YXRWqGNYfTE6KtQx7L4YHRW2V5MWpRMxgpNHrdFsV2tU
vEeFTmEs4/dbtpchZOIZKS+4ABH/iqbV3tW05r3SaVq1q1k8ZXesrBEU3r4H63PECWRoSa9EZ8tf
tYcHdaiom6HyoOmOPlQ0T3M3m/yly1VCmFwBtIJS2tEsIV7f/zOm1T43pjmelwuUbnfqMRs9tuid
+YL6T/SMwoNOCoUHMQVFd7YFrpruMVmdo2UcbX2RTwB/G7IUIhYyUkSt2soYHjMGoq8f0JQA+pVv
amJjQSC4ucUxYnSGBMiy3IlkgyMfBNHn1nJgEGWU4VQ8SwEmKWAMkrb2UkwhPP8uk2wVI776hz+R
kwn/JaeTJSdIKUwXyb0fU/5M3Uuo7XFLc1KD0ymtQrSOCUaC5IxnbNzkX4UovOenmYb36QInb+Ea
Jo+jKB6xHQJJvFilIElwVBGSGyifrvIwVbctb89wy5VasLtdu3bQwx1XWYB+4a4tQHRzLgU/TffJ
xTScvmsxoFHaaFpbt7rzBNX2ddqaxiQ+WsK7sv24BEzk2/FxHcmyXYnkzYzH16BeP7Y4ohW6KqdR
GStA2QXC35FsIHkfyOXyqIgB8TQ65ZNz9Ch2p6lsY3KfRiIN6OgGJusYjYqmho5yyVFdITc8J1BW
mF/BgvIejMHfZYn5z2tcIXDNzx1/D0jOlyNqnjdUXE+CGnz2UjzN3jTLYhGNPO7jcaMoSfrf6A8W
c8d9iqflHaRpefrTNE2Ti+mmfphnx+60kXjllryAPAO33cyhQ2sg9+hdG+j17ed4UGb/cbH6i6Lr
8mDIW4jK2kD4tCuKLD9p+bO4TXJvXQg6tlv8xOWrWGPXvWvuwe5QiajTK5c5P20fP8vy9tIzPbtO
z9C0JsHuLfv/MHw9hoUXD5/mPSd8ltUIn+41w9djUnl5grq6j6Hheu5eirpqeg2Omm3WSfYZlbqQ
7Njn7yHpPieKtvZUFPvMaS9OcH+V4S/3XoLiyd57DfvMiC9cZOy90dsfvLL8tLhtjv4GUEsHCAwL
cv19BQAA9xgAAFBLAwQUAAgACAACgew4AAAAAAAAAAAAAAAAJwAQAGpzdGVzdC9qc3Rlc3QueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvalVYDABcD3lIJA95SPUBFADNWO1vokgY/2z/Ctfsh23TKr5r
vLtkgKHlVsEAdtvLJgRhrHQRDOC25tL//WYABQRFW5tcsi8y88wzv/k9rzO1WvnL16uJwvWuvn65
+PeipLn63PyN7pHrmY5d/rNcH1yUdEvzPOThLyzxhgec6TPS/Vio1d4OhlIXtasyjZ5MuzymH+iV
aRmcaaGyhwXIiqvaRanUY9luh+sDqtXrANDtUBTb79BtWMZrnz0feX51UcYaZGfl6nj3qxpRbXoa
/i+pdVCe4X8lNMPjVI+ju91+h4O9Vr3dZhmqAQBDdVM6r2oDjMT3TfspQAsUReLpiQJl/PXtclB+
I39ihEweQs5Z2YZGTlOdudoCvTjuL4KW23ycBBjmAc7dgoAPwNEdmqNbsE3BRr/RZxsUxXFMB3bI
yr+135qsu+bSZxwXfQhgtE3rpG3SINtdKlgNAEyuDqzx7J1q4lBlhzukMtofj0Db2OuCKSdlnOWa
CHiB6HiuefnuCvOcYbs4OgEWL21PkaOZUFOakk8Q7DDSvF9YuBeMG54/1vw5/q6tPLfmzTUX1Raa
Tf7WaxsReTWdOZaBXHmJdOJIwcQsAIG9mHxcBkPuyhZta805LouWlrNeINsfO56/dB1MuYeDIIry
UoqxAj5S3HGhcZCLbH2HtSMDMmX2lLrQ9NDWHSOE2hqUcTryv9vOi00klfUS4WEvcCEshap6Faci
fVBehixuthlEMoqLyILKH0+us1r+VYlc9R2ReAh1HsYXV1sukRvrGJRt/AvP5G2wPUBNXuMjLGpD
c+pq7roWR3Atf93OObWp51grH22P2myALgUATTW7VBvWOYpi+vVurxkbRR27aGa+Vpf6/PzWme+Y
JrFZgY3CGAT1/SWjAC16XVqmbvoJaBXdWSzxp1FdaPr8xqmiV6SvfG1qIbytaevWykC8zdsGeg3i
LA1+BzE94YeKOpZEdsIossryUjpdn5pHz+BiEdx9mxRQfly6PauHPGOkXoB0Cz7a6SDWOHftzUfp
rLUNo4KUT+fW/90ymsr5ebr3JP1GvdVt9ZqdVjebwT/egVwHas7SK1yfWFOoTE0pYjxlnlti2txi
0tpfTPJsESgKYOPW1jKwU2zpjRS28xSGPcmWQqbTa/chaFCNPtVvQJyCgpzZIKKso68IBVoE9Tqp
nM1TDl995NqalWRYwySFKd5EsenqgO50WwBr6bPtFt2u1xnQYGiaaBm7jrEiLXfKOFFJidITGdkT
NKF5jmThFFpPrS8pvopahexJQ4wnnPTdJjmFhHcm/BQXpzQjWV4qhUeqHEPakR54CjdH1fHsgTa7
HYP6lHg92ayF9TCLPbVn8QHipJnJg6ksKWB9v5GiuU/Izy1encJeKXXypL64YDGOPTOfVm4Afmji
pfjKwEK63+i2qF632WTZFkXVKdhnWKI/SO9lPbmqbJFlM8fNoK6EaCrk1rbdMagNmTrYzztMfHm8
TsoWV+2UeOG9LmHSAKG0yly1DLREuE20dXN3JpuTl6Ev87bna5YVXfgqX7/diSN4WZuadiUpJuxb
H7c5+Pp4TFQlFyc64CpuGy1UjSZufDxT9R3HyvrjPo9LuSWOVPIYlFu+m3lJbbMgfETK88xI4iin
7L3HKTcQdv2R3A+w9NS0TH8dv3lVHkizWm5W66GlsMPKumbbyMBt0abf9TZ369JCM+0wlLePPof7
mI2hCCbWdDceUkmOS47jx4N+YJNM0BzOALFbp6ycY8CUgaOgK+icC+I1Y+OM1g/0zCe8Kyaa5FPe
qj7eEB9kMeb7gaEzDp/mO/L7dp7fs2i6esqwnaczZltOPI8G5IDhD/AoqzIEEnOnTmQoqWOg3JEX
U0EchB2yOH5Ux3dAhqqsSPw4McVJYAR/iNL3jYLN2tBiJZz3THuOXNNHxmXlOhr8iYdliZFEUbn8
WYmGQ75Ltwyjso8CGPGMKojqmGcS25FJKAB6CFWOf1CBwKqMKCi8MIFY6hHKsdhIZOFQVSYCL9zi
udt2PCWOFX7E/wMUXhTUIbyHw+0zWzA/liAjjsY83gX/JBvdQcBCaXeL3cnso0cgyguyAobDgJrN
25/l6JpFikEoEj0rqPjYMF0N3lKtBjF43L6FrtHJcw0JWYh43ec7BwYxuVV5gROlUcho+ItkL+NF
c2c3L6Y/vzG89aLymT5zwN7/W3tGVtq1aP/zgh3TLYftSPATxzOOISCxarOh0rxyWYnZYNQhEG4n
4BZupfBKvd8/PpB+AElQAS1OFFWCygR/KI/jTKQGUhMBexer3gOJJ+GdlBGF4aMKGIW/hypBnZzD
JqN5gQ1tvnFJmf1O3ASPLDTd8V7rVLV9ZDCBzwym85J/HnI/QGDae6PaV1TRkrUv2+fllb6z3kN2
DZiBsKcLjZuQYwrydVKyID8neg0DzbSV5ac25r170zOnFtpGVp6UcDCfnKtpPht5BxNciryCePw8
8rbufNhJCc0u7tXF8HazvQEcdxUaXLxd/AdQSwcI6FHfJE0HAACpHwAAUEsDBBQACAAIAOVr7DgA
AAAAAAAAAAAAAAApABAAanN0ZXN0L2pzdGVzdC54Y29kZXByb2ovVGVtcGxhdGVJY29uLmljbnNV
WAwAXA95SF7qeEj1ARQAnLp1WFXZ9z9+dMZxZtRRx8buFknp7u7uBgHpEIRLg3R3N0oK0t117+Vy
O7h0h4Ads3/nojPjzHs+3z9+5/F5dPPyrHXWWvu191o8L2tTe2cIGjGwdmZjhaDdpQGWEC8CQH8g
wK46/wDLX4Q02sprceNgZyGmL8il6pmN17gPLx7dUsP6RA506Jj4xe4zt5S9QJ+nLKOyS/Lg5Tu3
21ptj98BB8+VPESsdNTG+5ijJ4rem8sNBQbGxDQMrS6Njah6+Po0RXp4xkQ3bIyRB8CEv5lF1JOs
rMjwVeRwSQ2osWTXfOGelzfdXJdXldtNLzIWc+9HGN2ZHGkmEzMast2kJJMSOHn4umY3NjdruiiR
UjJ++rx8fL6CsbEt3dvgPTD300fw7UdIxMZ6HHd0Ko8yY6wjARwieyDYVeANB8EjWJ//bAwFdhaC
UtfP8phGDklehRdG+zkHTZwbq1W04XhMze//NoRCT3b4ZGXDy/duR4QLDLeBgvRk5k54XxAQFPlO
6PCzJ09iYuqH1tf6mwUVFSRTfZ2dY6LrX43RO0GPo5a+v11aKhweari8fDFd555srk1m5nTzy/yq
go6OGHUeq3qExp3J0RY4vJYEA16eoJC791ng8DY2X3TRI0RFXVVYWFl9hWNiW3q3wSdg7qqCYN2P
kIyBw3NyrogyY6zh8Kyh23B4oS4B1r+wniqNSR7uX9hZcF2BoBNCFlVsJ+GFOMSCMnQoDxdR8kvY
p2908Lf2ahS5zdgvA15+coH4IpWXP0qztqYiEqRjt4A5BAVtMO9B2NgkJjaOrG/XxNznZr/nZO7s
nJjQuImZfTGZpC4uba2VkhQfu44efVnc5il6mStYMyNtprWluLa8LcFe+LZyJkLs8DSqjUQs6EJw
Xrlh7XTxypWeBcSrvS97F8J4uY2EEVd/8hdNSOgY2ESA3ZaM9f4A6YQEr6MuLhXRO+tI4Mxl9xCC
dv0MfXt+2Lv3N7aD0F/PEXULPsi28d63ZRyAHwoAxK/LEvDtKdtZMv25BGxf8T+XfYzFvq7A2W/r
R4x1xl//G1yFlxJ/LzcY8Prf6wp4Gf73ErhDENt3S/ReCGr6azWptxPHOZN40s765t/BHNaPe50M
/edjbcsg7C8mjWDXNCYa7N5srwwEe7ZXpjFsIPT80XNnJPhr/uioeV7yEjMxXf5mYSJAyCX03tG7
t1RkWrUEJNWtA9MzQl9sgRKZw25h948wqygKyCmJ8KpYebkkPRvKvKHvcDPk/jFm5ruhCnLXRJFx
vLo80Q211DxNr0suYeZHPDQlz6oHvwEj+XVtG89SQA3buTnGj7lu/NxGx70FTd1jYE5r6Z2ANS0o
9kSPnb29IydkPfGm/HnBwip2olK8DBjX1cFQ65sHAn63jhbVZMbVpnzZ7F524CoERXUAhprXpk8G
3jtQBmJ+aQNfwNtYaaWedy/rQGDsyajmedLHhx4nT0tJIvIB6H9yWtMRVCgCBvYUvAVbRTXyeyCJ
kbHXU7e5nK2W351QAiAg6nj+1nsMCbR20h1vQMpxNuLCJjmzY/6/IoB/1ImIXIAdJyzWtYPPLcGm
eu6xdV3tWf6xBxDAL+pkZAigY8iU+fYOAObH6ksLs2K9Db3an5yA0YiTPZ//GBnBIIn9HeAVKs9B
+cHF0+JBRR3qpxAAEXEqrAdMoofH6T053WB1sMDPTFFKxSmh9KWcNAP2DQHoMiRxqMA3eOjjfFuq
l4mSrJZXWnWxuBgXAI6Pojbf5FQXlqUkxdR3L0++iHXRlZc1CMppTuTiugvjdpEgIfxZTmNXXfVC
T8vcszA7DVl5q+iSPhdePlYAbCx7S1y7ycgBYl1WLSq5ojLYSlVG2TWjJY1XSIjnFpjvAZwo+tL0
7ASpTLupt+ihjZupsqwWojhFVVBIiJ8ZzIK3eCKRRiV+aPPuqpsdMOdlvsFm6BNgrYYQOiPIArzL
huY/b1DxVHTn0OgwdXu22FVXT+Rv3P/5JY0n+Z0L4FVdHXGGMkaYp4HHYv7Bf+HVtwwQhZcNXHLa
lgB4jRvo/ePNoePHwhj47wz8xV0jRNktC89C6LJqRNc6Avwkf+z0qfC/3mfgz+9aeD6D7urGQPsE
4x6pMp1j2sF3CbK0AZggxCGYIFv1hTBBVheIwzdB2IUj50SulYDG0rys8lHqXOE6odvqgX0o89F7
dxQ4akWv3RdSd3z61PPZ2nay0I8OT1l+V+C7zMlz/RyXkqWed1Jn9Dl1kwvwT13Z2X650o84zn/8
ybPcnkRVh2OPYBI8ErgD8Zisg6bwvOcLOT5/FN86NPPU/HemfVBZX/M8KHrWBojc43Os+mR4k3db
P3yoewzSGlyLjI9YWOzFxe6NAso1NTDU8oZTwGYfFJHo75n86MNm9YzSLv+3GTUMajStzTA5H4Qi
gA1UBDb+WHA7ezNrsrpqhxpN8yRgrA9B5y5ZRwDwTA+6JfwxW26HGuEwNd5mZ9+HoAvPmxbIew+K
3O5cOiAPUyPyeP7m+3EyqC8f0foZuuIgdGT/Fau2HncIpkbkifBcgBsnrtY+B4slj4SZJU3806qS
XQNh0C/yZEQwmBwnU5bbKj4tjbaWpCfGhrlpWFc67t+hRvcXMDqKQZEHyl9PvHxqJMF67hi3S0KN
5G9fqdENpsaGsVN9RXUrhJooB00xAQmTgLQSIb4/qfEMSRoq9ItqmRkrCnqoLi4s+zAsJ42PF976
DvZRG29hajxLSY5pbkAOpj8xUxQRUnaNef703t1L8Jn9MBIkRzzLbex6Wb3akT+Y4G4gKySi45vS
YM3Cch0Aa/O+UncGNQh12XW4iLgkF10pIXGL8OdRLJyczOe/UmOKQQ1imW5Tf5mxiqm6uKCsQ0q4
JAcnJ9uV76nh01U3jzJnuXL2uqqju74UgvMM+zWYGsOLX159o8YIZWupzE1XV/BvHKaGpvdXarwk
MKixMAm8hZw9/8KrbxnuUCO3fRmAN/jBfrB96MQJbwb+OwN/ccd4hxpF0GW1yO6NHWqcYXry1/sv
7hrvUOM5dFcv9k9qnPZh4LvYr+1Qo6+FcXeUJcDUwJH7Ws+C0CtHL1/m350MKtJiw7O6Ketx+NYM
gTsWYaxHWKSPFJ6Hdh2+KWVlaZZKHvdkgayesv8ufRbaffSXPRe5FR9IOVa4/C4p9zv8Uw3oV+gs
2ufIg/3u2U/SAmQNf7AINT9qZXgAgh4YvgYNoek179PVRxIuQDOh5rssJBDQwbSarNHXWallm2PM
uR0XZMhBCSf6za2s2CFIuWvS1DdhmdqC9IIerXGXl8NQx3t2QSEI8op1MfLTe7VVOScGWXZGlQMY
at1YOqMEQS5ERSj+A4WONN93ybe0rBQEJpyMbV2kAzmYAD8dNY8CIEoCOsfa7yMNGFgU3DOCJI9f
4CYisxCNhHaxnk9qhqRgdsQcL9r+iKWAiqg8Tgj6XfvuLuiwbFyGGYMdMSeiCgB+nLBV+XShFaF6
h+m+hKF7uIexA4MdMSejw8A0zI61lujJgYIY/8duzg4GIuqJegw09mTfHwCFHEdTh2IIXdGW4pzX
jx+8ofM4lR1GEbGnovvA1DgSNzVUkTlYH2mnLsLOzCFrg4hlvcOAfSPAeCWKOFIWkVXcXOFnriLE
wcKt6hAaeO/2WQBcnGI33xfVPqvMzkrpLSwucDeU52Nl4ddzj3c9f+4wAM6PYkBmQlVxS09j7XaD
Z5aDrhQ3C4u4hU+O5qVLJwCwsxmqQvRS0IOExoJGuqeJs7Y45312Rcd4rys3blw8CJb6wXE0fX4K
vjgqLVtGa1TuiAtx3OfS9nHjQtw4c+UoWADvCEQilUp82xHc07BMMr10eP9xIV0zOW4Yv3YcPKkY
Wwev6QQKunsYOUrZflXlrqvH+zceUHVZy7e4fw28bm4iTJExpMVZEMSja/4XXnfLKKD0kqFHfjfc
eb0lDg+Cj4dOMVky8N8ZeP1dk4CKW5beJdAljZi+LZgdCsfOnrH66/2GeyYBVXctvSuguwaJDHY4
qDGdP2fNwHddO94GbHc6zR9//lfjtefXw4eOnD99gkVQ9MHFX349sOtf+O79J65fv3zv/FkOXuaf
4Pd3/wv/6/8f/Qm652X4H62dWEBRQ02KNgR5wt1gw79Rj5VvfSP2+c5f/v9Af6WBfz0D/8C//BsG
od/Dz/4HBoe/t/6/8PD3r6v9L37re1zj//06tPd/cNW/wbDUqxD23/jf+bwPr0jT/4Kb/8a3//fb
AHCCdn3D/f4LBjf+xC/8J8xw/xV//59ww5944n+//hj6+n1n/hsGEt++/X+K+u359Sus+n/AtG+v
/x8wuPwVLv4/YMmvsMt/gosRfxIj6dV/wKbfl/WUfgr5n3Ar9O/noFIk8m/8f+CdZ490OGYHdvxv
nPHsU4nfov3f8P+Px9qFMWl5XWf8+78yQQR71+nonubW4aUtsP+PubG+rq6OhuLY0MypDfDbOnaU
ODM7SUJ112bYG5WNgMNf1iiozsa6itKSipfNPVja8tsIcGgaTVvbWF2cJAy3VWZH2/N79INT2+TO
knh/NycXD3fPJz7+QSHhMQkp+VXd+KVgcOQLDbeyvbUOvzHSVpkbh3A2u2bYDfa9GsoPcrSxdfLw
8vH3CzwYGp2UmllYWlaSl5oQl16D8wfHvtDIr14zXsSPtFfnxfk7muurHn5SBsK2QgA/tTzQxsza
9qG1paXVQ3sHJwdH1ycBQSGxmcXVL+uqSxN9veLq4V6ERt18vb2+NEUY7XhRkBjgYKKlIsf/U3Mx
2JV5O+wAZBEIBMfzPSwsTQ20tbR0DEws7Bxd3D08ffwDgkMjEtLzC0tKysorn8V7Pn62srG1DZua
JqG7XxYn+9sZaykJcoqcFy6Ebd2MgCRFy7cAwOS6WprpqquqqGqbWNk+cnBydXN18/QJCouIjk/J
zM7KysjMLa2qrcv1jhoBYH1xmozpby5N8bfS05LnFDKyNTxRn8ewFwP9/qt+g5+NsZqioqq2sYWl
lZW1tQ3CjtnWzs07ICzsaXRcanpmWlp6anZBSXVTa25I0eznBfL4cFtZup+JjoY0h+JjHzujyy45
DGtxkMQ5S4SloqyckraplbW5saGRibm1Hfx57k+CwmPiY2Ljk1JSExNTM7KyMvOrWnrbEiPaF2kj
HWWpPoZaGlLsuoFuFiaabNIfMxnm4iFJkRfRSuJScuqGZqZGBvr6RmaWNvD32djaWjs8RgRFxKZk
ZqWmpKRlZWVn5xZVNPcNVkfmo/pL0300VWFzRqEuViZ6ajycW+kMewmQlGm7u4iopKKusaGupqa2
gYmpsb6uhpqGhrqKkqq2nqGl3SMXn/CM0tK8nNzc/KKyisY+ZG9aXG66n6aykiSHVaLPIzN9LeU7
qp9SGQYToRMPuywExKRV9Q00VVTUtHQ1NTTlHjA/kFVFqN/V0tTQ0jEy1tfQ0jNzjS2tKsorLC2v
qG7uxyCLIh8rKanIcVjlBjtbGmirK553SgG7mjiTIGnbfkNecVl1fW0VBSU1NSVFOSkOCe9AIzY+
LU1tHTUlVQ0DYxNTMwMNRVkNp9jiZ88ramob2gax6MpgZUlVHoO8MLeHRjqaagrH45MB5JIMyRhj
THjE5DR0VOXlYGty0uKC1+Ur58GXJk0ObUMNfjY+ZR04swamhtJSOh7JOXk1DXUNLa0dQ3hkVaQK
j0pmrIe9qY6mhqrUhf4kAG0mQ7I8JCduMTl1TUVpWUUZSUkxEZbrxnmtU58B2HrII6McHqvPKqRn
qG8kp5SC+fSBvkAoaOppbG3v6B4ioav8ZSJTHjta6Gpoaihxin+ETWYnQbKHR5O4RWQ1NOWlZWQl
JcT4ea7de1qR2/Ia/AHAF22p/I5udL0Vr4KprCHy0x+A1kYAY/ZdyJaOrq4e9ORwTni0r5OVIVxI
NZULXnDc8knQyaQBUV4pVQ15KVlJUXEhLvZzXFkjgcbJ/W/8wI3lgWQl3d4PoNOKy2YdTLa15te0
zwJ3qQ58Z3dP3xBhti35iZO1kbYaQn230tXeJLDr85FESI533oZDXEldTkJKXESUm4PlvEJ1naOd
tn0FCY4d/lOb2FBctQa2q+mU1uqAxJi8GiyY4lBooPb2Dw+j6LTnoZZGOmoqappa/Ep/wJGjkiCe
F/V8/LLqChJSYsIinGz3rxnVDhcbm1khCtrhG/TLH+8IvZShtrqG6S/vOh7rmASWfZxb/QCiWVUa
6YMI5AHs4mCWm5qmkrKGjv61BDjy2ESISXjZhl1CWVlSUlxIlJ2F5Zp+dlX/86ia54XlFH9w5i15
MLv8uW9SbVn9MjHUMHjkC548B0hayqq9U6OIsf202ZooXUUlDT1DVd4F2KJVInQ6Z1iUR15FWlxc
SITjPusFDu/Iitba6Mx6+hztsx+4/WV6rTcuJ8gqKqdyHWyghicXyeSZdyBaX9mEQhvHjhPXhvOd
JdX1Tcw5vFIAJJIAnT1FjWIVU5ITgz+R6x7z9SMCvrGlWQXZpU0U6hjxLQLcXsKv4kewL8o721+i
Z1Y31uZmVlZWN0Cvrqt0yDqRSCAvzlSHqeqaW5lyjCeDXW+YEiBZ/RUzFmlFeEOKCdy7c+XCvnNG
T4prS6uxGCxmfGSUNoeubxvEzZDxJOxUd9MIZXJ6ZnpqanbljylHZweZxg0ShTq32ZZkZfjQTswO
5uPHvbDNKKICl5ycuLioMNudKxd/geSKe8eI5PGRoREkcrijMqNjeQaNX5wkDWO2BmsGxsg0EnWC
RpsGFCdnL03Xtcmpqbm3qGxPMwdbzl44dlwiJFPbKiSoICUmLs577+aFAxdi0R8+LU3PLEyN9PR1
tVRn9QPwcX5glLjxiobsev6SvDAzg8UQcQtvMu3dPb3Umt7OzM+9phUH2LjK2aSC3X0X7wYw777H
dS0MptFIEY+onISEuAgH83WmPWFbWd4F6IEu3Cytp77meWrNh3erW9Xp2VWfwceWnJxJsL0F3tFH
F2hJTt4eXgidpx/n5+c2FypD7Jy4euATrlAx0P4HO8cI5VBI5iYt6YGErKSUBD8Ly/VjJ9NxvdG+
pQNdmNHxztLCyKih8aZSapV5aPMbuIX1IQAw3UYDH2iJzpaBvm7eXg52E+vzC5trtU8dlBkfvS6v
Hqj/o56az6hRCCRzixrPKSkjKSXJzcx66/eLOSNt1S8qXtQgOwY7snxcchcx4S4++f75W58AmIGz
8wVV1VdXPRun5Obj4eLr88S489Pi8uarugg7rl7Ydhq3UaD+Hj1N58p64WDo2k1SIrekrLSMBOd9
tru/3ymrzo1OqH5R2tiJSTd0zOge74oJM3fNXfUD5z6Bd5SO0mf5QRmzn53NbB2CQwKCTCvB6urm
Zl20lO3Xzw7S/0lP07WkIHBXEHT1Oj5bWFJOVk6M/T47y1GuqnI/fXWPlz0FjSQBnpJBZBwiF1me
O+AHzr/ffL/Z8Cy9uLOxg7riJmMUFPDQIsC+CKytvnlVGcY3+vWzg/T3wrZLU3wd9wRCV0/0V8lI
yMsrwsbZ2E6Jl1ckK7HrBvgFZrVd1hxDFqfEx2FQw1gEOD9DW329Uh6f2bm0Nr2yrS3jFmXMpxnk
UQTW19+vlFj7f/3w4K/G06xydYMgyfI+LVH4CtqxfUEpu7G9uLD2eZh/WfFdpV7sy1ZaR9sQkg7A
BgVHpZNHWzpHqYOrIF/C1E4aYeef4lwGXm19pmfrdnz98GD9n3ds2/qmiAVCh55S7IWVVNQlGMav
aDTOf0EAtnfk5p5wbmG3oYlp3NDAaC/qj42ZN5uTJOTw5PQ4/fV2vLqBlpJ3qW9IrPsLsLkFUOHW
syk7Hx6i/8s3476pLAHQNaPZCAklVV0ZhvWLhlPvVta33rx7PYFyeqAs5pSTlzGyvrlAoM0hwJlP
K31NY/OL78ku0pYGKlaFrqpqPoF9YHPzU6NN0NcvD9H/9atxhFt89GF/6Dw3vkpLTsNYmQO2fk2y
C9eLnpidmdrCqPCpqUpw8OT5gx/mZj79gQBMM93ImdctRio2BqoaHsEazlZuMSSw9X41R6fp64eH
6u9j2E59iPAMCHI+7AddPFSD8pDVMtPhYWVlY7+lGVfSNkqg4ppt4VtTnUcuj/7mDz9w4fXsK/iO
A9OUxRxV/Yd6Kur6HgmG8iahZRsftgDS9+EGbD2VyzBUb7+ulnVqjIa9a4iDZ8ohP0jMh5StrWFi
LsHOzMbJcfmegoWrt4epIJuUghyPHaU9Hh4nPsKXytrUp/fv/wBUHzVLczVVTV2LgJwkz4i4BrD9
/mOJXhpsfVVLL8z8gJWc9zClMdPB0UDtxZM9CEhKYrDfW83IUYODhY3jwYM7Fy9ev3nznoCMPP/t
4K253MyyTbC9DRtuboFnarKjlqOlmpKGjoFrvIddekEwFWwBbIh8/rv3G28SwO4KfvNQEx1zRctV
8BF8oPQl2fkFaP4AQWeLiAVWuva2wuz3OTi5udg5uHiFRCTk2YUrJ0fxcfZBOLBFWf4AyLoh5dkW
pm4W+nAfp2cR6qck6xlWBl5/fJf9WE1GXUF+FvbhfFsqVPKgxNVasLo4N/8agDlkYcljBCThiuqN
Njb31uNgY+N8wPuAk4tPUETigeba684p5GPHiOZPYG0GPsfCBVU07Z0tjEwMdPXt3Z4m6FpGP50F
26ADYSvKz3XOEHaxzM0fKq4jecUCrC+srCwtLC5ufALbmxU2N6TKcLUBZs6+Muxwsnh5ubhhHwKC
mOn4yPbG2GeNPTS4EnCV0xWsba0MTMyMjUztn0Q5BqQnI5rhTFFCPdVEpaRvPIZ91J8WDBF4IMh5
CQXm5hfmllY3llfWllfewX29rcMgshRhg/AU4GB7wMPPz8srIMynkf7Q65FTWvRLQl8D5iN8+DjK
6OrpGpiamVm7eT8OlbXJ9cn+8g6sJrrZKYhLy1wrgX3YH2QNYdHl2OsNVpdW4ChW52ZXVlfW1+ZX
3ySaVowN5SMcwl25OTi4+YQE+AWERLkt7HXtPdMr+5D4obZReN6tU9TU1DIwMjaz8wwLeuLrEuMX
s/3H560cV9dH0mKSopyT8WD3O45zIff07p9kXfkwNz83M7MwNz2/NDe3vLS+tVljmdNE6c0Jehzv
ys35gEdASEhQWJRXLKcwv6EFM9JOXJxA93Zmmxhoa2vpGZnbe4fGREdFJ/uGrYJPr3JdHwY7CEpI
cWp+gb2Ms8qGyF+Tu1gFFpZW5uempkiUycmZlcW51bXVwUdJLwZme3MjAtJ8BNh5eYQQIiyiEmwa
PfPUySkytqcqI9TJRMdMX0dH19jK2SckMjouLtI9bh18Xsx0svZJ0uMXlzwfAufL83euYM4bXMfs
wdr8/OwklUaGOxLq5AR9fn5hgeod0thKXB8uTIzIjZJj5RUQQojeF5PmVM7rbMiN8DDXUFY3sLbT
1zYyf+jkjoCn2PDIILeCd+AzMf6RtX9GiIKYtMzVjgSwS+5q8AN97rtnR8HcLI1MJuKR2AkKiUyZ
WZiZW1iMfNLUgZp7SyzPSCzKf8jFISwsIgrPNmKS+loK8ur68NTqYG9hauvs7u7h4xcYGBLsiuiG
W/TOYNuHoZlpHmJSsnxKb+CEUdgkg2X15C7ng5mZualJ8iQBjR9DE+mz05SJuaXlbM/GLgxt9fNC
S0FmWX2sNjuHiIiwuKyysqKajoGRmYXNIyd7e2cPL28PV0/fAISja8EiTP/Cx1aOsblJyTZwXS7H
wBnzg5iCTumfhrg+vJpamJ+doBNH8VgUGu4OMbTpqZnZSs/a3vHJxfUvr8deFJa0NoRrczDziUrJ
q2rq6BmZWVnbPLR3dHZx9fD0cH3sZuOSRYJ7gfqndlaeabmpybE6wpISt/vhlFnyBCkYKEqx9oKp
uflJ+gRxZGwcTaURSFg8Bk+jTLQ+fj6AndtY23j7cWGw5lndYEfyQzFmVhF5eHjTN7GwsrG1t3d0
dHJ2hKd+//IJ+BhuSnCysA/OykpPywiRF5MSFH8F52ze0CnI5Qc3lUKAmNeYmZqYwGDIBPIEiUol
k6g0CgXf55c7gp97vfVqbf3N1sRAw4s2zHhDoou2lICghJyqtr6BsbGRga6ugX3YMwx8EuCqYpwt
H3rGZcCjcXrWY1ExyfvWcNKSjwoG8IsLCJ/W+uPd7MwsnUbFjuFIVDKVRsIQafQpCpVOCUtGEua2
3r5eX1leXlskDbU1to3NTI+1FCcEe7vY2zk6efhH59QiFxHg+GRrToCdhY1raGJCUnp2TnrGQyEJ
yZvucNpk9gfeMLx55vduMD03N0nG40fxJDxhZgJNJE9MUbF48jQ+IgZFhP283d5Ynp+iT5CQPS1N
LT1j9OWN9aX52ZmFxdWtjwB8Whx9kRHkZG5i7hAQFRWdkJadl5ORqCcsJXUzGs7bwJ7zgZcML0LJ
YHp6ZoKIoxBJNNI4XB94d0/TSEQqnTCWGjlKYgS0vb02O0kZHx3sbn5RXvas+mVzRx8Si8OPowfb
a4tTQ92tDbW1DGw8A4JDI+NTs/PyczKfKolJS199DjsKvygbIG0kf90EbCzMT9OpVCIKg8OTp8YJ
VAyZToa3AgFLLXs6QJrbfPdme2t9lk4aG+pqrCrJToqODH8aHhEZHv40APHY0YoxassqaBjbOrn7
BofHpmTlFRRkZflISsrIXM2KA7s/6UkFaBpri+pu/zG7uECnUmjEsXEscgJPIqMo+HEUlhHjdH1o
F2n21ds329vrc5OksYH2uue5KdHBPm6PrM0MtDVU5KXFRIQEBUWllTR0jW0cvQLDY5MzcgsK8zMz
HYXEJSVuVsGuSKJ6AfondXmbwOzi8vz0BAnTO4RBTxCQuDEshUzwI17FTU20hjeTZzfevGZ4goMa
aKstzYp/6u/lam9lrKuuJCslLuonxiQpq6ima2bv7hcWk5iWnV9YmJeeYiogISnKPg47Crmt4C8v
ong7BcwvLM5PT9MIaBR6ZGhsYAw5jEVj0UgMmYjColsjaykz669fb2+u7bhqry3Njg9FeDjYmOpr
qSrKSIj5iZwWlZRT0TJ+6PIkJDohNTMXdpWTHqMhIi0twYGOBbtfywr4y4jJcyisf1hanpmcohLR
o+MEHG5kbGwYhRsfHe5HDbQOjOEH4sspM2uvYUatztGJY4MddWU5ieEBj50emulrqihIS4qJIsRO
S8oqaxpYOj4OiIhPTocrVVSQlREsIyIpKXZ/GHY2IGPjZy1uY6aAB0urS4uLdCp5FIPsGxlF4wZR
BAKqv28U098DhzocX0yBe+ntrY2VGTh4uFzPcpOigp642lvASVSWk5GSREidloOnZDM7d9/QmMSU
DDiJRXC1HouISkgIcZNhb4ky1n5WYjbi2WB9bXluYYqMH0KjBwf7ekcGhvFYZO8gaqS3a2ioFzua
mE+aWt7a3lxfnqbgkH2tsLfkmBBfDwdrRiKV5GX8ZE8rqekaWzs99n8am5SWmVtQVJSXnm7LLyEp
KcJJjgG7N8V4/MTFJO9pvX+7urI0P0cdHx4c6h8aHx8b6EONDnf1IFHDvf2DbYMjbZnZhMnFze1X
a0tT8CDb01xTCm/6UISn00NzQ111FUU/heOKqloGpnDNAr/msbCoMDct2ZAfIblb6nJyDNjVcckP
nl+Fz7WBxbW1xblp+ji8K+C9CCcTjRwZ7h9BYUf70N0dAy29BenjkwsbcCIX6UTMYGdjZVFGQmSw
r4fjQ3MjXQ1VJT/FM8rq2obm9m6+IVEJX/NYmJ0WpSoiIy0tw6EHxxZ5RwmhKK58Nxy83lxY2Zyn
UnBY/NjgGLpvaHSkZwQ12o9B9faRU7RcujG5KSj6/DqcycUJPGqg/WV5QXp8eOATmGemBjrqKrC7
48rqukaWDp7w1v+ayWJ4kwTKSPjJ7Ja+hY4Cu7+InkOwirNdvjYNFldXOjun3mKGqFh4Mw6MojEo
5ChyiELC4IeHbc3M+5DPk4doc2ub8BlIhUvaWluWmxL71B8+ea1M9LXUVPwVj6to6hnbOHkFhMfB
qcwtLIZ3SYankLCf2G7xCyGwu/YDdxH3xO/uzQNLSyur2OahvJy1JSSGhKaQ0CTM+Dhxpqay+tlw
lXuFR293bVoPbWb11eriLAUz0t1UXZKVHAOXztnWwlhPU00ZdqeqpW9m6/okKHInl0XFO/uEV8Rf
bDeX0EYkkM2+r66mpi5k+v7tytr60tJEqJ5nyMDGMh4Fn/k48twG8pmqYphlZorfC8fBgYa0Dtr0
0vrK/DQJPdjZUFmUmRgZ7PNX7RCKJxSU1LQNLOzdETu/WWdk8+tWCZDcLX2hEPbno2ZlaWUuOw7W
t1fm56fDrJvqwmz9h6ap45T5GXRFQryrse0UCaFYWOUwhmlLaqZOLawuz03CZGx/+Tw/LT4CLh58
oHxfPCtHBg2S0+CNWVxckJ0WrSYUILVb4m5LBJBdl1fV1tZn9wGzHWNb72cfB05jq5srY20CyMvI
4viwoJCXjc1udT32RgNZrnRMT2INdXJueXGWhh3pbYGLlxoXHuDtyiietvpO8TT0TB46e8M8gLOZ
VwS7y0oPlhVluGNBwe5Sfr5189ap67Qv8yPVA4Oh2YtT0wu9nYRuZ0S6n29UJZo+OZKpwB/u578Y
4TWHGU0rIlKnFxamqZihrqaq4uzkmDDEY2e7fxTPzhUmQmJqZg6cy6L8jAwvUXE4mcK8JNid2xUR
YTGmUDC/8nq1y1im993y3OttQhIiPS7qJY5MHivyeuLiavm2KHITEbBKxecnoUiTM/AtihnoqHte
8JV4Tg8tvhXv5NfiPfLwC4v9ujcZxUu35xcPkNjNpfQhHPy8IcYjKXVX649txLzQzBCx1TmwG/ks
KSosumlygjBc6msfUdxBnabMeVeuP42YwaJrotsJVPoUDS5fSw1cvrin/o9dv3JP9Wv5dIysHWEy
xH/dnXD5UhINBANldvOqvwsHsiN8GprqPNUAbnDnJmcoi2h9WR+viBbcOBn/zPOhc3FaBBEs0F81
uQ4TvBNe0SkD8UVYAtxxYYc7m17slM8fzqelkd437mnomsDHGEyGtG/5zEwNkRMLlNl13wFOZ7ao
mblUAFiem11axRR7e4RExlVjSThsna+be2I7mtATb+vT+HYj33+a8PjZBoVCLIqGryISaby/vaG6
hFE9Py8XO0tj/W/V04Srt8MEOJkMJuSkpjsKSQfI7Ja9Hg67eySqpSSM+Ty38gkfY+sWFFcL9z/o
lwgzq7JOFMyx0bLu+lBH//m82AWs18t53BS1JPAZahQzhuxvq3temJUUFcKonvl31dMyhA8y/6dx
X49NOLqUWHVhWTi8my3hQI7MJ6tyJwasbq42PuJTrZyh0cbrfBxCMkv8nvZtzpOIU+ujtf11CSk6
RdRe14FF2hS6OSWiZWhwaLivpeZZTnpCRJCPu4ON2Q73GFyHq2dszWADI52ww4KclHQXIWm4ehJc
dLh6NTzGshpLb94vhDt2FMln0hujHLziGibgzijN2qdra2ES7vRHXwxUqDbONAWtzkzihoerA5I7
Ont7O5urSnKSY2HyuT2ygse8b+TTNbV19QneySfcOOSmpYYriMoFyu5iN4XT6cIifb0DgOGAvBXQ
oS7p4OCSR9h4Nz8zMf1+OsPRtfntCo06tzyVbjM6Wa488GGdNkHsSffJbm5uaX5ZWZCVEhm6s1eM
4XMart4xuHrmjIYoNiUD9laQl5GcbCKiGKiwW+lGNpzMyWOnICtAdFI3yyz39tTTDalHzkwsTJGo
pImZudfESAePxq0FCu1juu30apRiVEDL2uIUvj3aK7em+kXls4LUpOhAH08G9/Q0VJURisd3qgef
ZF+pkJuXm5mc6iCpGqS2W4VvIhxw5x48f3n1bbJ7XU1KYUFd+/TsxDyRPjdBx1PwGAKF/Hohy9Gt
dXPlVYT/W/DYi5TgEdaxNjNc/9QrHVF0MD8nJTYyyNsVHmMMGcxj+FNW0za2cYa5kJiWkZ2TnZGU
8lhGAt4ru+WYTSIAT6iqXDuYXoNb+LWZ6UkadWJmgjpFGB8n0Qi4Sdr43OLmdF5AwkuC1+P6WrOo
mpaO1Cdezctt6R5usYjUAymJkSGBT1zsYKbv1O4IfE6b2rkhQuE7NiMzIy0p+bGGerDUbumL7XAu
V9S4noBNeCBfmJ0kjM9N4WgT6Bk8BjtKJFJpk0TyLBlNWVp44fVIzDTVXeYlaqStvS0h2i+vJ8ve
PhDuzSNC/Xwfu9iaf7tij6rCTd8jT/+w2KSUlNTEhEQPTWNdyUDp3TLM+hHgwIurcnNgFb4y6STC
OBkxyUsnkOGJkDgxQadQ8eN0OppMxsyuzWZyuTTauK7PwGdBFz1Xrq6pNtPWzM3HF4HwcnV+ZGNi
yDik/RSPwYXbuYLCouPj46ISE1y19Sy1d9xd6owAFuE3GsHqytraHG2GiqOMwycXZXZiboIyNUmh
TlLoc2T8BG52YWpz1dC5SjEArMATN+hWejHRWVaSaqtl6ejoDDuzNDXS01ZTUVRQVFRQUtWG/Xki
gsPD4R461MHAzMhcWzLgW3jnVu74wrlcWVuZnSMiCQQ8FkumEshU8szMBGWChEUQLixQcRNwO9Gn
4F+op+nV9nZpddKkfh21QG5rzrRXUze1QJj8ZGSgo6mmpOAvd0xBWdPQ0t7V08v3aVJskIOBpbnh
N3eM8OQDoEWwvLS4MD1FhWfR8TEyhQ7vkFEcbmKCQiZSKBg6GUcnkUcGizQL03XLAh55dby3j31H
pRJolNH6AoS+sqoe3LErKSrIykhJ+Ekek5ZX0TIws/UITYgPtHgSYWCx489/J7xIoCAXxxhCFqao
VDyBBu8RAhGLIxEJ43gamYjB06dpZMIEER6632U/ftOkM/yaHuev7riNxeCIRBx6pKMyyUldXlFV
Q1VeUlRIUEAAIXhMRFJRx8LZNyjM197SJOR7h4wAj9Qxfpk3O00mEvFoHAY+f3EkEmL8AYFAo9Jw
MPtwJBx1gorHTW66Jnyuf0Seprxvc6uo7CNhKCQimTDYWV8QbqchLysrJycrIy2FkD4uq6Rj6eDg
6u5obGPnbB4U/s2j37cQrZLQYGZ2hkrE4kf7egcGUSgkHofDjuNgb1jMxAwFhyaQ4AoSN7utUMtl
zjQ6ZWZwklRX+oI2QaNSMaixkebqghhPExUpUWEhARExMXFJGXEefmv7h85mTo+c/unxUifsMbNx
4d3rxQl4Kh7sH+wfHhmEczWGYvw6ZgRuO7HYCTodvlPR5NcJgR/nunzwuBkyjYKbQPaMoccZ9Z0Y
6OqofZ6XFOphZ6AqJS4swC8oKHIKsnls72z+D4+InRijgFUGJGCf3Te5ugzPjyMjuMEBVP/oUH/n
EGoUhYVHSSyJCnOfRKHOu1esTTQ/pi1Mk0h4MmFylgKHjoZ7Gwwe1dVdX5GfkxCK8HZztLd75GS8
HxIJ/C+PlzqjgS0LBP10WtQupZ00R5/AoIgjSFRvR9cQEjMygMJg8IQJChGHxUx1e05Pz9c+JuLJ
8Fai0iYoFNLUBJlCxRLGx4joka7mqnz4+IqNjogJD7kJQWf9Hv3LITylMOvHgB9W9kOHEZDsLxeF
bOPq0UtLNJj7Y+Oj8Kjajx7GEUk0MmWCSsK6Rk91zFVYtQ6QxrEkLI2Kp08QR7FEEok8hBpD4UZH
O5te1j4rhi/zREUEdHyvnef/+rvUGQvOdUI/Hzy07/guCPr5grBFdB1yZpFOIKJ7BlDdo8PDVARe
CkuYWjaTG6PTzMyx0xQkGokkkWFvSDwRN0pEomAODY+M9A+ODPX2dPdXeO/f9cteiCfA6V/u4Oji
wa8l0M+H9zP9foTp6K8ISPeMgHHI8+EpGmwNjxvG4DE41Oj42FCtgX2Dj0ENEU+gUKnwKUuhEnG0
SQp+BEXGjo8hcahhJGoQR5pGFbBAP//y6+5fHJ7805ms8NHOBGBpAR3a8XXy5PHj+/b9Av10kkPD
v6iXtjAxs0CjotEE4tiLdnS0b1hLXfsonUqkTxAIWPI4EYcc6huFRzXUwCByYASPwZDmZzosoR9+
/OGHHyHesO/JoCt247pvEpBnhw786enQyfNnTuyHoH1H7ym7pXaRZhYnp+h4IgFNn6fPTMN9HwU/
Dm8TImlsBI5koA850AsPhGMoeMgexNPWh2OPQ/4//w7td3v0lx9jU57b9kPJQH7tN+jsd26YThw/
funIj9CeEzcl7KLrxidnl6YptHEUZQxJwmPH4cqQ4IThCFjsOHK4b2R4EIVGj2HQeNocoVoM+sl/
76GfIN7HDl/dWOkLynkPpAHZXui3o//0cfn0yeNnmX6BoF9vCJg8LR+YXpmZm8aQCcjh4REkzPYx
HJmAHRsZHhgZHxnu7R9AoTD0heVO95/3BB44sGevlY+9k3lIsKSEXig6E8jEQQeO/Y/5cxeYjv92
+DAEHTnDpeVbMEBZXJ0mozBI1DhhDKY1BocdwyLRY+iRkSGYUiTq4kjWTWhf0K+/QmwBtuayNgFe
NfM5QNoZ+v0/TR86cf7wqUtwuLuP3JV3yWgjLixNUegkNIGCwxNGMKNjOOTIGBbeyzj6EvGFAfTT
vsBff963F7rp4Z3YsVoAJDmgs/+XXaarp0+fOPIzzKDD18UfJTag6TOzczQ8Hcn4hRoSjmAMOYQh
01e6Ig9BPwfu/elnCPoxaPlzMbi6eBg6/f8yevzIsSOHDyCgs/sui1lFVw3RVpYmF6cmsGPj8Fdj
sXT68liVJLQ34Kc9e2GjMpPPAIQLgC7uPXnq1P9l7ujxw7/s+xkBnTxwVcQiqnqYDt+J8/RJChHe
m0vLLT57fw48AO/yk88qwN6xwEB1uXMXDvpDHL/uO3Dk9MX/tfXrwcOHDh86sG//T/uvi1mElvaQ
F1bWluYXFl4PFd+F/Pfs+ekHCDLeqAX7X79CtaYGGyuIXzwM7fKD7uw9uP/ElTP/MPT7kWMnzx/Z
u+/Xw6dviZsH53eTVj78sdxnC+1C/LDnxz0QdLOpHfyyQW6tC/NWEDx3PRC6tfvAoSPfvXzi8MmT
p88e3H/8Epu0RVAeplrl7P4jR44eg6BjoYPg142NrvbMEDPFe6f3wGnate/gt3dOnb/CdPz0+bNH
L165ISYE/XT+7Pm90PngLQz45fMrZGtKkIH42RMB0Mkffzx2/MIVppMXrl89fvnUwVPQ7lPnfoRO
+29QwS+v17oaw/01Va8eDIB+O3z28qlbF4+e3rVnB54Hv76ebq0J9VfivXphrx+05xAEMQVsvAK/
rlPb0iIsZS4z+W58ALvWP36VPpb/pzSUCPaukfsbKqq7F7bBvqmBhurK54Xx3u7x9A3w28pQez8G
M9rbXJkbpqtSOAIO/7FCHG6qeV6QnV1YUdc+Rll+FwEOUXvR9AkKfrS3oSwz0seA2ZGhh8Q3ZQU7
mxubWFhY2do7ubg/8Q+JTC1rxzL0kJ+xQ/S5mQkiuq+pPCvGz9Fc65Q2Qw/Zl+ZuqKltaGlj7+Tn
ctDDL+RpdEp6RlpiRGhoQgVDD/kZh55fnJskoftbqvJi/Z1NtVSkf/L4pockF7lpKmnoaGmoqapr
6ekb6huYPHRydvOLTC0oK81LC3RwiHi5AgAes7i0ME3FDrbXFsYHupppyEuJcECN3+shx1KsVFWV
pMVFRcWlFVR1DI3NzS1tHeEg4IkoISktLSMrJy3A1ql0YX5pcXFmAo/saSxOCHYx1lCQfMDMc5z3
H3rIsRRzVSUJIQE+fjF5dR19A0NTUxNTSztn98dP/EKjoqMiwsNjU3MKCmMfBfW+fzcDd8ODbWWJ
wc56Kgpi97nUDFQPvPymhzzwq361k6acADc3v5icihpC/bCGpo6OtqaOmY2Du5vHEzhfEYjQ88ER
cUk5ZeUJPlnU7QnMSHtZUpizlpK8MLP4w0eG6qcc/tRDMunZq3Czs3OLKappqMjJyMopa+jo6RmY
PnTy8PHz9UUEBgf7+wWHRYQ/jcl+/rLyaWD9FL61NDHEQUNRXohZycVSR13+puifeshrAkVPuO+y
cArJKinJyUhKyiqpaWqoq2toaanrW9o7P/aFR4TgoKBQRPjZiMi4jGf1TflBma3liU8d5KXlhO6q
e1jqaijL3Gf+Sw9pUG1y+w4Lt4S8rLiwiJiMopKchCgfL78APw8Xn6ikrLqeoSncmCcmxURGRMTE
J2WU1LfXx4ZGhzopSEoI3jMIcTTVVpGXuKTwpx5SyqJG+dodNn4pGVE+PkFxKWE+PuaTB0+x8PBy
8/Dx8PIJSMDNorisqplvYkZcZGxiampmaUN3e2bwQ3EJKdF7hgleVnqqijLix+z+1ENa1ktfucsu
LCnKx8UjJPjg/q0bJ+5YOUodPScAf+YDVvYHgmIiopIifDzcYgZeMUnw7J5T+Lyht6PAR5JfmlU9
yeehsbqinLT4gZhvekj9HvmLsEFxAU4OHl7WW1evXt7PkUUFnyt4jwqIcZ8+yMTKB48JgqKCV66K
2EVGhmcU5hWVlpY39rYVBkrdl4kLtjfVYugoBU/2ftNDPkAaXrzLISTCxcbBw3r14qXrpw5JhpYQ
PwOwoXzyDrv7E6F9Z/iEBIRv3Qvoe/cGP4uOzq0uKn1eXtEw2FnoKRQQ+chSV0lWTlbyjsCfeshD
PUEXb3MICXOwcHDeOnfu4qXfjrsnhZRtMiQDn3iuRVbW9JbJHrsldl2g+/0ngHk2DEY1nzeVllc8
r2xFtyb7B7laGajLysjKSB5z/aaHjG26c5lVQIjzPjvblTPnzp/Zc+lpswWP98stP3Bjrsn7Bnvd
G1AneVB2CRAryp9mVFCADduzzvKKyqra3vHqKBcrIw0FaYTMbgmm7m96yH3cVM0zd3mEOJnZmC8g
zvKf2PsgK1NSlEUuGfVpRw+Z/bgkOn0BvMrFY8pzLB47B6cPAuI5wYL+ypq6uibkaI6vgaaijKS0
rDyb1Dc9pGx56eUr7IIPmFnvnTvDxHTiN8mM5rgHD0SNQivfMfSQr4dfIJue5RaS372u0WAXNkv4
QJt7A5yPixcO1DY01HfgGuPtZeUkYGYon4r+pocUnNI8xczLw3yf+cLZUydPHhT2S69PdEiPD40d
8wd3Xo/UByYmGnvnRGfNomx5zNs+D47SwPAdLonq4frmxsYhTFGQipiErLKKxP1vekjZjLbblzj5
WO8yXz576sTJ/ee1HqWUZNj5ZiMJyDfgCwCvxmdfuARbijkERlHAalcznjY8QtoCDsw86r39ra3N
XaSWVGs+WWV1resuXwWRcqfwPqfu8HDeuXf9PNPx47//eE3XOdo3GBGROzjU0j27tbkx1Dvd29id
nvC8JKV+fGZhloijT00tgNp7cpwehK6ujm7sWCFCSlFTR+Pm2J+CSJ0Z5ROs3Pfv3Ll85ujRQ79B
e7m0Q5NC41pb2ptb62raukpSS+q6sYM9/d2EZ9kvB+DuBIsZw09+wktLyHIXE7t7e9ET1VEGyvqG
nOZ/CiLDkQ/OcXLcZb5x7uQR2CTEF1PbPTjYXl1RW1dXXRjtVjZH7RqYwA7V92y+jKlo6hvqhQeM
EcxHpKS0HJcFYWhoEDndkfRIw8TgRtc3QWRV1Y1rD+7fvXftzNHff/vxGKLj9fsZCnWKUFvwrCgz
yqMOgI9TLV2o5VViT1V44gCVgG1r7u0iLj0RlpNVEiyeHEWh6MhMTz0LfuN/CSIP9adcusNxj/nO
xVPHDv8COVH9dCM6X1YN0Aml8TFBztkfX8+vZSKC0j6DT9UhPiiw+QpsIV+MD7pIKMsqKHJ7zqDQ
KCqhwNfI5FbnvwSRNwih5+5zMLPcOnv8+OEff/LvrHEwjHlZ2d0yWOXnZe3Z3VcUN5bGZ1m8DUC3
0SAA5Aos+DDqrCigpyKpKC2qNUREoyiUYn8zQePvBJFPRoxCIN6b+MCz99mYWW6ePnbiyO5DQfUl
yWmJ6ektz5sLHfX0Y6e6rJX0woyfbsA0m2iCT4SutIa8NPrj6yoaMiII2X1ilbPjYyRaSYDxza7v
BJFOlS9FgqFr18dDLt1nZ2W9cerYyWMQU0xigL1bclp0XnnXE36d0OqucnsLXvmAOT9w7j3YRpXH
xoeZI8ifVQRF+FV1VZSEMtbxWDK1OIjX5DtBpEtJQdCuIEj6Kjru5n0OdrbrsO0T0JWEaD1OZtX0
8pDc3ttXol42PtIJaIoNqIW/GLxZ2lzJj0NEVxRWoOfUz7PI6etIKIjFrONxNEqeL8vQd4pIl9IU
X4c9gZDU8a4CNmZOTg6G9ZM/3IuOcb3yK4uhvrFPyQG+hvqn7k6Orc31XR8/b+HGplan4x39Kidn
cbNrrOc0zISu8erKRK4QCXRcuoH3d4pIl9I0qxyGIrKkRfQ2FzfX9ZOw7b0cPpn5QSEJUZYG4dEH
mYubUvMGigtq6kdeb00ge0cxIy3FZU3Il5Mg4jSPHpuqrLGVROwKmTw9HKfY9p0i0oUhWkwWC4Qk
g8b1bsLX323Gh//CmYnf+PR5ldic/czx2FmVsu7hlornL4rrVmnEV8uYwZYGDLZzbHHB7R7X/bsG
wcamOlKpr8ik+RZfg+8VkTvGfVNYAiAJPYr3PW5e4fsM63sEkSv4MSweg2ypVT9y76KiL8Ktdn51
orsD++nLpy1qdX4rkbzSr3xBlOs29xNjbnZVjWebJOJ0id6T7xSRDOMI96+KSI7RfBF2fklOJtj6
vpsFL7OLXra1NvY/v38SPlB/ORThDy6Sx9bXVzdfjTxvGJsr5L4lwXWLWcZYRFVQwaZtlTSBi5V7
+Z0i0mVHERn4VRF5oLTf/L6gjOCFEydOnjrIYeYcllFcXhwjdeLKLZYD58Nw2wxF5OYIdnJ2YXGg
Hx9494EU+407HNLGwiw8pqG4adJCk6PR94pIq9To7xSRrpg4IT4ZmTtwZphO/fL7HUF5NSXB80ev
375xWA7zzKUDgPfwtTLbRqVQJt90G94TEbpzk5mVV/mhlYa1TdIr8sRUkkLC/62I5G9vteaW1OA7
c/zkKSam3/f9un//vkPnb9w59ePDFUqof+waePXq7R8gL5a6uNmqwK4gcvvaPRYOMSsTeYtHmh3r
pMVWT8Hsd+/X/1REmv5DEenvrwHPYMfT0ElKwurKN5mOnmI6zXTy1OnT5y5du3PwTPp466CzuPEA
WB+bewfG2Yye+goLq4twsDEzs3KrGQixKigGblAmaVH2MkKyYqIzCWCX0+0wyYPiV/4tiDxg2dfy
RFLOWOTsiRNMp88gmDjOnL947fcH80vluDYtWeuiD2CJBp9jDsfuscspi/DwwZ2OmISqCb+sqdbg
GnnhmbMxD9u9w5p/CiIv/S2IXFrc+PxVEMmTMVJiL6Ntynr6+MnTZ84iTh88e/Hs6c4xJ7vSXOf4
vAr0a39wPvCquJQoD78QDzefuLy5mrKphVzKG9J8t6edDLeA4BlnhhySSTBEQPdPOeT80urGyupX
OeQrU8PW3nRrJQuD66ePM505e+7MmbMXmR54cquIy3nZZ/ZWZbe/2v4MPihdYufggM0JiMgrSpiJ
SpmKu61Mz44H2ZiI8goKMuUz9JC/MfSQ7D95gdWl5R095Nzq2o4e8l20SlZve4K1pqPOZaYTTGcv
nDsL92cnBfluiah7x1U0dL0orMWtfk64dZ/5Phcvr4C4op6GnJysiYwJbWWSGG1tYybAw891a2JH
D3meoYc8xbryYX5HDzk/Pb80P7e8uL61VaUVU4pqirE39tC9fPrk6fMXzp87d+HEZd8A/8y85rrC
LuxAfWmOlxAPGyvLAx5+UUUdYwM9bT0JXdwGHR9jZeRlxsEvcEthRw/JIhsir8vQQy4ur8zPTU//
rYdcGzIJynuJa4xxt0GY3Th9hunCBdjRpd/Yi1E9g0OdLWUJPlbKQlwiXBxs7DxwJJp6BoYGWsJm
pO0pdKSFgVOYChsP3xE/hh7y8AOGHvKo3Vc9JG2CQiSSqVN0+sL8wsKEk2tpWQ+9LQHhEuL84DSc
ML8LzFcP3/YvzAiy1xJju8fGLy3HzcrFKyQupaiirq2lrSTkNfNmsivA1MAt2kuUBy5Kyzc5pNBX
OeQMjUwmEVA4Ovw3dZYhh1wJelhW2YSeH8wMeRIeonqJ6fyZcxcuXrl57sIDtps3WXiEJWQUZPm5
hMQRUqfkFZUVVeDTKW97m/Dcw9jIOzrSlkdQmEViRw7JuiOHvJQPZmbnpqYok8QxPAZNYsghaXNL
a2lWpVVt/bhl4vOYkJh0d5Gzpy6cPXPx2u3bN27fZ+PkgYceSRFBMWkZWSm4Z1SU5xN5ggKLnfF2
euYBcWHhBhx8AifC/imHnF6Yn6NPEpF4HGpsHIvdkUPOl1sX1HaMoAmLs505MTH5mc7i54+evnDh
yu37rGwc3PCAJiDI+D2/hKS4kIToAzH3tk/vhvO9TPTtnsaFPw1SfMDPd74XdmPJoxAoz68guaOH
XJicnCCNjo2jaTQiGb4hCDQKvcU2vaEDQ8Xi6Qv4+qzEjMoihOb9kycu3rxz9x4rJzcPPGQhBM8K
CAtzs/JoP+398HGkKNBcz8QjKjoiMvqxCK8AO+/Gjh7SMchFn6GHXIDrP0WfGMeQiX/qIeHDFd/v
FtPcjZmn47GEKfpIXX5mYUNjto+R+P3LF67cuAfHBF/rrMz32MRNw19Of1nryPCz1DN46Bf+NDIm
Ktaem4f/qvGfesg9X/WQiNmzkzTaVz0k5W895IRvUHvP2MzSNAExzkHE9r0syy9uHBysz4/2tjfR
VlFWU9UycfBLrhpZfL8xWhrjaqyrb+ERGBgcERMXFW3Iwcd/7tE/9ZDzc1MUAh75bz0kKcCnow8z
vbgwTcIgB/sHepqrSotLKpsGMHjc2OjQEBKFpcyurC7gGnPCPSx0NLRNHL29fYOexibER4cpc/IL
nA39tx6STsJRSOR/6yHH4x+39o1NLc7NzpJGBrqa66rLi7LTUtKy84ufVze2tXe2t9Q9y0sK9bTR
V1OUU9K1dnJx9w4Ii05IjI/1EWdwp2RHDykXIM0hf90YvFpYmIYTR0SP/62HJOFpcFNNL/Ko7xub
XII9UUf7OxqrS3MYWqYnCK/r3j4+3k+8XZ1tzfRUZcWFhUWlVfVNrexdvfxCo+KTkmLjnPj4hf6/
9t4DKqqrDdgdsQPSBBUQpEjvvfeqgIAoKqIovUmTXmdo0psgoFhQUUEUUEGwK0ofphdmht6bGJOY
+mX+fWbQaKLGAv+9a927V1YSQzjP2e+73104zxyM+cuK6Cv/cLXel+x8dL+py49/jU1PQk+S+8DB
AjVApFBQVBJTiBwYa4xqaMcMgF6N9qM6GGZRcXZyTFigl5uLs6OdjbWZka6OloaGtpHFDjung+7+
x2PhJ3IKT5WW5Bd6aegZ6Atdh4RI04MprmYuOotC5GAftq0bhx4go4hYPJVK6usj9xFHBh/FV3eg
+yfHx0b60Z3PWuqvVBSeSIyAxMv9TruszU0M9XR04LoCBsZm1nbOh31CYpLSsvNPlpYW5+XsV9c3
0JHBQEqkjF2yrdkumdJFJXKAjEZjkN3YTkxvDx6Dx6BwlD40HvMYXtmJpo6Pjw7T0J2t9xuuni3K
SIw45nPEZa+DjaWZkb6uDlxbUMfAxNLGydUrKDIxNSO3sKS09GReqo22kZGeLJLhRBok7zS11di1
wHAiR2hkTC+OTCQisdhuNBHf2wM5kZ0YUk96WRe6b2x8ZIgKOnb/1rXzxVnwqBBf94POAGZqpJ+s
K6hvbGHjeMA94Hhccnp2ftGpslOFBbFGOgYGupKdANW+ww/ha+Hn8c6I7Kf24nrbkL0YYheaTEa3
t6HwHS9AT1GZRV0o8iiobUpv+9N7DdXnS7IRsSBfhw847dphaWpsYAA3FDS22GkPhTAqKTUjp+Bk
aRlIV5CWjr6+hiKZYUT6InzM/M3PLRqRVGI3BtPV1d6G7OghEVBtXeje9tbu7nYCNjevE0UcBisJ
GfnicXP91XMlOZCX5QMprLbWFqYI460mjJ8begSAkZGWlVtYXFZWkpd/RE3fwEBLlswwInUQFuaW
ivsWjch+XE9Xd0c3HoftbEf39rS+QKF72ju6HnchW0uz2noJg6ODNFJ368OmG5crTmYlx0PK4KF9
Trt2WpkjzDaZW9s6Oh/yOhYRn3yCEcey4tzsPWoIgxWbCz8iRA7h0URMNxaDQ7VjUMieDiSa0NuO
efG061Fn5YmnSHz/yACV2PX0/u3rF8sLMhBx4UG+DGfWxtoCYb4VjPnd+9x8gqMSmWEsLy3KS96h
bWxkZCzj9FaINIeEyB9fTc4whEgCEduFwbR3I5EvkOjeDhy6rZ1a7hL5nHgh/UEPjgYCie9klHRp
XnoSwxc86Lwb9C3ZfBNYGZ0OuPuHxsDTMqE4lp8qyI820kMYsRgKIz/wIf+ammf6kN00ApqA70Bi
sGhUL6qbRsGRenqOefu0o2+kN/VgqSCS2LaHdyFfMCc1MSo0AJT1Xge7HZYAx1SPA8PjmIEsLy/J
LzimqY3QY9HnRTB9SIQi39qL9Knp2Vn8/a5LlQwdEkOjYChwnFzf6K2627XIhuj62LYXTVn13WBt
phDRL+431l4+U5SVksBUqvc42DJo1rYOzoe9gyITUqBIniovK87LP6qik6zLoqD58kMdcu7l1PRA
5qHYDIYOSQILMm1iAVW7xyHL91x58p3j3V33s2q7UUQqGdfb2nKrprKsICM5jml6MjIHN99sBlLn
uP+Ib0h0EiOYpeVlJ3Oz96qlGLAY8V3Ipa9IcIL7WHjtxC/qkFn+95qyjiV3j9BwtIkx9M3i4kj3
Y8MUuOOVhlAs7mnGle5eXB8J0/O0GVLT89LhMQxb0Hm33bvUuUCTIwKKZUkZGCi5qTs0UwxZ9MVa
GDbk7kUb8in29a/jcWmQDVlfGMC0IbPSM5pa7kc1Pg9x7zwXNYTryDjbjUQTiajOh403wYSck5bI
8M1c9jra7bBaTB2jBhaDCUZKXqyxDsDpSSJz6CvK1sFlLQXe2pCZ72zIcHgFIim/Dj042HPOwSgn
OXkqN34Chy0o7OhEYnE97Q8arl86XZiVmhAVwsid/d+5Y1TB21CW5OcHa+uBWGoqk/5hQ7a620I2
JNjRlSIqTubfhWzIq3GJkZG+b67m/YBIneunnIc/au+GNOgHDdXnSvJOIGLDg/083uVuCzN3R/1C
YxDpzGiCGs/zUNMHQEWrdzakIsOGNBrrJj8MT2tF1ZbmZRXcGxp8Z0MOU8cT6uezc0fxmFtxtW2d
Xd2dIHtVZ0pyQThD/CB9z5FZeBYgewc9AsLj3oWzKDvTSSPViEXJ9s17MuTYWxnysF1SfM5DApZC
vB4bGH7tdC5ThozsJiWULAxSe9ILWlvb29se3a6+BGUvKTqUWQqL2dtpv/cQKIX3wpkTb6qbaswi
7vtX9jsbEhwSpuew1xJiMnJPMmzIJnhk9KnHKNLz4mNJLT+/vJQyQoqDbEhaZUzToyetrQ/qrl5k
VF5USICn29+VZ+Owz803NBrOCGZ5eenJnHxvDaNU4xWCqUwZ0nFRhiwMik4/yZAh7yI8/WueMGTI
68/vZoalMGTI+LsThOH+2vCSRy0P7jXVVZ0tyc9gfKDh/cIz32HryCiF5MVCLynITtupBXpnJNQM
yZAGtrsVChkyZIjB3vrRAUiGDM04W43Ifk+GLCk/eIX2IhKSIVGPiyNq7t6+fafu8pniLDBajh/z
cXfdByZNJtASLD8HPY9FJKQywlkGkpfvp2EIsqcr3/9Whpz5+depnLAnV3edG7qXHxpf1Dzw+q+x
0/5Jb2XIOx11e1pG76XPMmTIxsikGzfqb9ZcLi/MTmbagmCwMLLHZ8VYWYOhD6HkFYEdQ3FuDsJM
J82ERcYFSl4EU4bsSb00S3+yzzo0LOIiaeENU4Y8GxZ5/80MJEMOVQQgh244MWRIUtvZgMyaK1cu
ny/PzUyNjWS6gn8nj1kJJ0AwS04V52dl79e2sEgxZ7HcehqyIXkZNmS4s9fZmwmxh1wzmlEj79uQ
oTEMG/K3imMjc/kOeakP5qaGia25Prnnz1aUF+elJseHBfl5HGakD/B4rW13g6U8HGxccwtPFhfn
Z+Z66u9I28lirUIDtEqObWKzb8qiG2+VV1V9zIU8H8ZwIXNTfqbHxfeVxEAuZNf9dO8TxUWFedmp
CXHhAV7M3FmB3G2CKh1MZFApZOcVFBblZ+UEGeubgLFiKu4CxuYJJxumC/n7/Ojwx1zIVyOXUkqa
iPFxzXe88hkuZPz9mUfnj7snnEhPS0HERh4HG9m3qdtoCVLn5hsCGXy5+fm5mTnBO23SDcGCcP89
F3IWnJtJ+E+6kPEhFh6no22YLmQJ5EJeDHANjYmJi4kMOeYPtrJ7HBnLK68VtN3zD4uDp2dmZWdk
ZAXa7nc0AIPSRHxvDt32toQN04Uc6CPhqEODQx9zIcfnRs/pRtwLiHw5ArmQQ5V2jfcbLwQ4ewQG
hwT7e3kcdd3rxJyieXfYghqAtmCp6WmIzAxfO6fD9hDNeNMjQMuWglTIuflx2mg/8XMq5JHweoe3
KuTuOwNPr1dXBDk4H3H39Dzi6uLsBAYltAnjM7e2gybMsOj4hNiUjDgPJxdnV3uDlMXOMUzI13Mg
lGMTfb1k8qdNyHb75KpD++MfvZmaG3JvhkzIx/fPh+62cdoH37vGyXEX9CGpZBM+M0ub3S5HfQKD
whIzk6O89hxy2cvEMXv3ngmJJVDwWOonTcj9VRWu11ND4p/8Elz0hmFC9jZdTnGzs94FBqSluZmp
sSHcYLOhgZGple3uA0cC49JSIvdHpDu5MoDJjP7l0n1sC9+pkOR+Io5A6iN8QoWM+/newe6fBk6m
7At7/bcKWRq5b6eVNdisG+hqa2poamho6hhYOLh4BUfEhhw9dCAp9W8go4eQCrkwOT5CAccoNAGH
QuIYKqQjiTxA6yd+oEJGFv95NwRSIR9H19W3UyAVkkoC615VTvABWytzU9BDA30D6Lmq7QF3d28/
731HPPwOJqQsEhGLXWQ5haHDx9xpZAKpt62tsxOF7iURiAQ8AdDwuPdUyFfvq5CUpuo7kArZj0Vh
kPcbqgpivfbuMDPU19HTB0xTQ03NI17ugS4+nr4fEEEf36mQg+BA3NnR1dGD7AJ9BbtaDAGPBFvO
91TIkvdVyMH3VMjWp3dqL4EDeNDRvdCpy9DYxFwI5h7iGXDwAyKc0cd3KuTw/CzYQ/cgiV2d6I7e
7o5nXaheNB5NeE+FjKmbH7gfB6mQFNIHKiQJ9ay1GVIhMxHxUWHBx0IgFdIw5iNE0MdFFVLA7Fj5
476JwUEcug+JQrc9e9aNwvV0Qiok+Z0KOToycSfuYyoklozpefag/tLZM6WF+TmF2SdkYTDBSK9/
AI2MQA//qUJipqcHqDg8Ft+L7XrSgekhguM/hTrQ34ePZKiQfv9UISl91G40Bk3s7X16727j9WtX
ry6qkB7B/+KB/hXS/ZkqJN/fKuTY1BC5D/OiE/W8t7uHRiRBP3aa8bJDD/Z7eeM+VCGJvWQUmgSd
X5AdXciuNkiFjGOHrV8L04j2/wcO9O5jKmRGbffIwNBgH4nUjSO9VSHdgpuT3D5QIYkDwzQiEg3G
FAYF6hGF6mKokMqQCrlyvXf4hzATrbWPPqpCqjunXHkxMDUIqZAYDEOFxOQnZT1oeqtCEvEU/KIK
SUCjOrt6u5D/UCG1kt4vBkfdrYIxn1IhFRgq5Nj00PAQWCbQgxNDYyMYIuWtContwaO6O9pRnW29
GBwW3YPDdZLeUyGDPN5x9rkobvNp/xIVcmaU1o9HQyokCY8j4yEVEosnEQh4VE87sqcLjcFgcQwV
sv6tCqkV5M3EHN6tZhL+/EtUyM7RudGJUSyVjOrpBuWAx2PBuY6ARXZ39uJ7e9o6OtHo91TINWsP
hXn4HkxK1NVxhCO/SIVMvNxJm54fpaJxoKxJWAyegiMSwODAYDHInm48GUehTb9TIZUij7gYHY0L
vTH+hSrkroiKR+SpmRHaEAVNohGJZCS2FwNGHhaPJn+oQq6DiQYcz7s/+8UqpKRFSEnLWxUShSKC
y6LQOEhzhVTIvL9VyNTJr1chG7r752aGpkYGCRgwqZMI361C+uT/rUL2DX2/CunFVCHnZsBC+1EV
8vQXqpBckAqZBqmQv/41/a0qpM+yq5AC/9dVyNHuW+dLKhpHoXdDgtNzQV52SvCBgynUBToH7fq5
2nvNDdfO5icHGOqdQdK5ZrCtdVXnSvILSi9ev9tNnv4th8715EIz48fT18qzE0K8rPi9IBUSXZcX
4rLDzMJ6h439bmfoM7BhcVnnm7Ez6fSNv9ddReN6Xjxqqj2XlxTmc8DBYq19K33bq8eZbqZaOiY7
du3ef2D/AZdDPsFhUcnp6SmJkcejM6qJyXS+327UU4normf3blYWJof7utpbmujCwhZdSGLZYW0l
DT1dTXXokYyRMdjc2O11PuAdnpxfWpyD8HM+jLjzkk6vvzVExqE6n96qPJka4e/mYGmooyEDa3rf
hezJsFNRVZIWExERk5JX0zM2s7Kytt+7Z5/LYd/QuEQEIiX1BNx3n/e1zsfDFBIW+bzpyqm0yMDD
9pZG2gqSiuvV3rmQN1/T6ajMnarK20Ex8ovKa+gZgd2IhZm5tb3zQei1k+ER4aHBwRFJJ7KzIw8e
uzs/RcS0NV0rz4gOOGRjZqQlpWC6wxh2e9GFtGA9dNVFU1aAl5dfVE5VHewXNbR0wNZRx3yn08ED
Lkc8A4NDA/39fcD+Mb2wBBFchB7rhN7MEB10yNrEUENKy8l5p+k6v7cu5Madjsq8HJy8Iooamqpy
0jJyimrautq6RlYO+w4ddXNz9/Xz83D38TsW6B+aUlxREhF99WFNyYmoABcrE0N1KSMXB0szfQHd
dy6kTr4r31o2rq0yykpyUpISMgpKqqpqGtp6Brpm0CeKjnr7+Xl6evvBA4UCjoUk5J+9kBedXgzu
7YCRnoH6dtPDjlZmRrpiEj++dSH3lpmsWs3GKy4nIy4sLCYpoyAvKysppaCkrCivrKVvtGPXLvu9
B73DIkICAwOCQsPjss9WnU+LDQtwNdLRVt1uFwIuaGKgzWvxzoU8XK4IW83OLym9bcsmfiGQXAmh
9Ss3SCgqKShAf6nqGuhrG5hY2LuHRQYHBodHRyfknK2+kh+9V0NHR13MAQwgG1MjXc21Pm9dSLfz
ErDVHFslRDfz8G7h37xlswDrtiP+xut4VJVVVWUlpGTVtLW0dDXVVJXUzJx9j0fHxiel5Z67fqUo
TEdBd7tVaiAY+YYGulqwbKYLKe58Qwa2mlNIVICba+NGHh7ezZtWyJf10f+oVlqjpi0PNkESSmpw
FXFNFd5N2j7J4d6RqYjUjIzcszUXi6K0RfUQ4Yf2WBsZGOiqsD5bdCHV7xmAK24V5t3Ayc3Bzskr
wLHKIPkS8U86fc6SVWh74HFVGJsiuD8B4einP//cN9URFpuXnpGdnVN+40pxgOrxBLd9Nib6IDBC
am9dSM4mHxgLp5AQN9sGDrb1nJv4V7IG5CMuv4JcyN/l+bPq77y4bMjCr7FJ6eFvfzFcyB7jE8UZ
2TmZOefvXEo/Hum1395CX1dfV3t10KILmXF5NYxNQIhrPRvrWlZuvo2wzfBbR7WiGl8j6ALDTQlS
ao2/0Ov1YfqTdPLN2syKG1S6l3jm6Wx4Dlfh1abTiV4HHKyMdXVB5bM9WXQh12r2aMDW8G3lgq8z
XsPKybsBpnCyxNxYyfokmvluyDPRVbmnJ+k/nEHjbpz3ijmeVtFOx/Jppl7IzSsqOFVXnxPiYG0C
qkFPX0SvlKlCXi6CwTi38qxbv2YNGwcX+2r9grpMDXXjAyl10Luj/nr9vK6z8erZi32vFhqd1Yw9
iv+gDb6ie7MapF8oKC7Or2g8n3zEwEBTS8/QaE0GU4W01cNqwdZs3rR+7Zo17Bs2sK9RD82tyfHN
z0w80fbnm9/o9IVn9YkFBYejz6YW9aODdL0f//70Oel/z/gVDfIvnSwpLLh6Oz/KXF1T18hITWRi
UYYsrlkJ49rMtnoVuCT7hpV81m4nyvI8wgsftLYMzk0uvOl/QakOgrubHIuKaadPPmpCoh49Q8/S
3QWVrc9dKDtVWNF8MeOggq6xmRmP/6IMuaXbE7aSj2v1ylXgkmDTK2h1NCE0+nhCwZ07V2t7wIm3
4Q6u+UZTYfbF0oQLj7FkfEcbCksYoFcL6ih61lZUlJ9paCwK1dY3tzTh630rQzoTlWHsG1lXrWTl
YGNdtwYG22Z0LD407vLlK5cuV5RfvJyeVFpZ97jpVuNtZFHK+cYnrc+fP33STvixR0tNR+VE3dlz
Fdcfn07apW+1U3TfWxky9REPjJtzzUqwEWBcUh1xpbGl6WphTtnp8pKMkN0lQ6R7DzDP7168u1AV
eupi/Z26xpa7La0LzzQ0teT33Lh8+eK1J1fT3YxtrDc+WpQhqytWwHjWr1q9gZN13doV3BF3F34e
7uvrR55GZJ9IDNxbBUbT2KNW1NQk9v75gMi7OGTrlcqG2ta+QEVtLX2NjKar1dce3Mr2t9wl6VRO
Z2nfrpyqskJPGnIhHyeDRXvtqvVc4F5Xwjw6Y/altdy89qSfmB8UdMQx7/cfR2fOJKaW/0n/oyr4
8GP6m5/oc/dONd86qq6voaMt79lSXXO1qbkg1GYn30MwxVU7p4avPB5V6JQB2ynZGwJj5Vy7egM3
G9hvrgi9cdnvQEZt1d2GFxddnKy8Wx5X5naX6HpdBqvTA7P7dHpfLZ7+54P9BorWeio6qspWVXXV
V+/cLwp3lNgN7nnBySXVfdVRFwTW4wRMT6onAAa2Zmu5uFjBtdcfv1iek59VWFB/4VaehcHOJEyL
l+2+lINpC9BL527S//frk7KmyjMjoZtNLTTk4aps6vkt16sbwLXtuSE176yxZ6r76qOHIm/fN0uH
7ZDsCoaxbVjHupGDFQwzntjkSM/ArNzkk+fueIpZRpxvvOh9RNs6th9yen/+82V3TV5Bukci5XdT
JVVpPUs9DWV4a11tQ0tBpLQT877T3NccPRR9vToDkiG3t8WxsHKwcvBuYGVjhfHHxzsqy9rknIku
bBDdHHGx2tsppiY95urvv8++mhuZHT2bG59VfaEGOWzJsVVl524tDbXIF/U3bt/NDhJpY954mvta
cPEbFSnhkAzJ11LIsY6TjYsPXJ0NJhoR7bFtvdye3c6hJWvlTl+ID/Txqrl26farhf72zr5hUm5g
/FUStWdoQpTN2l55q5KVxvFnDTcab6fZHGfeeTrz4ucCLrumwazOXxddycOxcRPj2hJHEQVRkfCY
/Y5xcauFMypS8+qK8k6fbZ4e6m69/6ztccPZyvpnNTh64nqZPdIGersdVSKf3mporonXv8e88XT3
dYxrByeftkyFWSU8N4DxcG/asmE9dOOpnQMjA8jGM6nFh9Zx6qdX1pzPyT2VXkrp7h6ltbbcvP68
7fYTMtFLSEpYyD5it6ORRuKLhvr7FX52kAwJbvyE+/rFiyMqVFNglvtQHmu4N24W4ISuLvto5Nmd
xjs3r50uNVklvFHriJtjRf8Evu5S65sfZ/rbK0tutLWT7phwqknxb/ffryBhaJLTXn/jbpZlCPPO
T7izMi+eEl1axJMM26b8tECYfZPAVnAAYVuxJedsEjy/9FTRuQwRdlHRzTBYUjJdFPVkZBAclRvL
qx70FsoIakltEdJw0DJX0N93+mndreuRGg3MG89wZ4OufTYoJS49MxKSIdedabFau0VImI8NhH2l
mNnOQ8Gx8PgAlQ0C28RXbE4j/fAngi7ysul+W2cPsu7mwxAhaW3xTQLiqtZq26X3hNY217WUHLB7
Ba5eYeSZcZT9yOHAs8UHwqIyw+PPQDKkb1ucwEZhUUGOdWwb2GCrtkiqaGnKcK3bIsQPM+itCbvP
lCFpFQ8ePmrFXd0loqbEv1lEQkbbYbfF/v1RbQ2378RoZJXRV84f9gjI8N8Q5ARH9j+4EBbuvu8u
YjUcxqrUcHMnp7CU2Mb1bHB23XUsLCtXrVrLLSC0HnZ4gpyakD3DtCGLgpqeIy8YShmp8G8UkpBR
2r3P0Hav4Znn9fdKj0qffvPL/E/FdJYGM/8MHxe/PYEvQe390d9RHpJ24gA4hrGmP0fIbJKRFeRY
yw6tYBs4uDfybhaCsRegmp8Gmx18Rl/ATvxKx2zbGeKroW6hsl1cSEhC0chOR1JH3aft1p2G0H06
qgYa6kPF9BURipk7OXdI36UvzE5Ng55Poa9dT4DDLO3v1h4VElOV5GVlBdffwESsliYPVXXddrJ0
P/OaPkp5Q6d7sm6XMzJRlZGVlpBQVjPeASiGVa31LZmudvLiQrCdoBezhiYZ1iI2MgH0VzPz83Mz
s7Ov/wLzal2AtET6w5Jd2xS0RMBA2oDg0ABHP44NN577eZ8r8c8ovfBo4s+XYJGP4NXSVZeWV5KR
kVfX3GunZ2mnGtNd11JxZJ+ujKLSeh/QiRbhTFMXXUkcfWp6emr25Q/zLxfmoSPYz85mNU2plpJa
WoKc69g5uLg4OLg2skv4qe80sgj2yr9VmV9D7R//cdyIR0JSQlpBUUFFx1Db2UDHQsbl+d3mar89
jmpySsrrzoBeBHOpn1A7qLUukf5ybm5qZvbl1OT8wvzCwvT8X5naqQ0348zlTbT4Oddv4Obm4uDk
5l2nqCmlbxecfKbqxoWT5x/0UhO2imwTlZaVVVDXtzAz0NK1UbS6+6TxZpjTPidFOUVpASokQ2pu
O6EkoSKgPv/H1NTk+Pj05NjU7NTk7MzCj7/UmUbm3rsauUPDWpefi5WDG86lxs2zntsrKDQj5+LZ
/GvNNypyUz3V5MTFRCWl5ZR0zXdYmRsZyxrVP791PWy3nf9uCUVFAWNIhsRr2KXbuzrYi9+hz87N
T02OjlL7h0fHwWkfxA1pH5Be9uRKxG4jexMhHg520B2wJ16xLa22qrrm4rn8WJ89JqpyGtIS4uJS
csraRhaWVuaG0la3225fCbG3ORppLCGvyBIFAha7UTddm0d3Uyh9YWpqYmRgqJ/SRxsYGRqGT/FM
j7q75GdfbquOPWyz106Kh3sDB4KHn4+F3ycdfuyAlYakqKSynqGMKON4pKWrDzfm0ZQ89KDj1mnf
XTYesb5QVtbeBYnfJZmuY6ynKIyiT00M0qhUMpo0NEABOZ0am5j6Ida+sLCstvN2irfzQRddAZB+
Lm4evi0cGyXFt24Vl1PV1DPUlZNQUIar8GtqgROdrqQqvPPF9Sw3WzufmBgXGSUVEa2fQMBomjvT
d7naS1ylT05Mjo70j5CxJByGMjQ2ShuYmPnhpF3ByXMX67oeF4V6ePo7KfNx8nBs4NkkAA6fwqLi
UjJyqqryMopq6uqqSkqqmmrbZd2qMfdORzrv2B0UezzaVkJBaTWcYUMKpglwbYXp/f7j2PTU5PBI
H4pEQGPg+O24gdHh0elqh6zS8zU1dc87riYf8zse7KTKx87Jxc3HLyQiIi4hjZCBKSCUBJUVZeVl
ReQOnO7tqEx2t9tx4HhseESYgbSiAgf0Nk1/g/Td+jaaHfSxyemR4SFKLxaH6R8gU/AkyIQcfuCM
qDjf+PD6zXsd90/HhxxPijlssp2TnXeLgOBWYTEJCUkpabiMkLSMjLiAqFHghZ7ui6l+jtb27uFR
kZGxPiryShJyL0HAJr2jU2MPxyUcuA49G5oAIDyOqUJCqirIE6nL/XjlxVu9T27WNjx+VncqKTIu
Myv66E418S28m7YIiYiKiYuKbhMU2KZoHVDUjH5WHu+ze4eNs19YaAQ4IR6Ullfk3QNCVrbFJNX4
sJnQQfpvk9AbDgcIWCLDhKTg+pgm5Eiwz+UrDV3o1oba2rqmxmulJxLhOeWncxODj+61NTc0MDI0
2ensGZl75WH386r0MLdd1jscj/gHBIXHxMXE20koKLJ7As5OdukUKTcZQZ4X9HFQL/19pF4ShUQa
HcS8UyEHIo9UXbvV3otsb66tvnzx8qUzhVnpqZmFpy9dvVp1qbKy6kpNffPjpw9vlMCDj4BTt7nt
AXcP78DjMQnxsZFGUopKbImLKqT4SlHYaTp8fP8wlQy9LoGC76eRqAwVEnSKRM5yvVjd0Ibu6uxq
uXKxoiQ/NzsNnhCfAE9Oy8g9WVZ++nRpUVZy9LGje3eaGejqWzjuP3jY0z80KiExPj5AXU5JaW0l
AOVu35Vie8RB1ov+emZ6bGRwkILGE4mUYTyJhqUOUogDVBJ+pPJgRXX9c3R3R+fjq5XQS8jiI4L9
vaBfveDl5e3l6enm6uyww1RXQ0VZVdPAwsbB2dXdNzgyLikpLtFNTlFZZU1BEX3l7262B5Ndjrpa
ur2hg5lsZGBgkILFE9GDJIYKiYdUSMrA5O1DxTX1T1HdXZ1Prl86czITHh3i5+6yx8HW2tzESE9X
W01ZXk5GWloGmg8MzRmPJEGSEuBJsQm7QZoU2C4X0Vmo1keSj/K7uxk9pE/OzE2NDVHx7T14zGAf
mojF06hkeN92CnFk+JFn9vX6x70Q60bVuZJsRHSQ9yFIBIMeCmqqKSvC5eDyAgrKqhq6xtYO+494
B4ZFxSXBE2NiLAFKhh8JUJmKjskObLsVK+jT0zNTo6NDfXCsKqoH14VDIwlYAhaNp1EwBNwzf8SN
+geA1P7k5pXzpbmpMcHeh50dba3MjPS0NVSVFABKVkBBRV3b0MJu72GvgJAI0Cl4QmyoLvQjHX5I
T/zZzjjZztxee/erP2bnxkdG+ylYFAEMv14cHokhE9DITkzX424cGRsefbO+pbOr/cXjG1Xny/LS
4kKhX99gv8PcWB+wlBXkQbcEFZTVtfXNbJwOevgFgW4lIuBx8T5KsoqKcnzPAazLMQQRbBbiv4dC
n3s5OzM9NEBDEdAdKDSW3I2hULCdHWhCZzsG20uMDb1Z39ze1db6sPbSudK8tITwAHdXRtcM9bTV
VZXhikJKSgCmZ2Jtv8/NOyA4PDo+CQHy5Solp6AguY1QSF9R7pB8zCx45yX6q4XZyakRGrkHi+3p
6WxHdSH7SJiOHiy68wUS2UnqQxy7Ud/0ovPF0/vXKyuKwUgMD4Qsm107LEwMdLXUVREqW1XVtPSM
LGydXNx9A0OhKCISY+LttysoKkoLEiEV0lIXYWlupeTy268v52cmJwYIyB5kZw+RgO/uxKJ7X7Rh
sKjObuSzHlRXvl9N3Z3WjtbHLdUXThdlIWLCmFqIDUibvo6mOlxts7q6pq6BifWuva4efsfComIT
EYiEmGhTCbgii9LqzAL6imfSCGuLHRZiT+mz0MthR4cJYNHowWNBMHGY3t6uXiwJ3YXveNHzFH3W
93Ld7SftTx/evXq2NP9EUhTj7V977AHOWF9HSwOhvklDW8/QdIfDPjBCmHGEx8eGaMsglFdssQB9
y1feA3cy36uST3/zenruh8l+KpFIxnfjcZ1IFKqtF4vuImA7umgXfBLbqed9z9Xdftz2+F7jFUjH
SoiAXLr9TmD0QxKwZjITBkrswBEfZiCTk+LivJUUEMosSuydkAtpvg2uZqG+XXqMPvtyru3F8E84
JI2IIRG7UFg8BlKCaRR8Xy8yKji0C3/Tv/TGrYetD5tvXy4/mZ0Se5zx7jboXa8mBqAEIJyOvrGl
3Z6D7tCABIFMToqNPygpi5BnUWCJglxITiW48ial9VX02Zn5OeITZPXV2WkUnoLtp2KpcLwcZbTp
1t1byMbk2ymdnfdCC27U3Xv6oKnhYmkhmEVC/ZhCj5W5MRgoEI6RN3vnQ4uRTE5OAMNEXC5ZnkVY
ej6XvrNS0+XAARcL399/mXv5amZ6oNAvOb9zfgZsLVAkIm18Hl1/9HDh8csXspsTepBPjmfX3Wx8
eO/OzQsleemJkUG+HszMmYKBopWizgdmK7OdjvvfhRKREB1tvj1FkUWZpSyXviLZBR5o4e9Aoi/8
ND85MVwU8bC5MDK7Z4iGp42PYG6dOZ0UFD3Yl3motjEOR2wLTa2ru3Xv7q3acycZJeANuV/QtPV3
4hYrYDGS8PiYUB2pFCUWea7bkAnpuO/QoaPayfSpNsKPv4yl5g7imx7dLovI7ptEXT9dmJvf8uAh
vKU97ljXZfgQoTcitr4OLJo3rpYXZCXHQhKk6z6QOIv3E2e1a+8hT//g49HxicnQOPFVlgWdk+fr
zAHVvR4ubykoO/jXNKa5p6ewamJ4eKLjBel5YmZlZkbpbfTgUO+lQ3Yns7Ini9PG8aDGa2tq62/V
VJXlpCdFhfhDL2J1BPM/SJw2M3H6UAm4eS+GMhnU92EZeYCTEsGB3kVLmptbbc2mT8//PN8W5NL+
0/T46x+IZ7MqT5feI1D6sLWpJ+Dw4z/Wlixk5sz0D5YerrxWc/1m9eWyHDBTBvpAb7tcrHDGOHm7
zoBYRoJYpoDMxe/ergBwwjq/Qh6kpeEOG+WD9DfwKaMJFOVpYu5zVMPZkqJTD4cGyD03MqKLaltp
Q7TRtDuzJ08O4/G3DudUX7tWXXX2ZDYi6nigF9Nqs3iv6IxAFbh6vA0mPD4qylQyVZllm+HP2XQb
pLHLwQNGjfTJyZnJ4bH+CbS/S3rayccEHIVUlxKVcKOymPS/icGFB0k9xLQzLwepmLDAq5euVF0+
nZcCSXReR8FivRjMRRxUBW9XHBDM2Bh/VTmA43GFVLqLO/z87U7QwTFndg53Iw1RUFx+B08h4poz
4Ygzz9DkttNRJ+6/nqvOHialNLykUofPOJedP3/hQlkmIjE6GBQd6N37udMxAGUAZpRjjGAmwxOi
4vdIKKUos6isiwW5C7N23WNB/Gtq7ndyWUxy3ulmAo2MuZcZEn7zGWp2ery3ru1eQVz22NWyCXza
vXHCcH+9a9jFsvKSwixEdBiz6BzeTpfJjKozt3UCMwpzsgQzSlSYrlSa8grWW6BvVGP7vcrF9IUf
5x/F2bo3gn0jviUjvuDSjczC9pfjfeTheVRzR/OZ8z41tPbEzsn+YVRrnlN2eWFePshcqJ/P4oud
31Wdlp6xJVQGAcxxCY+PjN8nqQRCKbeVCnCNRl72B+d++W26JOFFrevlwYen4tLKH/S/+mOsMjzj
+cL4EDgU9d7tvHXkwejD3GmGA3nf82Bhbm5WOiIq2N8TqrpdjIGymDl9kx0O+92YoQR7heiYIDVZ
1VQVls12UOai1G1ln9PpqLzqGfpzD+f4+MSr5PmfIAny5+FL8UmPfpzu7x+bHr4YjhxqONL5Zr5/
gNR5zsEnJz0VER8Z6Od1yOX9zPGBzEFlAHZ2IJSJ8MTYyBgrGc1UDRat9UXZdNtBPn6YP52a5Bl6
+daJVF/fgnuo0YHJIciBHBt/TSqOS36wME4deHMxamj21KGS3EfTk8OEjiyrY8nxICeB3p5u+9/P
HDjrG4GNkCsjlvEJCbGRcU4Kemn6LDqiFGhUcolun//tQsr95srr15ufDY/0v+dA0ig/TFTFJz1Z
mH5ZnPWKnpradya5sHVmpOtJkqVfZFjIMX+vI4cP7N4F+UmMzPFBmQObk8PeIJQxcXGxkbGuSgpQ
JNV47MCgzN7v2EqfeEmn/zo/NjxIow2MDtKG3jcgXw5fy6m4R0xLuX83pLTp0bPz6WkPJx9fCTRz
8/fx8vQ45LLfyc7acjFxG0HiTEENMCaU6OgoANM1SFdiUV7ZBBmQ+/WT6T/NL8xPftKApEyO302L
cQquRBxoQSGfPnl8piTzSus1b5Pdh10PgayBzbKVmYkhI228mjqLFRAUGh5xPCL6gN5OM0UwJFV5
rHPotnekd00yPn4yRCHjacNDHzcgZ0YuWSc+iIDPjkzPYl8MXj3Y/KCpyt/EcvfevXscd9nusDQx
0mfStHTBCr4XbP+PBQcHRUbsAccOY4imsrIF0AoUH9AX5udfjveP9ZP68R83IKeGF2YCEm4fyqbP
DFGG/npx5G5/682aylBzA0sbW9sdVhamRtDUpY5Q4wNbL6jgDh719vUOCffaZWZntctYMWWxc8Kz
ymn0H1/Ov5wbn+hD9fWRCEwDkjo6OkBhGJCyiwZkh2tWjZ9H6tMfJ+cGg+7PYyaoTx5URtnrQs+L
TYwNoRGplqzKp6ahY2xp67TPxc0/PMDDydze1pKJY/TOLhU2TZ8HO+XR4X4ciQrm43cG5CA4tdEW
Dcg+ZFeNZ3Wlz82c2NTWn2LKf2IakHerTnhY6WjraGlqqKupqigpwpU2KYLjFJhR7PZ7BwW4mfvH
m9oxgMmM/uXSbRxO0WdmZmdGBwZIfYNkPJHcRyD29ZEhA7IPRxwcXjQgaT9Vpb1+5N39ur882z3u
FQFHhAxI5NO68jgXC11NsENXlJdNkeGTU9QwsHLYf9jdxd7eJiLqbxqjexsb/cARcXIM8uBwJAIG
RQBnUThenUQe6O8nEml/648L8DO/3Y/tG6b9/BR+604XpD/2Ucndrc1VueGHbU101FWU4PIwBbgi
n4q2qY2t4549lo7OrrZhb4mIxf75lhPpU9OTQ7Q+Cq6rs6cHg8X0kchEApFEokH6I42IWtQf246j
pm7E9w9QR7uH+lrq7g4w9Ec0FvngdlVhgt8BG3A2VVZVVVZR1VJXVHA84Oxms2+vywdE0EdAvPBw
7n+/z4+P9BNQPageNLqX1ofDY7E4IhGFfV9//OFMzi9jL05A+iNI32BvGxaDH6QSBgc7nz9rvHGp
NDMu1PPArp0WJsamZlZiLHs9nV0/JMIZfcyj+56BGQZXdoL9ST+JgsVQUEh8DxbV/QKJxWCJWCKG
oT/291GpY4jbc/2PUmgTIxQKiUoaGqWCYkETKFQcGd36vLn+cmVJVnJC9PGQ4NDj7uwwrYCPEEEf
3+mPwadb+2cnxvuI/RgcvutFOwpLRHdj8XgSeZBKJuKxwy+Sh4fH7qaQoB9pUPv7B2jUvhFIfySQ
cVgKFtn6sKHqfEX5ycK8opwMWRhMwO+fQGVl0EOm/sgD6Y8ixseK7xEWXo2PgDFKxhJQL7rxKDKF
Aiaawf4+QtKpodbxW8cfd4GIUwj9NOLQYB+SAL5O7QaJJ/Winj1oabpZU1NdVeoA6Y/73P7FA/0r
pJv9rT+uFTHxKWzGTr+c6B8gdiHxnVgUaoBMJhH7hqdDXdADtJBQ/DANhUH19lEHB8m9JDIJ1QfO
twQyHCne2YNCdrS3dTckMPRHZd+D/8CB3v1LfxQ0dM+8iZocmxgDJQ/JuWQM9GsbmgNiH2QENpHB
wO3vHyRTqbQ+IuO14FhQLzg0CdMLjkp9tAnsFRWm/rjf40OYmhSs5SP64+rN6s6p1Z0j82PTc8ND
0PSGb27FlWUWPb7Xihqk9THeBEnF9xFR3R2oASIG09WN7kaRCQTazOSzt/qj8rGd77HMZFnXB31C
f9yosDuqoq1/+uX4+BiFRsENTw6NjYKprp8EEAz9kYju6epEd7WjcARwtiUSkZTh170n+SD9cQX7
Ead3HGsbIY6DraV0zU/oj6s2S1sGFTaTxkHuBofJuAECBoSMQAHjgQAZ3HDiRkxvJ6q3B4PD4Yl4
kE/qbYtF/VHF1ZmBMbM3E1PxfXKabtP2cf1RcB0Mtl7KwCOnHjn5CmymiQNUHKoXBQqPiCMBHL4X
2YUiono7unvADDAyM/88ZlF/tDuyx8U2PFRKyjSi85P6o+h7+iP8Svfg/A+TgwQSFk+i4HFEKqGP
hCeBu4d+hQKJQqQNzaMuyDL1R2lPBxsFp2CPqtFP6Y9vtT0xrtWwFRsVdkWee0qbfQmdBvAUMONT
oFfIktG9eBKWQuwbmac1usFWL+qPfPu9UxunGfqj8Cev+05/5JK0CC29jxudnJoZpoxgsWQ8CY3B
gtwiif0jC8/zud/qj6uTxz6lP/7TMXyrP/oV3EYOvZwfmx0fIeEJJDKFRBoZeYlv+A/98SPK4lv9
0cwn/xZyeHZmbHpkpJ86MjE+9/Ix/HP6o9jn9Ucz78yaF7SZlwvz0zMzvyCrv11/ZLwJ8kTVc+rL
P+nzHUFfqT9uXdQf0y/hbzt9uf4o8P8m/TFc+1gADGa8jmXFN7eVq9esXbuOlY19AwcXJxcPD/gb
L6gNQREhvk2bt2wRkpDRMDHSUtPQ1NA1NtDW1lGV2LZtEyfbunWs7JCLw7Zu9UoWlhWf/23en2ss
q9asAfwNGzg4uTfybNzIzcHDv22bkMh2Mf4tWwQEt8mqGdrbm+jpGpqY7wDnGEMtWQkJIZ4N69ax
cXBxcXKwQ/wV38OHArBuPTs7wG/khm6Ah18YZFZMRGiroICAsISsoqaBiZ4m2LUagS2yuqKslPhW
bnY2VlbGs0io/yu+j78KJGA9iD4vH+9Gvk1b+MHQ3CYsJiUhuk1iu5CACBhsqvqG2jqmZgb6WqoK
srJyEkKbAJiNnZOTE+KzfBd/BbiB1WvWc3Bx8/Jt5hfcKsJ4MCQuLSMpJi0vJbyZl2errIoK2KSb
mxvpKEpLbJeSEhMR2MjJDo0YTk62td/Z/xUrwAhYC/g8oO9bt4lLSIhvExKSkJWUlFRQkhfbvIFz
s6ScjLyKhp6RobqchJiouLiYiCAfNyegc3FuYFu76vvyz+CD8QcmCH4BYVFxCUlpMMKlpMXE5cAG
XkqYZ5OQsLi8kqKCnJK6kpzUdjERcQkxYf4tvNw8PNyc7Kzrv3P8QQlYvY5tA+j/Zn5hcUlpeQVZ
UVEZKZHtCnJSkjISAoJCAuKKitvFtonJyEpLSm0XFtsuulVYWHAzmBM52devW7ME/PVs7BzcvJs2
C4jLKSgpgr5LSm+XlJWWkpKXlxYX2iq2XWwrv6CwiIiImISEmIiwoKCwMKiOLRs52AAfGgDfxQfx
Z9sAym/zFkFxOWUlOQlxcQlZeVlJWUVpSVl5GXGRbaKiwkJg6dsiuE10u6gwtAvdwLUCtnIjJ+v6
tWugBHwHnsmHxj/Iv7iMopKspIQkuA15aSU1eQkpWRnp7dulpWXEhTZx8AkLCgjxwmDqARfbO+uC
JcBtsK5dveq75r+3fE4ePv6t20TFZWSkpGVkFVWU5FV09FRl5eRkpbdLyMgrSQnx84IS2QiD7bu3
KLr/fEoYtup75z+ID82/nNy8mwWFtnCtXbFqDTsnFxc3J6+gqKSUvJK0iLCEjKKi1NZNm/k41sJ0
nr6n2v98FGxSvpMPht9aVlZ2jg1rwJ82SJsfiS++cK2uruZiRXa0v72KMDfnVglpKVkpQb5NYIGO
+4fsfxIGW/Wd/FWAzwb9q5r/hZ6FDy//K7Wl0FN5BYxbQnITz2YYrPpfnzY4B4N93/gD3V8L/mla
iPvopxlAG6/2FILB2LfAYA8/8tUk2PeNv5Vg67UtjvgpOLPNXLAA/++jj35NFfZdfBhMvvz3z9MZ
7cmO0o9/oZdxkW9um099AfyzTf076LBjP34vnl707fRtD76bTqc//2a845slwNM7vxUfsxR0Ov3x
N+JzlwZPL/s2fN4S4ele34SPWio8ffu34K2XDN/3LXjuL5nyvqylfQu/ZcnwdJlvmH4tlw6PAWeo
r+b3Lx3fC2whvhZvt3T4X9fDvn7782zp+CdhX3/8E1o6PF3oG/jHlg7fAPsGfu3S8RUg/NfyaUuG
f8TEf90NbFm6uU8FxvL1fLUlwy92/yv5pkvGV2R2/yv5VkuFb3xL/jq+yVLxRd+Cv46vvET4i++u
+HX8zS+Xhm/0jvuVE0DXkuDfrPvG/sMql4Rf+zf+K/lJS8K3/FY8bM9S4Kf+xn/tDYgtxbEr52v4
AuF3ykz//mPHEvAV38P/F59lHvqOoQpnbuafS74fP/h+9/+L/+6k9/pOiDL4s+H3878m/Fs/+E7a
RW+zye/mG38F/8m/vvv19+J/XP3l/J3fC/tIu/Pu6v/Nn1kGfuj7+M/zM5YBD/adX8rfthz4mQ/w
n72BpVns/tGufTHfbTnwdP8v5W/4c1n4cu/wLCyf5d9eFvz4u+6zfJ5vvyz499P/Wf76X5eH7/eF
/LvLg3+39v4H33uZ8NOwL+KLLBOefvM9/mfqj7xc/Igv4hcuF56u9Q/+R5//LNkp71/t9eov4K/+
/ucqn2r3YR/yP3oAuLlseHos7MMb+Nj5a5kmPkYz+ZD/sQPQml+WD/8HF+yDG/gYv2r58HT0v4L9
L772MuLplf8ebP/kDy8nP+g/+ZHLiacb/Vf8uZcV/yfXf/GXsfRBw34k/B/wNZcV/9Hh9wG/b3n5
kf/B91hePN388/xVS/JI+9Ptt3Wf5y/BjzY+227/G/8+X2yZ8XS7z/Pblhk/+RH8e3zHZcbTXT7L
X/FqmfGEj+H/5i/34KNLfJavtNx434/i3/EHlhl/8uP4t3zEMuMvfAK/yJdYZnzhp/CL/GU7bjFb
4CfxTH7istIxmp/GM/jSy0l/E/8ZOpO/dM+U/9V+zuP/LB7iZy8bHRO++fN0aPu7TBv++QexKv8F
h5rcsmw6zmqzfQkc9N9gOfD4L4Mz4m9RhllyvtCX86H6F3M9hVpK/CfWmo/3f7GJ7ivu+Wtp8E++
HP/h8U9ob177b9/P3/itfKht2Zn6cOG/GZ9pPl+B//jjbw6TqPqJb8Ujvwb/6cfvq9QDqijfwhdb
Gj6jybqVov73dfjsr8J/wQP4rY7ZT778mePMf13uq/lQ47ZMuv9lg9JqWfhQ4zCF3/vPM8L9/77O
t/KhxmkBf/TT5/j/ud5+Hx9qG20ynn/KQkv52ot9Ax9q/A653R+ZrOe+/krf/vkX4QOnsP/g7/q/
yYea5JFK6t/4nm+4wvfxoaZ0rHaage/68lV/KfmgrTVCPKNT13zLty4JH2qiX7jhWy7+N7b/h/H/
P///6/wVsL8fxX6kvf2/Pv3Fz3zzF3wDi59HkDP4j+ymr2Cw/wNQSwcIPvVU6XJ9AABezAAAUEsD
BBQACAAIAOVr7DgAAAAAAAAAAAAAAAAYABAAanN0ZXN0L2pzdGVzdF9QcmVmaXgucGNoVVgMAFwP
eUhe6nhI9QEUAFWMMQ7CMAxF95ziSx26NRdADCAxsMANoqixiasSV44rcXy6Id709IYXY4gRTyOW
DyrlQgZWQ15XdN1tJrCs1KEMr4Rx6U7dR3i2Fzmk/efNdKHZp+MawiBciJHS43K/phRwMMh7U3Oc
brq3kl20xZ9O9RwGakU4fAFQSwcIVYh4IHkAAACaAAAAUEsDBBQACAAIACJ57DgAAAAAAAAAAAAA
AAAOABAAanN0ZXN0L3Rlc3QuanNVWAwAXA95SFABeUj1ARQAnZTfa9swEMff9VdcxcBWZ+w03cNY
6MNgfRmUQvuYpqC6F8ebJwVZbhua/u+V5B9YiVzKwGD7fnx197mzs1MCp6Cx1vD79vrhD+b6iv/F
+KdSfLf/xTXuL5WSan+DxeXLlpno9sqIVjt4JVmXzW2CNZNyDfFJLPDZacQMSlFrLnKUa3AmxmCr
SqFjOgoSUrfeO0HZ4lAkei71Jkog4qqoo09JHqYEDhhiz5J5cs7SCkWhN3ByAeeBEnv3mpdVo3BS
ZjlfTUksVx9kszSXpi3V5Foqo3ABy9XYFCppnOEpD3N5NCP0x2KH6k/FWjyCXYhFZh+9Yp1vPpt9
T2aJazj5xtInXjV4vTY5pnMTBB9HHZ/V+4J8upBDPMM5zMd0LD6NaeCEdst9UG7xfVLO5JXfB1lW
7tmrvPVGUm7NCqb/sK55gZYRtSZ6LNSFBjF0RwU5BHweiFBueGEUFviy9Um0H7+PovshjFsYwiyM
9sVroPcfdZCl2WTlwaQQnkl1yyfk/I9jxjTo/QarSn6hLLXgYupeKQsiaUPCc53SK6R8fNgh/bwg
IW+Qc51vYmTklQD0HWJalQLhK9AfQM0Nh100JpcLLlqhbpQwolWNC/LmtqKzuQ+0/e83uHgHUEsH
CKLlzpraAQAAOAYAAFBLAwQUAAgACAAieew4AAAAAAAAAAAAAAAAGQAQAF9fTUFDT1NYL2pzdGVz
dC8uX3Rlc3QuanNVWAwAXA95SFABeUj1ARQAY2AVY2dgYmDwTUxW8A9WiFCAApAYAycQGwFxJRCD
+KsZiAKOISFBDHqfvkB1zAFifjQljAhx8eT8XL3EgoKcVL2Q1IoS17zk/JTMvHSgZGiIm66FtaGx
iZGhuaWFCQBQSwcIqM3SUF8AAACrAAAAUEsBAhUDCgAAAAAAGoHsOAAAAAAAAAAAAAAAAAcADAAA
AAAAAAAAQO1BAAAAAGpzdGVzdC9VWAgAn/V4SFMPeUhQSwECFQMUAAgACAAcgew4TNYV/iEBAAAE
GAAAEAAMAAAAAAAAAABApIE1AAAAanN0ZXN0Ly5EU19TdG9yZVVYCABcD3lIWA95SFBLAQIVAwoA
AAAAACCB7DgAAAAAAAAAAAAAAAAJAAwAAAAAAAAAAED9QaQBAABfX01BQ09TWC9VWAgAXA95SFwP
eUhQSwECFQMKAAAAAAAggew4AAAAAAAAAAAAAAAAEAAMAAAAAAAAAABA/UHbAQAAX19NQUNPU1gv
anN0ZXN0L1VYCABcD3lIXA95SFBLAQIVAxQACAAIAByB7DjckY+4KAAAAFIAAAAbAAwAAAAAAAAA
AECkgRkCAABfX01BQ09TWC9qc3Rlc3QvLl8uRFNfU3RvcmVVWAgAXA95SFgPeUhQSwECFQMUAAgA
CADBfew4kXsIjT4EAAC9EAAADwAMAAAAAAAAAABApIGaAgAAanN0ZXN0L2pzdGVzdC5tVVgIAFwP
eUj6CXlIUEsBAhUDFAAIAAgAwX3sOL4dK7lfAAAAqwAAABoADAAAAAAAAAAAQKSBJQcAAF9fTUFD
T1NYL2pzdGVzdC8uX2pzdGVzdC5tVVgIAFwPeUj6CXlIUEsBAhUDCgAAAAAAAoHsOAAAAAAAAAAA
AAAAABgADAAAAAAAAAAAQO1B3AcAAGpzdGVzdC9qc3Rlc3QueGNvZGVwcm9qL1VYCABe6nhIJA95
SFBLAQIVAxQACAAIAAKB7DiaTAkeChUAAN2lAAAmAAwAAAAAAAAAAEC2gSIIAABqc3Rlc3QvanN0
ZXN0Lnhjb2RlcHJvai9rZWx2aW4ubW9kZTF2M1VYCABcD3lIIw95SFBLAQIVAxQACAAIAAKB7DgM
C3L9fQUAAPcYAAAmAAwAAAAAAAAAAECkgZAdAABqc3Rlc3QvanN0ZXN0Lnhjb2RlcHJvai9rZWx2
aW4ucGJ4dXNlclVYCABcD3lIJA95SFBLAQIVAxQACAAIAAKB7DjoUd8kTQcAAKkfAAAnAAwAAAAA
AAAAAECkgXEjAABqc3Rlc3QvanN0ZXN0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2pVWAgAXA95
SCQPeUhQSwECFQMUAAgACADla+w4PvVU6XJ9AABezAAAKQAMAAAAAAAAAABApIEjKwAAanN0ZXN0
L2pzdGVzdC54Y29kZXByb2ovVGVtcGxhdGVJY29uLmljbnNVWAgAXA95SF7qeEhQSwECFQMUAAgA
CADla+w4VYh4IHkAAACaAAAAGAAMAAAAAAAAAABApIH8qAAAanN0ZXN0L2pzdGVzdF9QcmVmaXgu
cGNoVVgIAFwPeUhe6nhIUEsBAhUDFAAIAAgAInnsOKLlzpraAQAAOAYAAA4ADAAAAAAAAAAAQO2B
y6kAAGpzdGVzdC90ZXN0LmpzVVgIAFwPeUhQAXlIUEsBAhUDFAAIAAgAInnsOKjN0lBfAAAAqwAA
ABkADAAAAAAAAAAAQKSB8asAAF9fTUFDT1NYL2pzdGVzdC8uX3Rlc3QuanNVWAgAXA95SFABeUhQ
SwUGAAAAAA8ADwDNBAAAp6wAAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22627</attachid>
            <date>2008-08-03 19:08:57 -0700</date>
            <delta_ts>2008-08-04 16:00:44 -0700</delta_ts>
            <desc>Add new API functions (JSObjectMake(Array|Date|Error|RegExp)</desc>
            <filename>20020-2.patch</filename>
            <type>text/plain</type>
            <size>12500</size>
            <attacher name="Kelvin Sherlock">ksherlock</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM1NTMzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDgtMDgtMDMgIEtlbHZpbiBT
aGVybG9jayAgPGtzaGVybG9ja0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAo
SlNPYmplY3RNYWtlQXJyYXkpOgorICAgICAgICAoSlNPYmplY3RNYWtlRGF0ZSk6CisgICAgICAg
IChKU09iamVjdE1ha2VFcnJvcik6CisgICAgICAgIChKU09iamVjdE1ha2VSZWdFeHApOgorICAg
ICAgICAqIEFQSS9KU09iamVjdFJlZi5oOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoK
KyAgICAgICAgKiBranMvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEtKUzo6Y29uc3Ry
dWN0RGF0ZSk6CisgICAgICAgIChLSlM6OmNvbnN0cnVjdFdpdGhEYXRlQ29uc3RydWN0b3IpOgor
ICAgICAgICAoS0pTOjpEYXRlQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAg
ICAqIGtqcy9EYXRlQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBranMvRXJyb3JDb25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgIChLSlM6OmNvbnN0cnVjdEVycm9yKToKKyAgICAgICAgKiBranMvRXJy
b3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIGtqcy9SZWdFeHBDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChLSlM6OmNvbnN0cnVjdFJlZ0V4cCk6CisgICAgICAgICoga2pzL1JlZ0V4cENvbnN0
cnVjdG9yLmg6CisKIDIwMDgtMDctMzEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBDYW1lcm9uIFp3YXJpY2guCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZXhwCShyZXZpc2lvbiAzNTUzMykKKysrIEphdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMjAsOSArMjAsMTMgQEAgX0pTT2JqZWN0
SGFzUHJvcGVydHkKIF9KU09iamVjdElzQ29uc3RydWN0b3IKIF9KU09iamVjdElzRnVuY3Rpb24K
IF9KU09iamVjdE1ha2UKK19KU09iamVjdE1ha2VBcnJheQogX0pTT2JqZWN0TWFrZUNvbnN0cnVj
dG9yCitfSlNPYmplY3RNYWtlRGF0ZQorX0pTT2JqZWN0TWFrZUVycm9yCiBfSlNPYmplY3RNYWtl
RnVuY3Rpb24KIF9KU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjaworX0pTT2JqZWN0TWFr
ZVJlZ0V4cAogX0pTT2JqZWN0U2V0UHJpdmF0ZQogX0pTT2JqZWN0U2V0UHJvcGVydHkKIF9KU09i
amVjdFNldFByb3BlcnR5QXRJbmRleApJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3Bw
CShyZXZpc2lvbiAzNTUzMykKKysrIEphdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvLyAtKi0gbW9kZTogYysrOyBjLWJhc2lj
LW9mZnNldDogNCAtKi0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IEtlbHZp
biBXIFNoZXJsb2NrIChrc2hlcmxvY2tAZ21haWwuY29tKQogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yOCw3ICsyOSwxMCBAQAogI2luY2x1ZGUgIkpTT2JqZWN0UmVmLmgiCiAK
ICNpbmNsdWRlICJBUElDYXN0LmgiCisjaW5jbHVkZSAiRGF0ZUNvbnN0cnVjdG9yLmgiCisjaW5j
bHVkZSAiRXJyb3JDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3Iu
aCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFj
a09iamVjdC5oIgpAQCAtNDAsNiArNDQsNyBAQAogI2luY2x1ZGUgIkpTVmFsdWVSZWYuaCIKICNp
bmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5o
IgorI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiaWRlbnRpZmllci5o
IgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCkBAIC0xMjksNiArMTM0LDkyIEBAIEpTT2Jq
ZWN0UmVmIEpTT2JqZWN0TWFrZUZ1bmN0aW9uKEpTQ29udGUKICAgICByZXR1cm4gdG9SZWYocmVz
dWx0KTsKIH0KIAorSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJyYXkoSlNDb250ZXh0UmVmIGN0
eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sICBK
U1ZhbHVlUmVmICpleGNlcHRpb24pCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgp
OworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLT5yZWdpc3RlclRocmVhZCgpOworCisgICAg
SlNPYmplY3QgKnJlc3VsdDsKKyAgICAKKyAgICBpZiAoYXJndW1lbnRDb3VudCkgeworICAgICAg
ICBBcmdMaXN0IGFyZ0xpc3Q7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1l
bnRDb3VudDsgaSsrKQorICAgICAgICAgICAgYXJnTGlzdC5hcHBlbmQodG9KUyhhcmd1bWVudHNb
aV0pKTsKKworICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RBcnJheShleGVjLCBhcmdMaXN0KTsK
KyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMp
OworICAgIH0KKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgaWYgKGV4
Y2VwdGlvbikKKyAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVjLT5leGNlcHRpb24o
KSk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIHJlc3VsdCA9IDA7
CisgICAgfQorCisgICAgcmV0dXJuIHRvUmVmKHJlc3VsdCk7Cit9CisKK0pTT2JqZWN0UmVmIEpT
T2JqZWN0TWFrZURhdGUoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sICBKU1ZhbHVlUmVmICpleGNlcHRpb24pCit7Cisg
ICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5o
ZWFwLT5yZWdpc3RlclRocmVhZCgpOworCQorICAgIEFyZ0xpc3QgYXJnTGlzdDsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7IGkrKykKKyAgICAgICAgYXJnTGlzdC5h
cHBlbmQodG9KUyhhcmd1bWVudHNbaV0pKTsJCisJCisJSlNPYmplY3QgKnJlc3VsdCA9IGNvbnN0
cnVjdERhdGUoZXhlYywgYXJnTGlzdCk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7
CisgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYo
ZXhlYy0+ZXhjZXB0aW9uKCkpOworICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAg
ICAgICByZXN1bHQgPSAwOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdG9SZWYocmVzdWx0KTsK
K30KKworSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRXJyb3IoSlNDb250ZXh0UmVmIGN0eCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sICBKU1ZhbHVl
UmVmICpleGNlcHRpb24pCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAg
IGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLT5yZWdpc3RlclRocmVhZCgpOworCQorICAgIEFyZ0xp
c3QgYXJnTGlzdDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7IGkr
KykKKyAgICAgICAgYXJnTGlzdC5hcHBlbmQodG9KUyhhcmd1bWVudHNbaV0pKTsJCisJCisJSlNP
YmplY3QgKnJlc3VsdCA9IGNvbnN0cnVjdEVycm9yKGV4ZWMsIGFyZ0xpc3QpOworICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICAg
ICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGV4ZWMtPmV4Y2VwdGlvbigpKTsKKyAgICAgICAgZXhlYy0+
Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgcmVzdWx0ID0gMDsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIHRvUmVmKHJlc3VsdCk7Cit9CisKK0pTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVJlZ0V4
cChKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgIEpTVmFsdWVSZWYgKmV4Y2VwdGlvbikKK3sKKyAgICBFeGVjU3RhdGUq
IGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAtPnJlZ2lzdGVy
VGhyZWFkKCk7CisJCisgICAgQXJnTGlzdCBhcmdMaXN0OworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgYXJndW1lbnRDb3VudDsgaSsrKQorICAgICAgICBhcmdMaXN0LmFwcGVuZCh0b0pTKGFy
Z3VtZW50c1tpXSkpOwkKKwkKKwlKU09iamVjdCAqcmVzdWx0ID0gY29uc3RydWN0UmVnRXhwKGV4
ZWMsIGFyZ0xpc3QpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICBp
ZiAoZXhjZXB0aW9uKQorICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGV4ZWMtPmV4Y2Vw
dGlvbigpKTsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgcmVzdWx0
ID0gMDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRvUmVmKHJlc3VsdCk7Cit9CisKIEpTVmFs
dWVSZWYgSlNPYmplY3RHZXRQcm90b3R5cGUoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiBvYmpl
Y3QpCiB7CiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwpJbmRleDogSmF2
YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmgJKHJldmlzaW9uIDM1NTMzKQorKysgSmF2YVNjcmlwdENvcmUv
QVBJL0pTT2JqZWN0UmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyOSw2ICs0MjksNTIgQEAgSlNf
RVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUZ1bmN0aQogSlNfRVhQT1JUIEpTT2JqZWN0
UmVmIEpTT2JqZWN0TWFrZUNvbnN0cnVjdG9yKEpTQ29udGV4dFJlZiBjdHgsIEpTQ2xhc3NSZWYg
anNDbGFzcywgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNrIGNhbGxBc0NvbnN0cnVj
dG9yKTsKIAogLyohCisgQGZ1bmN0aW9uCisgQGFic3RyYWN0IENyZWF0ZXMgYSBKYXZhU2NyaXB0
IEFycmF5IG9iamVjdC4KKyBAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2Uu
CisgQHBhcmFtIGFyZ3VtZW50Q291bnQgQW4gaW50ZWdlciBjb3VudCBvZiB0aGUgbnVtYmVyIG9m
IGFyZ3VtZW50cyBpbiBhcmd1bWVudHMuCisgQHBhcmFtIGFyZ3VtZW50cyBBIEpTVmFsdWUgYXJy
YXkgb2YgZGF0YSB0byBwb3B1bGF0ZSB0aGUgQXJyYXkgd2l0aC4gUGFzcyBOVUxMIGlmIGFyZ3Vt
ZW50Q291bnQgaXMgMC4KKyBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVS
ZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5
b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgorIEByZXN1bHQgQSBKU09iamVj
dCB0aGF0IGlzIGFuIEFycmF5LgorIEBkaXNjdXNzaW9uIFRoZSBiZWhhdmlvciBvZiB0aGlzIGZ1
bmN0aW9uIGRvZXMgbm90IGV4YWN0bHkgbWF0Y2ggdGhlIGJlaGF2aW9yIG9mIHRoZSBidWlsdC1p
biBBcnJheSBjb25zdHJ1Y3Rvci4gU3BlY2lmaWNhbGx5LCBpZiBvbmUgYXJndW1lbnQgCisgaXMg
c3VwcGxpZWQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbiBhcnJheSB3aXRoIG9uZSBlbGVtZW50
LgorICovCitKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJyYXkoSlNDb250ZXh0
UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRz
W10sIEpTVmFsdWVSZWYgKmV4Y2VwdGlvbik7ICAgICAgICAKKworLyohCisgQGZ1bmN0aW9uCisg
QGFic3RyYWN0IENyZWF0ZXMgYSBKYXZhU2NyaXB0IERhdGUgb2JqZWN0LCBhcyBpZiBieSBpbnZv
a2luZyB0aGUgYnVpbHQtaW4gRGF0ZSBjb25zdHJ1Y3Rvci4KKyBAcGFyYW0gY3R4IFRoZSBleGVj
dXRpb24gY29udGV4dCB0byB1c2UuCisgQHBhcmFtIGFyZ3VtZW50Q291bnQgQW4gaW50ZWdlciBj
b3VudCBvZiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBpbiBhcmd1bWVudHMuCisgQHBhcmFtIGFy
Z3VtZW50cyBBIEpTVmFsdWUgYXJyYXkgb2YgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIERhdGUg
Q29uc3RydWN0b3IuIFBhc3MgTlVMTCBpZiBhcmd1bWVudENvdW50IGlzIDAuCisgQHBhcmFtIGV4
Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4
Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFu
IGV4Y2VwdGlvbi4KKyBAcmVzdWx0IEEgSlNPYmplY3QgdGhhdCBpcyBhIERhdGUuCisgKi8KK0pT
X0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VEYXRlKEpTQ29udGV4dFJlZiBjdHgsIHNp
emVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVl
UmVmICpleGNlcHRpb24pOyAgICAKKworLyohCisgQGZ1bmN0aW9uCisgQGFic3RyYWN0IENyZWF0
ZXMgYSBKYXZhU2NyaXB0IEVycm9yIG9iamVjdCwgYXMgaWYgYnkgaW52b2tpbmcgdGhlIGJ1aWx0
LWluIEVycm9yIGNvbnN0cnVjdG9yLgorIEBwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0
IHRvIHVzZS4KKyBAcGFyYW0gYXJndW1lbnRDb3VudCBBbiBpbnRlZ2VyIGNvdW50IG9mIHRoZSBu
dW1iZXIgb2YgYXJndW1lbnRzIGluIGFyZ3VtZW50cy4KKyBAcGFyYW0gYXJndW1lbnRzIEEgSlNW
YWx1ZSBhcnJheSBvZiBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgRXJyb3IgQ29uc3RydWN0b3Iu
IFBhc3MgTlVMTCBpZiBhcmd1bWVudENvdW50IGlzIDAuCisgQHBhcmFtIGV4Y2VwdGlvbiBBIHBv
aW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYg
YW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4K
KyBAcmVzdWx0IEEgSlNPYmplY3QgdGhhdCBpcyBhIEVycm9yLgorICovCitKU19FWFBPUlQgSlNP
YmplY3RSZWYgSlNPYmplY3RNYWtlRXJyb3IoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYgKmV4Y2Vw
dGlvbik7ICAgIAorCisvKiEKKyBAZnVuY3Rpb24KKyBAYWJzdHJhY3QgQ3JlYXRlcyBhIEphdmFT
Y3JpcHQgUmVmRXhwIG9iamVjdCwgYXMgaWYgYnkgaW52b2tpbmcgdGhlIGJ1aWx0LWluIFJlZ0V4
cCBjb25zdHJ1Y3Rvci4KKyBAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2Uu
CisgQHBhcmFtIGFyZ3VtZW50Q291bnQgQW4gaW50ZWdlciBjb3VudCBvZiB0aGUgbnVtYmVyIG9m
IGFyZ3VtZW50cyBpbiBhcmd1bWVudHMuCisgQHBhcmFtIGFyZ3VtZW50cyBBIEpTVmFsdWUgYXJy
YXkgb2YgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIFJlZ0V4cCBDb25zdHJ1Y3Rvci4gUGFzcyBO
VUxMIGlmIGFyZ3VtZW50Q291bnQgaXMgMC4KKyBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0
byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBh
c3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgorIEByZXN1
bHQgQSBKU09iamVjdCB0aGF0IGlzIGEgUmVnRXhwLgorICovCitKU19FWFBPUlQgSlNPYmplY3RS
ZWYgSlNPYmplY3RNYWtlUmVnRXhwKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmICpleGNlcHRpb24p
OyAgICAKKworLyohCiBAZnVuY3Rpb24KIEBhYnN0cmFjdCBDcmVhdGVzIGEgZnVuY3Rpb24gd2l0
aCBhIGdpdmVuIHNjcmlwdCBhcyBpdHMgYm9keS4KIEBwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBj
b250ZXh0IHRvIHVzZS4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9EYXRlQ29uc3RydWN0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9EYXRlQ29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiAzNTUzMykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9EYXRlQ29uc3RydWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIERhdGVDb25zdHJ1Y3Rvcjo6RGF0
ZUNvbnN0cnVjdG9yKEV4ZWNTdGEKIH0KIAogLy8gRUNNQSAxNS45LjMKLXN0YXRpYyBKU09iamVj
dCogY29uc3RydWN0RGF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgY29uc3QgQXJnTGlz
dCYgYXJncykKK0pTT2JqZWN0KiBjb25zdHJ1Y3REYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
QXJnTGlzdCYgYXJncykKIHsKICAgICBpbnQgbnVtQXJncyA9IGFyZ3Muc2l6ZSgpOwogCkBAIC0x
MDgsMTAgKzEwOCwxNSBAQCBzdGF0aWMgSlNPYmplY3QqIGNvbnN0cnVjdERhdGUoRXhlY1N0YXRl
CiAgICAgcmV0LT5zZXRJbnRlcm5hbFZhbHVlKGpzTnVtYmVyKGV4ZWMsIHRpbWVDbGlwKHZhbHVl
KSkpOwogICAgIHJldHVybiByZXQ7CiB9CisgICAgCitzdGF0aWMgSlNPYmplY3QqIGNvbnN0cnVj
dFdpdGhEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIGNvbnN0IEFy
Z0xpc3QmIGFyZ3MpCit7CisgICAgcmV0dXJuIGNvbnN0cnVjdERhdGUoZXhlYywgYXJncyk7Cit9
CiAKIENvbnN0cnVjdFR5cGUgRGF0ZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKENvbnN0
cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCiB7Ci0gICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVu
Y3Rpb24gPSBjb25zdHJ1Y3REYXRlOworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9u
ID0gY29uc3RydWN0V2l0aERhdGVDb25zdHJ1Y3RvcjsKICAgICByZXR1cm4gQ29uc3RydWN0VHlw
ZUhvc3Q7CiB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9EYXRlQ29uc3RydWN0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvRGF0ZUNvbnN0cnVjdG9yLmgJKHJldmlz
aW9uIDM1NTMzKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0RhdGVDb25zdHJ1Y3Rvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw2ICszNyw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICB2aXJ0
dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7CiAgICAgfTsKIAorICAgIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3REYXRlKEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmKTsKKwogfSAvLyBu
YW1lc3BhY2UgS0pTCiAKICNlbmRpZiAvLyBEYXRlQ29uc3RydWN0b3JfaApJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL0Vycm9yQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL2tqcy9FcnJvckNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMzU1MzMpCisrKyBKYXZh
U2NyaXB0Q29yZS9ranMvRXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIx
LDcgKzIxLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFcnJvckNvbnN0cnVj
dG9yLmgiCiAKLSNpbmNsdWRlICJFcnJvckluc3RhbmNlLmgiCiAjaW5jbHVkZSAiRXJyb3JQcm90
b3R5cGUuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCkBAIC0zOCw3ICszNyw3IEBAIEVycm9yQ29uc3RydWN0b3I6OkVycm9yQ29u
c3RydWN0b3IoRXhlY1MKIH0KIAogLy8gRUNNQSAxNS45LjMKLXN0YXRpYyBFcnJvckluc3RhbmNl
KiBjb25zdHJ1Y3RFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCitF
cnJvckluc3RhbmNlKiBjb25zdHJ1Y3RFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xp
c3QmIGFyZ3MpCiB7CiAgICAgRXJyb3JJbnN0YW5jZSogb2JqID0gbmV3IChleGVjKSBFcnJvcklu
c3RhbmNlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+ZXJyb3JQcm90b3R5cGUoKSk7CiAg
ICAgaWYgKCFhcmdzLmF0KGV4ZWMsIDApLT5pc1VuZGVmaW5lZCgpKQpJbmRleDogSmF2YVNjcmlw
dENvcmUva2pzL0Vycm9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ranMvRXJyb3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAzNTUzMykKKysrIEphdmFTY3JpcHRD
b3JlL2tqcy9FcnJvckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcg
QEAKICNpZm5kZWYgRXJyb3JDb25zdHJ1Y3Rvcl9oCiAjZGVmaW5lIEVycm9yQ29uc3RydWN0b3Jf
aAogCisjaW5jbHVkZSAiRXJyb3JJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rp
b24uaCIKIAogbmFtZXNwYWNlIEtKUyB7CkBAIC0zNyw2ICszOCw4IEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7CiAgICAg
fTsKIAorICAgIEVycm9ySW5zdGFuY2UqIGNvbnN0cnVjdEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0
IEFyZ0xpc3QmKTsKKwogfSAvLyBuYW1lc3BhY2UgS0pTCiAKICNlbmRpZiAvLyBFcnJvckNvbnN0
cnVjdG9yX2gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAko
cmV2aXNpb24gMzU1MzMpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvUmVnRXhwQ29uc3RydWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBSZWdFeHBDb25zdHJ1
Y3Rvcjo6cHV0VmFsdWVQcm9wZXJ0eQogfQogICAKIC8vIEVDTUEgMTUuMTAuNAotc3RhdGljIEpT
T2JqZWN0KiBjb25zdHJ1Y3RSZWdFeHAoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBh
cmdzKQorSlNPYmplY3QqIGNvbnN0cnVjdFJlZ0V4cChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFy
Z0xpc3QmIGFyZ3MpCiB7CiAgICAgSlNWYWx1ZSogYXJnMCA9IGFyZ3MuYXQoZXhlYywgMCk7CiAg
ICAgSlNWYWx1ZSogYXJnMSA9IGFyZ3MuYXQoZXhlYywgMSk7CkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9ranMvUmVnRXhwQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9r
anMvUmVnRXhwQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMzU1MzMpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvUmVnRXhwQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsOCBA
QCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgT3duUHRyPFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0
ZT4gZDsKICAgICB9OwogCisgICAgSlNPYmplY3QqIGNvbnN0cnVjdFJlZ0V4cChFeGVjU3RhdGUq
LCBjb25zdCBBcmdMaXN0Jik7CisKIH0gLy8gbmFtZXNwYWNlIEtKUwogCiAjZW5kaWYgLy8gUmVn
RXhwQ29uc3RydWN0b3JfaAo=
</data>
<flag name="review"
          id="10004"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22643</attachid>
            <date>2008-08-04 16:00:44 -0700</date>
            <delta_ts>2008-09-22 15:55:26 -0700</delta_ts>
            <desc>Add new API functions (JSObjectMake(Array|Date|Error|RegExp)</desc>
            <filename>20020.patch</filename>
            <type>text/plain</type>
            <size>13717</size>
            <attacher name="Kelvin Sherlock">ksherlock</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM1NTQyKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMDgtMDgtMDMgIEtlbHZpbiBT
aGVybG9jayAgPGtzaGVybG9ja0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBCdWcgMjAwMjA6IFByb3Bvc2VkIGVuaGFu
Y2VtZW50IHRvIEphdmFTY3JpcHRDb3JlIEFQSQorICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDIwPgorCisgICAgICAgIEFkZCBKU09iamVjdE1ha2VB
cnJheSwgSlNPYmplY3RNYWtlRGF0ZSwgSlNPYmplY3RNYWtlRXJyb3IsIGFuZCBKU09iamVjdE1h
a2VSZWdFeHAKKyAgICAgICAgZnVuY3Rpb25zIHRvIGNyZWF0ZSBKYXZhU2NyaXB0IEFycmF5LCBE
YXRlLCBFcnJvciwgYW5kIFJlZ0V4cCBvYmplY3RzLCByZXNwZWN0aXZlbHkuCisKKworICAgICAg
ICAqIEFQSS9KU09iamVjdFJlZi5jcHA6IFRoZSBmdW5jdGlvbnMKKyAgICAgICAgKiBBUEkvSlNP
YmplY3RSZWYuaDogRnVuY3Rpb24gcHJvdG90eXBlIGFuZCBkb2N1bWVudGF0aW9uCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUuZXhwOiBBZGRlZCBmdW5jdGlvbnMgdG8gZXhwb3J0ZWQgZnVuY3Rp
b24gbGlzdAorICAgICAgICAKKyAgICAgICAgKiBranMvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgUmVwbGFjZWQgc3RhdGljIEpTT2JqZWN0KiBjb25zdHJ1Y3REYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqLCBjb25zdCBBcmdMaXN0JiBhcmdzKQorICAgICAgICB3aXRoIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3REYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncyku
CisgICAgICAgIEFkZGVkIHN0YXRpYyBKU09iamVjdCogY29uc3RydWN0V2l0aERhdGVDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYgYXJncykgZnVu
Y3Rpb24KKyAgICAgICAgCisKKyAgICAgICAgKiBranMvRGF0ZUNvbnN0cnVjdG9yLmg6CisgICAg
ICAgIGFkZGVkIHByb3RvdHlwZSBmb3IgSlNPYmplY3QqIGNvbnN0cnVjdERhdGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQorICAgICAgICAKKyAgICAgICAgKiBranMvRXJy
b3JDb25zdHJ1Y3Rvci5jcHA6CisJCXJlbW92ZWQgc3RhdGljIHF1YWxpZmllciBmcm9tIEVycm9y
SW5zdGFuY2UqIGNvbnN0cnVjdEVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYg
YXJncykKKworICAgICAgICAqIGtqcy9FcnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgIGFkZGVk
IHByb3RvdHlwZSBmb3IgRXJyb3JJbnN0YW5jZSogY29uc3RydWN0RXJyb3IoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQorICAgICAgICAKKyAgICAgICAgKiBranMvUmVnRXhw
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICByZW1vdmVkIHN0YXRpYyBxdWFsaWZpZXIgZnJvbSBK
U09iamVjdCogY29uc3RydWN0UmVnRXhwKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYg
YXJncykKKworICAgICAgICAqIGtqcy9SZWdFeHBDb25zdHJ1Y3Rvci5oOgorICAgICAgICBhZGRl
ZCBwcm90b3R5cGUgZm9yIEpTT2JqZWN0KiBjb25zdHJ1Y3RSZWdFeHAoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBBcmdMaXN0JiBhcmdzKQorCisKIDIwMDgtMDctMzEgIE9saXZlciBIdW50ICA8b2xp
dmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBDYW1lcm9uIFp3YXJpY2guCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZpc2lvbiAzNTU0MikKKysrIEphdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMjAsOSArMjAs
MTMgQEAgX0pTT2JqZWN0SGFzUHJvcGVydHkKIF9KU09iamVjdElzQ29uc3RydWN0b3IKIF9KU09i
amVjdElzRnVuY3Rpb24KIF9KU09iamVjdE1ha2UKK19KU09iamVjdE1ha2VBcnJheQogX0pTT2Jq
ZWN0TWFrZUNvbnN0cnVjdG9yCitfSlNPYmplY3RNYWtlRGF0ZQorX0pTT2JqZWN0TWFrZUVycm9y
CiBfSlNPYmplY3RNYWtlRnVuY3Rpb24KIF9KU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFj
aworX0pTT2JqZWN0TWFrZVJlZ0V4cAogX0pTT2JqZWN0U2V0UHJpdmF0ZQogX0pTT2JqZWN0U2V0
UHJvcGVydHkKIF9KU09iamVjdFNldFByb3BlcnR5QXRJbmRleApJbmRleDogSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9BUEkv
SlNPYmplY3RSZWYuY3BwCShyZXZpc2lvbiAzNTU0MikKKysrIEphdmFTY3JpcHRDb3JlL0FQSS9K
U09iamVjdFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvLyAtKi0gbW9k
ZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA3IEtlbHZpbiBXIFNoZXJsb2NrIChrc2hlcmxvY2tAZ21haWwuY29tKQogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw3ICsyOSwxMCBAQAogI2luY2x1ZGUgIkpT
T2JqZWN0UmVmLmgiCiAKICNpbmNsdWRlICJBUElDYXN0LmgiCisjaW5jbHVkZSAiRGF0ZUNvbnN0
cnVjdG9yLmgiCisjaW5jbHVkZSAiRXJyb3JDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkZ1bmN0
aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNDYWxs
YmFja0NvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgpAQCAtNDAsNiArNDQsNyBAQAogI2luY2x1ZGUgIkpT
VmFsdWVSZWYuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKICNpbmNsdWRlICJQcm9w
ZXJ0eU5hbWVBcnJheS5oIgorI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAjaW5jbHVk
ZSAiaWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCkBAIC0xMjksNiAr
MTM0LDkyIEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUZ1bmN0aW9uKEpTQ29udGUKICAgICBy
ZXR1cm4gdG9SZWYocmVzdWx0KTsKIH0KIAorSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQXJyYXko
SlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sICBKU1ZhbHVlUmVmICpleGNlcHRpb24pCit7CisgICAgRXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjdHgpOworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLT5yZWdpc3RlclRo
cmVhZCgpOworCisgICAgSlNPYmplY3QgKnJlc3VsdDsKKyAgICAKKyAgICBpZiAoYXJndW1lbnRD
b3VudCkgeworICAgICAgICBBcmdMaXN0IGFyZ0xpc3Q7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgYXJndW1lbnRDb3VudDsgaSsrKQorICAgICAgICAgICAgYXJnTGlzdC5hcHBlbmQo
dG9KUyhhcmd1bWVudHNbaV0pKTsKKworICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RBcnJheShl
eGVjLCBhcmdMaXN0KTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RF
bXB0eUFycmF5KGV4ZWMpOworICAgIH0KKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsK
KyAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihl
eGVjLT5leGNlcHRpb24oKSk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAg
ICAgIHJlc3VsdCA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIHRvUmVmKHJlc3VsdCk7Cit9CisK
K0pTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZURhdGUoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sICBKU1ZhbHVlUmVmICpl
eGNlcHRpb24pCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIGV4ZWMt
Pmdsb2JhbERhdGEoKS5oZWFwLT5yZWdpc3RlclRocmVhZCgpOworCQorICAgIEFyZ0xpc3QgYXJn
TGlzdDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7IGkrKykKKyAg
ICAgICAgYXJnTGlzdC5hcHBlbmQodG9KUyhhcmd1bWVudHNbaV0pKTsJCisJCisJSlNPYmplY3Qg
KnJlc3VsdCA9IGNvbnN0cnVjdERhdGUoZXhlYywgYXJnTGlzdCk7CisgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAgICAgICAqZXhj
ZXB0aW9uID0gdG9SZWYoZXhlYy0+ZXhjZXB0aW9uKCkpOworICAgICAgICBleGVjLT5jbGVhckV4
Y2VwdGlvbigpOworICAgICAgICByZXN1bHQgPSAwOworICAgIH0KKyAgICAKKyAgICByZXR1cm4g
dG9SZWYocmVzdWx0KTsKK30KKworSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRXJyb3IoSlNDb250
ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sICBKU1ZhbHVlUmVmICpleGNlcHRpb24pCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0g
dG9KUyhjdHgpOworICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLT5yZWdpc3RlclRocmVhZCgp
OworCQorICAgIEFyZ0xpc3QgYXJnTGlzdDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFy
Z3VtZW50Q291bnQ7IGkrKykKKyAgICAgICAgYXJnTGlzdC5hcHBlbmQodG9KUyhhcmd1bWVudHNb
aV0pKTsJCisJCisJSlNPYmplY3QgKnJlc3VsdCA9IGNvbnN0cnVjdEVycm9yKGV4ZWMsIGFyZ0xp
c3QpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICBpZiAoZXhjZXB0
aW9uKQorICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGV4ZWMtPmV4Y2VwdGlvbigpKTsK
KyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgcmVzdWx0ID0gMDsKKyAg
ICB9CisgICAgCisgICAgcmV0dXJuIHRvUmVmKHJlc3VsdCk7Cit9CisKK0pTT2JqZWN0UmVmIEpT
T2JqZWN0TWFrZVJlZ0V4cChKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgIEpTVmFsdWVSZWYgKmV4Y2VwdGlvbikKK3sK
KyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LmhlYXAtPnJlZ2lzdGVyVGhyZWFkKCk7CisJCisgICAgQXJnTGlzdCBhcmdMaXN0OworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgaSsrKQorICAgICAgICBhcmdMaXN0
LmFwcGVuZCh0b0pTKGFyZ3VtZW50c1tpXSkpOwkKKwkKKwlKU09iamVjdCAqcmVzdWx0ID0gY29u
c3RydWN0UmVnRXhwKGV4ZWMsIGFyZ0xpc3QpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkgeworICAgICAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRv
UmVmKGV4ZWMtPmV4Y2VwdGlvbigpKTsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsK
KyAgICAgICAgcmVzdWx0ID0gMDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRvUmVmKHJlc3Vs
dCk7Cit9CisKIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm90b3R5cGUoSlNDb250ZXh0UmVmLCBK
U09iamVjdFJlZiBvYmplY3QpCiB7CiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmpl
Y3QpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgJKHJldmlzaW9uIDM1NTQyKQorKysg
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBLZWx2aW4gVyBTaGVybG9jayAo
a3NoZXJsb2NrQGdtYWlsLmNvbSkKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDI5LDYgKzQzMCw1MiBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRnVuY3Rp
CiBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29uc3RydWN0b3IoSlNDb250ZXh0
UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2Fs
bGJhY2sgY2FsbEFzQ29uc3RydWN0b3IpOwogCiAvKiEKKyBAZnVuY3Rpb24KKyBAYWJzdHJhY3Qg
Q3JlYXRlcyBhIEphdmFTY3JpcHQgQXJyYXkgb2JqZWN0LgorIEBwYXJhbSBjdHggVGhlIGV4ZWN1
dGlvbiBjb250ZXh0IHRvIHVzZS4KKyBAcGFyYW0gYXJndW1lbnRDb3VudCBBbiBpbnRlZ2VyIGNv
dW50IG9mIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGluIGFyZ3VtZW50cy4KKyBAcGFyYW0gYXJn
dW1lbnRzIEEgSlNWYWx1ZSBhcnJheSBvZiBkYXRhIHRvIHBvcHVsYXRlIHRoZSBBcnJheSB3aXRo
LiBQYXNzIE5VTEwgaWYgYXJndW1lbnRDb3VudCBpcyAwLgorIEBwYXJhbSBleGNlcHRpb24gQSBw
b2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNlcHRpb24sIGlm
IGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBleGNlcHRpb24u
CisgQHJlc3VsdCBBIEpTT2JqZWN0IHRoYXQgaXMgYW4gQXJyYXkuCisgQGRpc2N1c3Npb24gVGhl
IGJlaGF2aW9yIG9mIHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgZXhhY3RseSBtYXRjaCB0aGUgYmVo
YXZpb3Igb2YgdGhlIGJ1aWx0LWluIEFycmF5IGNvbnN0cnVjdG9yLiBTcGVjaWZpY2FsbHksIGlm
IG9uZSBhcmd1bWVudCAKKyBpcyBzdXBwbGllZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuIGFy
cmF5IHdpdGggb25lIGVsZW1lbnQuCisgKi8KK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVj
dE1ha2VBcnJheShKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiAqZXhjZXB0aW9uKTsgICAgICAgIAor
CisvKiEKKyBAZnVuY3Rpb24KKyBAYWJzdHJhY3QgQ3JlYXRlcyBhIEphdmFTY3JpcHQgRGF0ZSBv
YmplY3QsIGFzIGlmIGJ5IGludm9raW5nIHRoZSBidWlsdC1pbiBEYXRlIGNvbnN0cnVjdG9yLgor
IEBwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KKyBAcGFyYW0gYXJndW1l
bnRDb3VudCBBbiBpbnRlZ2VyIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGluIGFy
Z3VtZW50cy4KKyBAcGFyYW0gYXJndW1lbnRzIEEgSlNWYWx1ZSBhcnJheSBvZiBhcmd1bWVudHMg
dG8gcGFzcyB0byB0aGUgRGF0ZSBDb25zdHJ1Y3Rvci4gUGFzcyBOVUxMIGlmIGFyZ3VtZW50Q291
bnQgaXMgMC4KKyBAcGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4g
d2hpY2ggdG8gc3RvcmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8g
bm90IGNhcmUgdG8gc3RvcmUgYW4gZXhjZXB0aW9uLgorIEByZXN1bHQgQSBKU09iamVjdCB0aGF0
IGlzIGEgRGF0ZS4KKyAqLworSlNfRVhQT1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZURhdGUo
SlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYgKmV4Y2VwdGlvbik7ICAgIAorCisvKiEKKyBAZnVuY3Rp
b24KKyBAYWJzdHJhY3QgQ3JlYXRlcyBhIEphdmFTY3JpcHQgRXJyb3Igb2JqZWN0LCBhcyBpZiBi
eSBpbnZva2luZyB0aGUgYnVpbHQtaW4gRXJyb3IgY29uc3RydWN0b3IuCisgQHBhcmFtIGN0eCBU
aGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorIEBwYXJhbSBhcmd1bWVudENvdW50IEFuIGlu
dGVnZXIgY291bnQgb2YgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgaW4gYXJndW1lbnRzLgorIEBw
YXJhbSBhcmd1bWVudHMgQSBKU1ZhbHVlIGFycmF5IG9mIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRo
ZSBFcnJvciBDb25zdHJ1Y3Rvci4gUGFzcyBOVUxMIGlmIGFyZ3VtZW50Q291bnQgaXMgMC4KKyBA
cGFyYW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3Rv
cmUgYW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8g
c3RvcmUgYW4gZXhjZXB0aW9uLgorIEByZXN1bHQgQSBKU09iamVjdCB0aGF0IGlzIGEgRXJyb3Iu
CisgKi8KK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VFcnJvcihKU0NvbnRleHRS
ZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiAqZXhjZXB0aW9uKTsgICAgCisKKy8qIQorIEBmdW5jdGlvbgorIEBhYnN0
cmFjdCBDcmVhdGVzIGEgSmF2YVNjcmlwdCBSZWdFeHAgb2JqZWN0LCBhcyBpZiBieSBpbnZva2lu
ZyB0aGUgYnVpbHQtaW4gUmVnRXhwIGNvbnN0cnVjdG9yLgorIEBwYXJhbSBjdHggVGhlIGV4ZWN1
dGlvbiBjb250ZXh0IHRvIHVzZS4KKyBAcGFyYW0gYXJndW1lbnRDb3VudCBBbiBpbnRlZ2VyIGNv
dW50IG9mIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGluIGFyZ3VtZW50cy4KKyBAcGFyYW0gYXJn
dW1lbnRzIEEgSlNWYWx1ZSBhcnJheSBvZiBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgUmVnRXhw
IENvbnN0cnVjdG9yLiBQYXNzIE5VTEwgaWYgYXJndW1lbnRDb3VudCBpcyAwLgorIEBwYXJhbSBl
eGNlcHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBl
eGNlcHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBh
biBleGNlcHRpb24uCisgQHJlc3VsdCBBIEpTT2JqZWN0IHRoYXQgaXMgYSBSZWdFeHAuCisgKi8K
K0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VSZWdFeHAoSlNDb250ZXh0UmVmIGN0
eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYgKmV4Y2VwdGlvbik7ICAgIAorCisvKiEKIEBmdW5jdGlvbgogQGFic3RyYWN0IENy
ZWF0ZXMgYSBmdW5jdGlvbiB3aXRoIGEgZ2l2ZW4gc2NyaXB0IGFzIGl0cyBib2R5LgogQHBhcmFt
IGN0eCBUaGUgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgpJbmRleDogSmF2YVNjcmlwdENvcmUv
a2pzL0RhdGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pz
L0RhdGVDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDM1NTQyKQorKysgSmF2YVNjcmlwdENvcmUv
a2pzL0RhdGVDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAg
RGF0ZUNvbnN0cnVjdG9yOjpEYXRlQ29uc3RydWN0b3IoRXhlY1N0YQogfQogCiAvLyBFQ01BIDE1
LjkuMwotc3RhdGljIEpTT2JqZWN0KiBjb25zdHJ1Y3REYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqLCBjb25zdCBBcmdMaXN0JiBhcmdzKQorSlNPYmplY3QqIGNvbnN0cnVjdERhdGUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewogICAgIGludCBudW1BcmdzID0g
YXJncy5zaXplKCk7CiAKQEAgLTEwOCwxMCArMTA4LDE1IEBAIHN0YXRpYyBKU09iamVjdCogY29u
c3RydWN0RGF0ZShFeGVjU3RhdGUKICAgICByZXQtPnNldEludGVybmFsVmFsdWUoanNOdW1iZXIo
ZXhlYywgdGltZUNsaXAodmFsdWUpKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KKyAgICAKK3N0YXRp
YyBKU09iamVjdCogY29uc3RydWN0V2l0aERhdGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICByZXR1cm4gY29uc3RydWN0
RGF0ZShleGVjLCBhcmdzKTsKK30KIAogQ29uc3RydWN0VHlwZSBEYXRlQ29uc3RydWN0b3I6Omdl
dENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKIHsKLSAgICBjb25z
dHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdERhdGU7CisgICAgY29uc3RydWN0
RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RXaXRoRGF0ZUNvbnN0cnVjdG9yOwogICAg
IHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKIH0KIApJbmRleDogSmF2YVNjcmlwdENvcmUva2pz
L0RhdGVDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9EYXRl
Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMzU1NDIpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvRGF0
ZUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDggQEAgbmFtZXNwYWNl
IEtKUyB7CiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsK
ICAgICB9OwogCisgICAgSlNPYmplY3QqIGNvbnN0cnVjdERhdGUoRXhlY1N0YXRlKiwgY29uc3Qg
QXJnTGlzdCYpOworCiB9IC8vIG5hbWVzcGFjZSBLSlMKIAogI2VuZGlmIC8vIERhdGVDb25zdHJ1
Y3Rvcl9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0Vycm9yQ29uc3RydWN0b3IuY3BwCShyZXZp
c2lvbiAzNTU0MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9FcnJvckNvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkVycm9yQ29uc3RydWN0b3IuaCIKIAotI2luY2x1ZGUgIkVycm9ySW5zdGFuY2UuaCIK
ICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKQEAgLTM4LDcgKzM3LDcgQEAgRXJyb3JD
b25zdHJ1Y3Rvcjo6RXJyb3JDb25zdHJ1Y3RvcihFeGVjUwogfQogCiAvLyBFQ01BIDE1LjkuMwot
c3RhdGljIEVycm9ySW5zdGFuY2UqIGNvbnN0cnVjdEVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgQXJnTGlzdCYgYXJncykKK0Vycm9ySW5zdGFuY2UqIGNvbnN0cnVjdEVycm9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAgICBFcnJvckluc3RhbmNlKiBvYmog
PSBuZXcgKGV4ZWMpIEVycm9ySW5zdGFuY2UoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5l
cnJvclByb3RvdHlwZSgpKTsKICAgICBpZiAoIWFyZ3MuYXQoZXhlYywgMCktPmlzVW5kZWZpbmVk
KCkpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRXJyb3JDb25zdHJ1Y3Rvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9FcnJvckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDM1
NTQyKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0Vycm9yQ29uc3RydWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBFcnJvckNvbnN0cnVjdG9yX2gKICNkZWZp
bmUgRXJyb3JDb25zdHJ1Y3Rvcl9oCiAKKyNpbmNsdWRlICJFcnJvckluc3RhbmNlLmgiCiAjaW5j
bHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogCiBuYW1lc3BhY2UgS0pTIHsKQEAgLTM3LDYgKzM4
LDggQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERh
dGEoQ2FsbERhdGEmKTsKICAgICB9OwogCisgICAgRXJyb3JJbnN0YW5jZSogY29uc3RydWN0RXJy
b3IoRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYpOworCiB9IC8vIG5hbWVzcGFjZSBLSlMKIAog
I2VuZGlmIC8vIEVycm9yQ29uc3RydWN0b3JfaApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1Jl
Z0V4cENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvUmVn
RXhwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAzNTU0MikKKysrIEphdmFTY3JpcHRDb3JlL2tq
cy9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OCw3ICsyNjgsNyBA
QCB2b2lkIFJlZ0V4cENvbnN0cnVjdG9yOjpwdXRWYWx1ZVByb3BlcnR5CiB9CiAgIAogLy8gRUNN
QSAxNS4xMC40Ci1zdGF0aWMgSlNPYmplY3QqIGNvbnN0cnVjdFJlZ0V4cChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCitKU09iamVjdCogY29uc3RydWN0UmVnRXhwKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAgICBKU1ZhbHVlKiBhcmcwID0g
YXJncy5hdChleGVjLCAwKTsKICAgICBKU1ZhbHVlKiBhcmcxID0gYXJncy5hdChleGVjLCAxKTsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9SZWdFeHBDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL2tqcy9SZWdFeHBDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAzNTU0
MikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9SZWdFeHBDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC03OCw2ICs3OCw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBPd25QdHI8UmVn
RXhwQ29uc3RydWN0b3JQcml2YXRlPiBkOwogICAgIH07CiAKKyAgICBKU09iamVjdCogY29uc3Ry
dWN0UmVnRXhwKEV4ZWNTdGF0ZSosIGNvbnN0IEFyZ0xpc3QmKTsKKwogfSAvLyBuYW1lc3BhY2Ug
S0pTCiAKICNlbmRpZiAvLyBSZWdFeHBDb25zdHJ1Y3Rvcl9oCg==
</data>
<flag name="review"
          id="10019"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23678</attachid>
            <date>2008-09-22 15:55:26 -0700</date>
            <delta_ts>2008-09-22 15:58:45 -0700</delta_ts>
            <desc>patch</desc>
            <filename>updateAPI.diff</filename>
            <type>text/plain</type>
            <size>15580</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM2Nzgz
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMDgtMDkt
MjIgIEtlbHZpbiBTaGVybG9jayAgPGtzaGVybG9ja0BnbWFpbC5jb20+CisKKyAgICAgICAgVXBk
YXRlZCBhbmQgdHdlYWtlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQnVnIDIwMDIwOiBQcm9wb3NlZCBlbmhh
bmNlbWVudCB0byBKYXZhU2NyaXB0Q29yZSBBUEkKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAyMD4KKworICAgICAgICBBZGQgSlNPYmplY3RNYWtl
QXJyYXksIEpTT2JqZWN0TWFrZURhdGUsIEpTT2JqZWN0TWFrZUVycm9yLCBhbmQgSlNPYmplY3RN
YWtlUmVnRXhwCisgICAgICAgIGZ1bmN0aW9ucyB0byBjcmVhdGUgSmF2YVNjcmlwdCBBcnJheSwg
RGF0ZSwgRXJyb3IsIGFuZCBSZWdFeHAgb2JqZWN0cywgcmVzcGVjdGl2ZWx5LgorCisgICAgICAg
ICogQVBJL0pTT2JqZWN0UmVmLmNwcDogVGhlIGZ1bmN0aW9ucworICAgICAgICAqIEFQSS9KU09i
amVjdFJlZi5oOiBGdW5jdGlvbiBwcm90b3R5cGUgYW5kIGRvY3VtZW50YXRpb24KKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS5leHA6IEFkZGVkIGZ1bmN0aW9ucyB0byBleHBvcnRlZCBmdW5jdGlv
biBsaXN0CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkuYzogQWRkZWQgYmFzaWMgZnVuY3Rp
b25hbGl0eSB0ZXN0cy4KKworICAgICAgICAqIGtqcy9EYXRlQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICBSZXBsYWNlZCBzdGF0aWMgSlNPYmplY3QqIGNvbnN0cnVjdERhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCosIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCisgICAgICAgIHdpdGggSlNPYmpl
Y3QqIGNvbnN0cnVjdERhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKS4K
KyAgICAgICAgQWRkZWQgc3RhdGljIEpTT2JqZWN0KiBjb25zdHJ1Y3RXaXRoRGF0ZUNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBjb25zdCBBcmdMaXN0JiBhcmdzKSBmdW5j
dGlvbgorCisgICAgICAgICoga2pzL0RhdGVDb25zdHJ1Y3Rvci5oOgorICAgICAgICBhZGRlZCBw
cm90b3R5cGUgZm9yIEpTT2JqZWN0KiBjb25zdHJ1Y3REYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgQXJnTGlzdCYgYXJncykKKyAgICAgICAgCisgICAgICAgICoga2pzL0Vycm9yQ29uc3RydWN0
b3IuY3BwOgorCQlyZW1vdmVkIHN0YXRpYyBxdWFsaWZpZXIgZnJvbSBFcnJvckluc3RhbmNlKiBj
b25zdHJ1Y3RFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCisKKyAg
ICAgICAgKiBranMvRXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICBhZGRlZCBwcm90b3R5cGUg
Zm9yIEVycm9ySW5zdGFuY2UqIGNvbnN0cnVjdEVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
QXJnTGlzdCYgYXJncykKKyAgICAgICAgCisgICAgICAgICoga2pzL1JlZ0V4cENvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgcmVtb3ZlZCBzdGF0aWMgcXVhbGlmaWVyIGZyb20gSlNPYmplY3QqIGNv
bnN0cnVjdFJlZ0V4cChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCisKKyAg
ICAgICAgKiBranMvUmVnRXhwQ29uc3RydWN0b3IuaDoKKyAgICAgICAgYWRkZWQgcHJvdG90eXBl
IGZvciBKU09iamVjdCogY29uc3RydWN0UmVnRXhwKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJn
TGlzdCYgYXJncykKKwogMjAwOC0wOS0yMiAgTWF0dCBMaWxlayAgPHdlYmtpdEBtYXR0bGlsZWsu
Y29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZCwgV2luZG93cyBidWlsZCBmaXguCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUuZXhwCShyZXZp
c2lvbiAzNjc4MykKKysrIEphdmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMjYs
OSArMjYsMTMgQEAgX0pTT2JqZWN0SGFzUHJvcGVydHkKIF9KU09iamVjdElzQ29uc3RydWN0b3IK
IF9KU09iamVjdElzRnVuY3Rpb24KIF9KU09iamVjdE1ha2UKK19KU09iamVjdE1ha2VBcnJheQog
X0pTT2JqZWN0TWFrZUNvbnN0cnVjdG9yCitfSlNPYmplY3RNYWtlRGF0ZQorX0pTT2JqZWN0TWFr
ZUVycm9yCiBfSlNPYmplY3RNYWtlRnVuY3Rpb24KIF9KU09iamVjdE1ha2VGdW5jdGlvbldpdGhD
YWxsYmFjaworX0pTT2JqZWN0TWFrZVJlZ0V4cAogX0pTT2JqZWN0U2V0UHJpdmF0ZQogX0pTT2Jq
ZWN0U2V0UHJvcGVydHkKIF9KU09iamVjdFNldFByb3BlcnR5QXRJbmRleApJbmRleDogQVBJL0pT
T2JqZWN0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBBUEkvSlNPYmplY3RSZWYuY3BwCShyZXZpc2lv
biAzNjc4MykKKysrIEFQSS9KU09iamVjdFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBLZWx2aW4gVyBTaGVy
bG9jayAoa3NoZXJsb2NrQGdtYWlsLmNvbSkKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjcsNyArMjgsMTAgQEAKICNpbmNsdWRlICJKU09iamVjdFJlZi5oIgogCiAjaW5jbHVk
ZSAiQVBJQ2FzdC5oIgorI2luY2x1ZGUgIkRhdGVDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkVy
cm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5j
bHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIkpTQ2FsbGJhY2tGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3Qu
aCIKQEAgLTQwLDYgKzQ0LDcgQEAKICNpbmNsdWRlICJKU1ZhbHVlUmVmLmgiCiAjaW5jbHVkZSAi
T2JqZWN0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKKyNpbmNs
dWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgImlkZW50aWZpZXIuaCIKICNpbmNs
dWRlIDx3dGYvUGxhdGZvcm0uaD4KIApAQCAtMTMwLDYgKzEzNSw5NSBAQCBKU09iamVjdFJlZiBK
U09iamVjdE1ha2VGdW5jdGlvbihKU0NvbnRlCiAgICAgcmV0dXJuIHRvUmVmKHJlc3VsdCk7CiB9
CiAKK0pTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUFycmF5KEpTQ29udGV4dFJlZiBjdHgsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCAgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBl
eGVjLT5nbG9iYWxEYXRhKCkuaGVhcC0+cmVnaXN0ZXJUaHJlYWQoKTsKKyAgICBKU0xvY2sgbG9j
ayhleGVjKTsKKworICAgIEpTT2JqZWN0KiByZXN1bHQ7CisgICAgaWYgKGFyZ3VtZW50Q291bnQp
IHsKKyAgICAgICAgQXJnTGlzdCBhcmdMaXN0OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGFyZ3VtZW50Q291bnQ7IGkrKykKKyAgICAgICAgICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlMo
YXJndW1lbnRzW2ldKSk7CisKKyAgICAgICAgcmVzdWx0ID0gY29uc3RydWN0QXJyYXkoZXhlYywg
YXJnTGlzdCk7CisgICAgfSBlbHNlCisgICAgICAgIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJy
YXkoZXhlYyk7CisKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgaWYg
KGV4Y2VwdGlvbikKKyAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihleGVjLT5leGNlcHRp
b24oKSk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIHJlc3VsdCA9
IDA7CisgICAgfQorCisgICAgcmV0dXJuIHRvUmVmKHJlc3VsdCk7Cit9CisKK0pTT2JqZWN0UmVm
IEpTT2JqZWN0TWFrZURhdGUoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sICBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7
CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIGV4ZWMtPmdsb2JhbERhdGEo
KS5oZWFwLT5yZWdpc3RlclRocmVhZCgpOworICAgIEpTTG9jayBsb2NrKGV4ZWMpOworCisgICAg
QXJnTGlzdCBhcmdMaXN0OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3Vu
dDsgaSsrKQorICAgICAgICBhcmdMaXN0LmFwcGVuZCh0b0pTKGFyZ3VtZW50c1tpXSkpOworCisg
ICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdERhdGUoZXhlYywgYXJnTGlzdCk7CisgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIGlmIChleGNlcHRpb24pCisgICAg
ICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoZXhlYy0+ZXhjZXB0aW9uKCkpOworICAgICAgICBl
eGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICByZXN1bHQgPSAwOworICAgIH0KKworICAg
IHJldHVybiB0b1JlZihyZXN1bHQpOworfQorCitKU09iamVjdFJlZiBKU09iamVjdE1ha2VFcnJv
cihKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBFeGVjU3RhdGUq
IGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAtPnJlZ2lzdGVy
VGhyZWFkKCk7CisgICAgSlNMb2NrIGxvY2soZXhlYyk7CisKKyAgICBBcmdMaXN0IGFyZ0xpc3Q7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyBpKyspCisgICAgICAg
IGFyZ0xpc3QuYXBwZW5kKHRvSlMoYXJndW1lbnRzW2ldKSk7CQorCisgICAgSlNPYmplY3QqIHJl
c3VsdCA9IGNvbnN0cnVjdEVycm9yKGV4ZWMsIGFyZ0xpc3QpOworICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkgeworICAgICAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICAgICAgKmV4Y2Vw
dGlvbiA9IHRvUmVmKGV4ZWMtPmV4Y2VwdGlvbigpKTsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNl
cHRpb24oKTsKKyAgICAgICAgcmVzdWx0ID0gMDsKKyAgICB9CisKKyAgICByZXR1cm4gdG9SZWYo
cmVzdWx0KTsKK30KKworSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlUmVnRXhwKEpTQ29udGV4dFJl
ZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCAgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMo
Y3R4KTsKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVhcC0+cmVnaXN0ZXJUaHJlYWQoKTsKKyAg
ICBKU0xvY2sgbG9jayhleGVjKTsKKworICAgIEFyZ0xpc3QgYXJnTGlzdDsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7IGkrKykKKyAgICAgICAgYXJnTGlzdC5hcHBl
bmQodG9KUyhhcmd1bWVudHNbaV0pKTsJCisKKyAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3Ry
dWN0UmVnRXhwKGV4ZWMsIGFyZ0xpc3QpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkg
eworICAgICAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVm
KGV4ZWMtPmV4Y2VwdGlvbigpKTsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAg
ICAgICAgcmVzdWx0ID0gMDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRvUmVmKHJlc3VsdCk7
Cit9CisKIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm90b3R5cGUoSlNDb250ZXh0UmVmLCBKU09i
amVjdFJlZiBvYmplY3QpCiB7CiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3Qp
OwpJbmRleDogQVBJL0pTT2JqZWN0UmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gQVBJL0pTT2JqZWN0UmVm
LmgJKHJldmlzaW9uIDM2NzgzKQorKysgQVBJL0pTT2JqZWN0UmVmLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBLZWx2aW4gVyBT
aGVybG9jayAoa3NoZXJsb2NrQGdtYWlsLmNvbSkKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDI5LDYgKzQzMCw1MiBAQCBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RN
YWtlRnVuY3RpCiBKU19FWFBPUlQgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29uc3RydWN0b3Io
SlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCBKU09iamVjdENhbGxBc0NvbnN0
cnVjdG9yQ2FsbGJhY2sgY2FsbEFzQ29uc3RydWN0b3IpOwogCiAvKiEKKyBAZnVuY3Rpb24KKyBA
YWJzdHJhY3QgQ3JlYXRlcyBhIEphdmFTY3JpcHQgQXJyYXkgb2JqZWN0LgorIEBwYXJhbSBjdHgg
VGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KKyBAcGFyYW0gYXJndW1lbnRDb3VudCBBbiBp
bnRlZ2VyIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGluIGFyZ3VtZW50cy4KKyBA
cGFyYW0gYXJndW1lbnRzIEEgSlNWYWx1ZSBhcnJheSBvZiBkYXRhIHRvIHBvcHVsYXRlIHRoZSBB
cnJheSB3aXRoLiBQYXNzIE5VTEwgaWYgYXJndW1lbnRDb3VudCBpcyAwLgorIEBwYXJhbSBleGNl
cHRpb24gQSBwb2ludGVyIHRvIGEgSlNWYWx1ZVJlZiBpbiB3aGljaCB0byBzdG9yZSBhbiBleGNl
cHRpb24sIGlmIGFueS4gUGFzcyBOVUxMIGlmIHlvdSBkbyBub3QgY2FyZSB0byBzdG9yZSBhbiBl
eGNlcHRpb24uCisgQHJlc3VsdCBBIEpTT2JqZWN0IHRoYXQgaXMgYW4gQXJyYXkuCisgQGRpc2N1
c3Npb24gVGhlIGJlaGF2aW9yIG9mIHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgZXhhY3RseSBtYXRj
aCB0aGUgYmVoYXZpb3Igb2YgdGhlIGJ1aWx0LWluIEFycmF5IGNvbnN0cnVjdG9yLiBTcGVjaWZp
Y2FsbHksIGlmIG9uZSBhcmd1bWVudCAKKyBpcyBzdXBwbGllZCwgdGhpcyBmdW5jdGlvbiByZXR1
cm5zIGFuIGFycmF5IHdpdGggb25lIGVsZW1lbnQuCisgKi8KK0pTX0VYUE9SVCBKU09iamVjdFJl
ZiBKU09iamVjdE1ha2VBcnJheShKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsK
KworLyohCisgQGZ1bmN0aW9uCisgQGFic3RyYWN0IENyZWF0ZXMgYSBKYXZhU2NyaXB0IERhdGUg
b2JqZWN0LCBhcyBpZiBieSBpbnZva2luZyB0aGUgYnVpbHQtaW4gRGF0ZSBjb25zdHJ1Y3Rvci4K
KyBAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCisgQHBhcmFtIGFyZ3Vt
ZW50Q291bnQgQW4gaW50ZWdlciBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBpbiBh
cmd1bWVudHMuCisgQHBhcmFtIGFyZ3VtZW50cyBBIEpTVmFsdWUgYXJyYXkgb2YgYXJndW1lbnRz
IHRvIHBhc3MgdG8gdGhlIERhdGUgQ29uc3RydWN0b3IuIFBhc3MgTlVMTCBpZiBhcmd1bWVudENv
dW50IGlzIDAuCisgQHBhcmFtIGV4Y2VwdGlvbiBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGlu
IHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbiwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRv
IG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2VwdGlvbi4KKyBAcmVzdWx0IEEgSlNPYmplY3QgdGhh
dCBpcyBhIERhdGUuCisgKi8KK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VEYXRl
KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOworCisvKiEKKyBAZnVuY3Rpb24K
KyBAYWJzdHJhY3QgQ3JlYXRlcyBhIEphdmFTY3JpcHQgRXJyb3Igb2JqZWN0LCBhcyBpZiBieSBp
bnZva2luZyB0aGUgYnVpbHQtaW4gRXJyb3IgY29uc3RydWN0b3IuCisgQHBhcmFtIGN0eCBUaGUg
ZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlLgorIEBwYXJhbSBhcmd1bWVudENvdW50IEFuIGludGVn
ZXIgY291bnQgb2YgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgaW4gYXJndW1lbnRzLgorIEBwYXJh
bSBhcmd1bWVudHMgQSBKU1ZhbHVlIGFycmF5IG9mIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBF
cnJvciBDb25zdHJ1Y3Rvci4gUGFzcyBOVUxMIGlmIGFyZ3VtZW50Q291bnQgaXMgMC4KKyBAcGFy
YW0gZXhjZXB0aW9uIEEgcG9pbnRlciB0byBhIEpTVmFsdWVSZWYgaW4gd2hpY2ggdG8gc3RvcmUg
YW4gZXhjZXB0aW9uLCBpZiBhbnkuIFBhc3MgTlVMTCBpZiB5b3UgZG8gbm90IGNhcmUgdG8gc3Rv
cmUgYW4gZXhjZXB0aW9uLgorIEByZXN1bHQgQSBKU09iamVjdCB0aGF0IGlzIGEgRXJyb3IuCisg
Ki8KK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VFcnJvcihKU0NvbnRleHRSZWYg
Y3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKKworLyohCisgQGZ1bmN0aW9uCisgQGFic3RyYWN0IENy
ZWF0ZXMgYSBKYXZhU2NyaXB0IFJlZ0V4cCBvYmplY3QsIGFzIGlmIGJ5IGludm9raW5nIHRoZSBi
dWlsdC1pbiBSZWdFeHAgY29uc3RydWN0b3IuCisgQHBhcmFtIGN0eCBUaGUgZXhlY3V0aW9uIGNv
bnRleHQgdG8gdXNlLgorIEBwYXJhbSBhcmd1bWVudENvdW50IEFuIGludGVnZXIgY291bnQgb2Yg
dGhlIG51bWJlciBvZiBhcmd1bWVudHMgaW4gYXJndW1lbnRzLgorIEBwYXJhbSBhcmd1bWVudHMg
QSBKU1ZhbHVlIGFycmF5IG9mIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBSZWdFeHAgQ29uc3Ry
dWN0b3IuIFBhc3MgTlVMTCBpZiBhcmd1bWVudENvdW50IGlzIDAuCisgQHBhcmFtIGV4Y2VwdGlv
biBBIHBvaW50ZXIgdG8gYSBKU1ZhbHVlUmVmIGluIHdoaWNoIHRvIHN0b3JlIGFuIGV4Y2VwdGlv
biwgaWYgYW55LiBQYXNzIE5VTEwgaWYgeW91IGRvIG5vdCBjYXJlIHRvIHN0b3JlIGFuIGV4Y2Vw
dGlvbi4KKyBAcmVzdWx0IEEgSlNPYmplY3QgdGhhdCBpcyBhIFJlZ0V4cC4KKyAqLworSlNfRVhQ
T1JUIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVJlZ0V4cChKU0NvbnRleHRSZWYgY3R4LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKTsKKworLyohCiBAZnVuY3Rpb24KIEBhYnN0cmFjdCBDcmVhdGVzIGEgZnVu
Y3Rpb24gd2l0aCBhIGdpdmVuIHNjcmlwdCBhcyBpdHMgYm9keS4KIEBwYXJhbSBjdHggVGhlIGV4
ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KSW5kZXg6IEFQSS90ZXN0cy90ZXN0YXBpLmMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gQVBJL3Rlc3RzL3Rlc3RhcGkuYwkocmV2aXNpb24gMzY3ODMpCisrKyBBUEkvdGVz
dHMvdGVzdGFwaS5jCSh3b3JraW5nIGNvcHkpCkBAIC04NzYsNiArODc2LDM5IEBAIGludCBtYWlu
KGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlbGVhc2Uo
bmFtZUFycmF5KTsKICAgICBBU1NFUlQoY291bnQgPT0gMSk7IC8vIGpzQ0ZTdHJpbmcgc2hvdWxk
IG5vdCBiZSBlbnVtZXJhdGVkCiAKKyAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50c0FycmF5VmFsdWVz
W10gPSB7IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIDEwKSwgSlNWYWx1ZU1ha2VOdW1iZXIo
Y29udGV4dCwgMjApIH07CisgICAgbyA9IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIHNpemVv
Zihhcmd1bWVudHNBcnJheVZhbHVlcykgLyBzaXplb2YoSlNWYWx1ZVJlZiksIGFyZ3VtZW50c0Fy
cmF5VmFsdWVzLCBOVUxMKTsKKyAgICBzdHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygibGVuZ3RoIik7CisgICAgdiA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbywg
c3RyaW5nLCBOVUxMKTsKKyAgICBhc3NlcnRFcXVhbHNBc051bWJlcih2LCAyKTsKKyAgICB2ID0g
SlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgbywgMCwgTlVMTCk7CisgICAgYXNz
ZXJ0RXF1YWxzQXNOdW1iZXIodiwgMTApOworICAgIHYgPSBKU09iamVjdEdldFByb3BlcnR5QXRJ
bmRleChjb250ZXh0LCBvLCAxLCBOVUxMKTsKKyAgICBhc3NlcnRFcXVhbHNBc051bWJlcih2LCAy
MCk7CisKKyAgICBvID0gSlNPYmplY3RNYWtlQXJyYXkoY29udGV4dCwgMCwgTlVMTCwgTlVMTCk7
CisgICAgdiA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbywgc3RyaW5nLCBOVUxMKTsK
KyAgICBhc3NlcnRFcXVhbHNBc051bWJlcih2LCAwKTsKKyAgICBKU1N0cmluZ1JlbGVhc2Uoc3Ry
aW5nKTsKKworICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzRGF0ZVZhbHVlc1tdID0geyBKU1ZhbHVl
TWFrZU51bWJlcihjb250ZXh0LCAwKSB9OworICAgIG8gPSBKU09iamVjdE1ha2VEYXRlKGNvbnRl
eHQsIDEsIGFyZ3VtZW50c0RhdGVWYWx1ZXMsIE5VTEwpOworICAgIGFzc2VydEVxdWFsc0FzVVRG
OFN0cmluZyhvLCAiV2VkIERlYyAzMSAxOTY5IDE2OjAwOjAwIEdNVC0wODAwIChQU1QpIik7CisK
KyAgICBzdHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiYW4gZXJyb3IgbWVz
c2FnZSIpOworICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzRXJyb3JWYWx1ZXNbXSA9IHsgSlNWYWx1
ZU1ha2VTdHJpbmcoY29udGV4dCwgc3RyaW5nKSB9OworICAgIG8gPSBKU09iamVjdE1ha2VFcnJv
cihjb250ZXh0LCAxLCBhcmd1bWVudHNFcnJvclZhbHVlcywgTlVMTCk7CisgICAgYXNzZXJ0RXF1
YWxzQXNVVEY4U3RyaW5nKG8sICJFcnJvcjogYW4gZXJyb3IgbWVzc2FnZSIpOworICAgIEpTU3Ry
aW5nUmVsZWFzZShzdHJpbmcpOworCisgICAgc3RyaW5nID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoImZvbyIpOworICAgIEpTU3RyaW5nUmVmIHN0cmluZzIgPSBKU1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiZ2kiKTsKKyAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50c1JlZ0V4cFZh
bHVlc1tdID0geyBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBzdHJpbmcpLCBKU1ZhbHVlTWFr
ZVN0cmluZyhjb250ZXh0LCBzdHJpbmcyKSB9OworICAgIG8gPSBKU09iamVjdE1ha2VSZWdFeHAo
Y29udGV4dCwgMiwgYXJndW1lbnRzUmVnRXhwVmFsdWVzLCBOVUxMKTsKKyAgICBhc3NlcnRFcXVh
bHNBc1VURjhTdHJpbmcobywgIi9mb28vZ2kiKTsKKyAgICBKU1N0cmluZ1JlbGVhc2Uoc3RyaW5n
KTsKKyAgICBKU1N0cmluZ1JlbGVhc2Uoc3RyaW5nMik7CisKICAgICBKU0NsYXNzRGVmaW5pdGlv
biBudWxsRGVmaW5pdGlvbiA9IGtKU0NsYXNzRGVmaW5pdGlvbkVtcHR5OwogICAgIG51bGxEZWZp
bml0aW9uLmF0dHJpYnV0ZXMgPSBrSlNDbGFzc0F0dHJpYnV0ZU5vQXV0b21hdGljUHJvdG90eXBl
OwogICAgIEpTQ2xhc3NSZWYgbnVsbENsYXNzID0gSlNDbGFzc0NyZWF0ZSgmbnVsbERlZmluaXRp
b24pOwpJbmRleDoga2pzL0RhdGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL0Rh
dGVDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDM2NzgzKQorKysga2pzL0RhdGVDb25zdHJ1Y3Rv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgRGF0ZUNvbnN0cnVjdG9yOjpE
YXRlQ29uc3RydWN0b3IoRXhlY1N0YQogfQogCiAvLyBFQ01BIDE1LjkuMwotc3RhdGljIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3REYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBjb25zdCBBcmdM
aXN0JiBhcmdzKQorSlNPYmplY3QqIGNvbnN0cnVjdERhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBBcmdMaXN0JiBhcmdzKQogewogICAgIGludCBudW1BcmdzID0gYXJncy5zaXplKCk7CiAKQEAg
LTExMCwxMCArMTEwLDE1IEBAIHN0YXRpYyBKU09iamVjdCogY29uc3RydWN0RGF0ZShFeGVjU3Rh
dGUKICAgICByZXN1bHQtPnNldEludGVybmFsVmFsdWUoanNOdW1iZXIoZXhlYywgdGltZUNsaXAo
dmFsdWUpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KKyAgICAKK3N0YXRpYyBKU09iamVjdCog
Y29uc3RydWN0V2l0aERhdGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0Kiwg
Y29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICByZXR1cm4gY29uc3RydWN0RGF0ZShleGVjLCBh
cmdzKTsKK30KIAogQ29uc3RydWN0VHlwZSBEYXRlQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERh
dGEoQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKIHsKLSAgICBjb25zdHJ1Y3REYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdERhdGU7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUu
ZnVuY3Rpb24gPSBjb25zdHJ1Y3RXaXRoRGF0ZUNvbnN0cnVjdG9yOwogICAgIHJldHVybiBDb25z
dHJ1Y3RUeXBlSG9zdDsKIH0KIApJbmRleDoga2pzL0RhdGVDb25zdHJ1Y3Rvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGtqcy9EYXRlQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMzY3ODMpCisrKyBranMvRGF0
ZUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsK
ICAgICB9OwogCisgICAgSlNPYmplY3QqIGNvbnN0cnVjdERhdGUoRXhlY1N0YXRlKiwgY29uc3Qg
QXJnTGlzdCYpOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIERhdGVDb25zdHJ1
Y3Rvcl9oCkluZGV4OiBranMvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pz
L0Vycm9yQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAzNjc4MykKKysrIGtqcy9FcnJvckNvbnN0
cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkVycm9yQ29uc3RydWN0b3IuaCIKIAotI2luY2x1ZGUgIkVycm9y
SW5zdGFuY2UuaCIKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKQEAgLTM5LDcgKzM4LDcgQEAgRXJy
b3JDb25zdHJ1Y3Rvcjo6RXJyb3JDb25zdHJ1Y3RvcihFeGVjUwogfQogCiAvLyBFQ01BIDE1Ljku
Mwotc3RhdGljIEVycm9ySW5zdGFuY2UqIGNvbnN0cnVjdEVycm9yKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgQXJnTGlzdCYgYXJncykKK0Vycm9ySW5zdGFuY2UqIGNvbnN0cnVjdEVycm9yKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAgICBFcnJvckluc3RhbmNlKiBv
YmogPSBuZXcgKGV4ZWMpIEVycm9ySW5zdGFuY2UoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LT5lcnJvclN0cnVjdHVyZSgpKTsKICAgICBpZiAoIWFyZ3MuYXQoZXhlYywgMCktPmlzVW5kZWZp
bmVkKCkpCkluZGV4OiBranMvRXJyb3JDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9F
cnJvckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDM2NzgzKQorKysga2pzL0Vycm9yQ29uc3RydWN0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBFcnJvckNvbnN0
cnVjdG9yX2gKICNkZWZpbmUgRXJyb3JDb25zdHJ1Y3Rvcl9oCiAKKyNpbmNsdWRlICJFcnJvcklu
c3RhbmNlLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogCiBuYW1lc3BhY2UgSlND
IHsKQEAgLTM2LDYgKzM3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgQ2Fs
bFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKICAgICB9OwogCisgICAgRXJyb3JJbnN0YW5j
ZSogY29uc3RydWN0RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgQXJnTGlzdCYpOworCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVycm9yQ29uc3RydWN0b3JfaApJbmRleDoga2pzL1Jl
Z0V4cENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvUmVnRXhwQ29uc3RydWN0b3Iu
Y3BwCShyZXZpc2lvbiAzNjc4MykKKysrIGtqcy9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIFJlZ0V4cENvbnN0cnVjdG9yOjpwdXRW
YWx1ZVByb3BlcnR5CiB9CiAgIAogLy8gRUNNQSAxNS4xMC40Ci1zdGF0aWMgSlNPYmplY3QqIGNv
bnN0cnVjdFJlZ0V4cChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCitKU09i
amVjdCogY29uc3RydWN0UmVnRXhwKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJn
cykKIHsKICAgICBKU1ZhbHVlKiBhcmcwID0gYXJncy5hdChleGVjLCAwKTsKICAgICBKU1ZhbHVl
KiBhcmcxID0gYXJncy5hdChleGVjLCAxKTsKSW5kZXg6IGtqcy9SZWdFeHBDb25zdHJ1Y3Rvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIGtqcy9SZWdFeHBDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAzNjc4MykK
KysrIGtqcy9SZWdFeHBDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3Nyw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPd25QdHI8UmVnRXhwQ29uc3RydWN0b3JQcml2
YXRlPiBkOwogICAgIH07CiAKKyAgICBKU09iamVjdCogY29uc3RydWN0UmVnRXhwKEV4ZWNTdGF0
ZSosIGNvbnN0IEFyZ0xpc3QmKTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBS
ZWdFeHBDb25zdHJ1Y3Rvcl9oCg==
</data>
<flag name="review"
          id="10621"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>