<?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>93097</bug_id>
          
          <creation_ts>2012-08-03 05:34:20 -0700</creation_ts>
          <short_desc>[JSC] Remove custom JSBindings for constructArrayBufferView()</short_desc>
          <delta_ts>2012-08-06 05:02:56 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Vineet Chaudhary (vineetc)">code.vineet</reporter>
          <assigned_to name="Vineet Chaudhary (vineetc)">code.vineet</assigned_to>
          <cc>abarth</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>686597</commentid>
    <comment_count>0</comment_count>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-08-03 05:34:20 -0700</bug_when>
    <thetext>Currently below JS*Custom.cpp files have the custom implementation of constructArrayBufferView().
We can can remove these modifying CodeGeneratorJS.pm

JSInt32ArrayCustom.cpp
JSUint8ClampedArrayCustom.cpp
JSUint16ArrayCustom.cpp
JSInt8ArrayCustom.cpp 
JSUint8ArrayCustom.cpp
JSUint32ArrayCustom.cpp
JSInt16ArrayCustom.cpp 
JSFloat64ArrayCustom.cpp
JSFloat32ArrayCustom.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686617</commentid>
    <comment_count>1</comment_count>
      <attachid>156342</attachid>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-08-03 06:01:16 -0700</bug_when>
    <thetext>Created attachment 156342
Patch

Typed Array Specification : http://www.khronos.org/registry/typedarray/specs/latest/#7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686631</commentid>
    <comment_count>2</comment_count>
      <attachid>156342</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-03 06:21:01 -0700</bug_when>
    <thetext>Comment on attachment 156342
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        [JSDOMBinsding] Remove custom JSBindings for constructArrayBufferView()

Typo: [JSDOMBinding]

Nit: We normally use a [port name]. So [JSC] would be better.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:338
&gt; +    return &quot;signed char&quot; if $type eq &quot;Int8Array&quot;;
&gt; +    return &quot;unsigned char&quot; if $type eq &quot;Uint8Array&quot; or $type eq &quot;Uint8ClampedArray&quot;;
&gt; +    return &quot;short&quot; if $type eq &quot;Int16Array&quot;;
&gt; +    return &quot;unsigned short&quot; if $type eq &quot;Uint16Array&quot;;
&gt; +    return &quot;int&quot; if $type eq &quot;Int32Array&quot;;
&gt; +    return &quot;unsigned int&quot; if $type eq &quot;Uint32Array&quot;;
&gt; +    return &quot;float&quot; if $type eq &quot;Float32Array&quot;;
&gt; +    return &quot;double&quot; if $type eq &quot;Float64Array&quot;;

Instead of writing these sad lines, shall we introduce a [TypedArray] IDL attribute? By using TypedArray, we can also remove sad lines in IsTypedArrayType() and GenerateHeader(). I think that it is worth introducing a new IDL attribute. (We want to remove hard-coding from CodeGenerators.)

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3820
&gt; +            push(@$outputArray, &quot;       return JSValue::encode(JSValue());\n&quot;);

Nit: One more space before &apos;return&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686756</commentid>
    <comment_count>3</comment_count>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-08-03 08:11:50 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 156342 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156342&amp;action=review
 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:338
&gt; &gt; +    return &quot;signed char&quot; if $type eq &quot;Int8Array&quot;;
&gt; 
&gt; Instead of writing these sad lines, shall we introduce a [TypedArray] IDL attribute? By using TypedArray, we can also remove sad lines in IsTypedArrayType() and GenerateHeader(). I think that it is worth introducing a new IDL attribute. (We want to remove hard-coding from CodeGenerators.)

Ohh Oke I will check that.
BTW  we can remove similar toV8() calls from respective V8Bindings too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687816</commentid>
    <comment_count>4</comment_count>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-08-06 00:13:47 -0700</bug_when>
    <thetext>(In reply to comment #2)

&gt; Instead of writing these sad lines, shall we introduce a [TypedArray] IDL attribute? By using TypedArray, we can also remove sad lines in IsTypedArrayType() and GenerateHeader(). I think that it is worth introducing a new IDL attribute. (We want to remove hard-coding from CodeGenerators.)

haraken: I tried using [TypedArray] attribute in the Float64Array.idl as below. //I guess you meant like that.

    interface [
        ...
        TypedArray=&quot;double&quot;
    ] Float64Array : ArrayBufferView { ... }

This will solve problems from JSC bindings but as I am planning to remove toV8() call also &apos;TypedArray=&quot;double&quot;&apos; wont be helpful in that case as for v8 it uses
v8::kExternalDoubleArray do you think if any common solution to this.
like :

    interface [
        ...
        JSTypedArray=&quot;double&quot;,
        V8TypedArray=&quot;kExternalDoubleArray&quot;
    ] Float64Array : ArrayBufferView { ... }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687821</commentid>
    <comment_count>5</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-06 00:25:05 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #2)
&gt; haraken: I tried using [TypedArray] attribute in the Float64Array.idl as below. //I guess you meant like that.
&gt; 
&gt;     interface [
&gt;         ...
&gt;         TypedArray=&quot;double&quot;
&gt;     ] Float64Array : ArrayBufferView { ... }
&gt; 
&gt; This will solve problems from JSC bindings but as I am planning to remove toV8() call also &apos;TypedArray=&quot;double&quot;&apos; wont be helpful in that case as for v8 it uses
&gt; v8::kExternalDoubleArray do you think if any common solution to this.
&gt; like :
&gt; 
&gt;     interface [
&gt;         ...
&gt;         JSTypedArray=&quot;double&quot;,
&gt;         V8TypedArray=&quot;kExternalDoubleArray&quot;
&gt;     ] Float64Array : ArrayBufferView { ... }

Isn&apos;t it possible to modify CodeGeneratorV8.pm so that it generates the constant variable name? (i.e. &quot;kExternal&quot; . lcFirst($attrExt-&gt;{&quot;TypedArray&quot;}) . &quot;Array&quot;)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687825</commentid>
    <comment_count>6</comment_count>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-08-06 00:36:15 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #2)
&gt; &gt; haraken: I tried using [TypedArray] attribute in the Float64Array.idl as below. //I guess you meant like that.
&gt; &gt; 
&gt; &gt;     interface [
&gt; &gt;         ...
&gt; &gt;         TypedArray=&quot;double&quot;
&gt; &gt;     ] Float64Array : ArrayBufferView { ... }
&gt; &gt; 
&gt; &gt; This will solve problems from JSC bindings but as I am planning to remove toV8() call also &apos;TypedArray=&quot;double&quot;&apos; wont be helpful in that case as for v8 it uses
&gt; &gt; v8::kExternalDoubleArray do you think if any common solution to this.
&gt; &gt; like :
&gt; &gt; 
&gt; &gt;     interface [
&gt; &gt;         ...
&gt; &gt;         JSTypedArray=&quot;double&quot;,
&gt; &gt;         V8TypedArray=&quot;kExternalDoubleArray&quot;
&gt; &gt;     ] Float64Array : ArrayBufferView { ... }
&gt; 
&gt; Isn&apos;t it possible to modify CodeGeneratorV8.pm so that it generates the constant variable name? (i.e. &quot;kExternal&quot; . lcFirst($attrExt-&gt;{&quot;TypedArray&quot;}) . &quot;Array&quot;)?

Thanks, Surely we can use ucfirst() again hack into for &quot;unsigned int&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687954</commentid>
    <comment_count>7</comment_count>
      <attachid>156644</attachid>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-08-06 03:18:55 -0700</bug_when>
    <thetext>Created attachment 156644
updatedPatch

Updated patch with support of [TypedArray]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687959</commentid>
    <comment_count>8</comment_count>
      <attachid>156644</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-06 03:28:32 -0700</bug_when>
    <thetext>Comment on attachment 156644
updatedPatch

Looks OK. Good refactoring!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687996</commentid>
    <comment_count>9</comment_count>
      <attachid>156644</attachid>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-08-06 04:28:32 -0700</bug_when>
    <thetext>Comment on attachment 156644
updatedPatch

Thanks.. For V8 Custom bindings logged new Bug93248</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688007</commentid>
    <comment_count>10</comment_count>
      <attachid>156644</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-06 04:42:10 -0700</bug_when>
    <thetext>Comment on attachment 156644
updatedPatch

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

&gt; Source/WebCore/bindings/scripts/IDLAttributes.txt:109
&gt; +TypedArray=*

Would you add an explanation to https://trac.webkit.org/wiki/WebKitIDL ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688023</commentid>
    <comment_count>11</comment_count>
      <attachid>156644</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-06 05:02:51 -0700</bug_when>
    <thetext>Comment on attachment 156644
updatedPatch

Clearing flags on attachment: 156644

Committed r124755: &lt;http://trac.webkit.org/changeset/124755&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688025</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-06 05:02:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156342</attachid>
            <date>2012-08-03 06:01:16 -0700</date>
            <delta_ts>2012-08-06 03:18:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>typed_array_001.diff</filename>
            <type>text/plain</type>
            <size>13388</size>
            <attacher name="Vineet Chaudhary (vineetc)">code.vineet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNDYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA4LTAzICBWaW5lZXQg
Q2hhdWRoYXJ5ICA8cmdmNzQ4QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbSlNET01CaW5zZGlu
Z10gUmVtb3ZlIGN1c3RvbSBKU0JpbmRpbmdzIGZvciBjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXco
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMwOTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50
bHkgVHlwZWRBcnJheSBmaWxlcyBoYXZlIHRoZSBjdXN0b20gaW1wbGVtZW50YXRpb24gb2YgY29u
c3RydWN0QXJyYXlCdWZmZXJWaWV3KCkuCisgICAgICAgIFdlIGNhbiBjYW4gcmVtb3ZlIHRoZXNl
IG1vZGlmeWluZyBDb2RlR2VuZXJhdG9ySlMucG0KKworICAgICAgICBUZXN0czogVGVzdFR5cGVk
QXJyYXkuaWRsCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3RvbS5j
cHA6IFJlbW92ZWQgY3VzdG9tIGNhbGwgY29uc3RydWN0QXJyYXlCdWZmZXJWaWV3KCkuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNGbG9hdDY0QXJyYXlDdXN0b20uY3BwOiBEaXR0by4KKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0ludDE2QXJyYXlDdXN0b20uY3BwOiBEaXR0by4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0ludDMyQXJyYXlDdXN0b20uY3BwOiBEaXR0by4KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHA6IERpdHRvLgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTVWludDE2QXJyYXlDdXN0b20uY3BwOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3MvanMv
SlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHA6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOiBNb2RpZmllZCBHZW5lcmF0b3IgY29kZSB0byBn
ZW5lcmF0ZSBiaW5kaW5ncyBmb3IKKyAgICAgICAgY29uc3RydWN0QXJyYXlCdWZmZXJWaWV3Cisg
ICAgICAgIChHZXRUeXBlZEFycmF5Vmlldyk6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9y
RGVmaW5pdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2
NEFycmF5LmNwcDogVGVzdHMgcmVzdWx0LgorICAgICAgICAoV2ViQ29yZTo6SlNGbG9hdDY0QXJy
YXlDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpKU0Zs
b2F0NjRBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0Zsb2F0NjRBcnJheSk6CisKIDIwMTIt
MDgtMDMgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgogCiAg
ICAgICAgIEFkZCBtaXNzaW5nIGluY2x1ZGUgdG8gYnVpbGQgb24gTWFjIE9TIDEwLjgKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3Rv
bS5jcHAJKHJldmlzaW9uIDEyNDU4MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RmxvYXQzMkFycmF5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTQgKzQ4LDQgQEAg
SlNDOjpKU1ZhbHVlIEpTRmxvYXQzMkFycmF5OjpzZXQoSlNDOjpFeAogICAgIHJldHVybiBzZXRX
ZWJHTEFycmF5SGVscGVyPEZsb2F0MzJBcnJheSwgZmxvYXQ+KGV4ZWMsIGltcGwoKSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNGbG9hdDMyQXJyYXlDb25zdHJ1Y3Rvcjo6
Y29uc3RydWN0SlNGbG9hdDMyQXJyYXkoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTRmxvYXQz
MkFycmF5Q29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNGbG9hdDMyQXJyYXlD
b25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKLSAgICBSZWZQdHI8RmxvYXQzMkFycmF5PiBh
cnJheSA9IGNvbnN0cnVjdEFycmF5QnVmZmVyVmlldzxGbG9hdDMyQXJyYXksIGZsb2F0PihleGVj
KTsKLSAgICBpZiAoIWFycmF5LmdldCgpKQotICAgICAgICAvLyBFeGNlcHRpb24gaGFzIGFscmVh
ZHkgYmVlbiB0aHJvd24uCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgp
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywganNDb25z
dHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIGFycmF5LmdldCgpKSkpOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0NjRB
cnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNGbG9hdDY0QXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ1ODIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDE0ICs0OCw0IEBAIEpTQzo6SlNWYWx1ZSBKU0Zsb2F0NjRBcnJheTo6c2V0KEpTQzo6
RXgKICAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxGbG9hdDY0QXJyYXksIGRvdWJsZT4o
ZXhlYywgaW1wbCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0Zsb2F0
NjRBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0Zsb2F0NjRBcnJheShFeGVjU3RhdGUqIGV4
ZWMpCi17Ci0gICAgSlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IGpz
Q2FzdDxKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwotICAgIFJl
ZlB0cjxGbG9hdDY0QXJyYXk+IGFycmF5ID0gY29uc3RydWN0QXJyYXlCdWZmZXJWaWV3PEZsb2F0
NjRBcnJheSwgZG91YmxlPihleGVjKTsKLSAgICBpZiAoIWFycmF5LmdldCgpKQotICAgICAgICAv
LyBFeGNlcHRpb24gaGFzIGFscmVhZHkgYmVlbiB0aHJvd24uCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2Jq
ZWN0KHRvSlMoZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIGFycmF5LmdldCgp
KSkpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbnQ4QXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ1ODIp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ5LDE0ICs0OSw0IEBAIEpTQzo6SlNWYWx1ZSBKU0ludDhBcnJheTo6
c2V0KEpTQzo6RXhlY1MKICAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxJbnQ4QXJyYXks
IHNpZ25lZCBjaGFyPihleGVjLCBpbXBsKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEpTSW50OEFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTSW50OEFycmF5KEV4ZWNT
dGF0ZSogZXhlYykKLXsKLSAgICBKU0ludDhBcnJheUNvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9y
ID0ganNDYXN0PEpTSW50OEFycmF5Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7Ci0gICAg
UmVmUHRyPEludDhBcnJheT4gYXJyYXkgPSBjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXc8SW50OEFy
cmF5LCBzaWduZWQgY2hhcj4oZXhlYyk7Ci0gICAgaWYgKCFhcnJheS5nZXQoKSkKLSAgICAgICAg
Ly8gRXhjZXB0aW9uIGhhcyBhbHJlYWR5IGJlZW4gdGhyb3duLgotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09i
amVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBhcnJheS5nZXQo
KSkpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbnQxNkFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDE2QXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ1
ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDE2QXJyYXlDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OCwxNCArNDgsNCBAQCBKU0M6OkpTVmFsdWUgSlNJbnQxNkFy
cmF5OjpzZXQoSlNDOjpFeGVjCiAgICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8SW50MTZB
cnJheSwgc2hvcnQ+KGV4ZWMsIGltcGwoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSlNJbnQxNkFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTSW50MTZBcnJheShFeGVj
U3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNJbnQxNkFycmF5Q29uc3RydWN0b3IqIGpzQ29uc3RydWN0
b3IgPSBqc0Nhc3Q8SlNJbnQxNkFycmF5Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7Ci0g
ICAgUmVmUHRyPEludDE2QXJyYXk+IGFycmF5ID0gY29uc3RydWN0QXJyYXlCdWZmZXJWaWV3PElu
dDE2QXJyYXksIHNob3J0PihleGVjKTsKLSAgICBpZiAoIWFycmF5LmdldCgpKQotICAgICAgICAv
LyBFeGNlcHRpb24gaGFzIGFscmVhZHkgYmVlbiB0aHJvd24uCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2Jq
ZWN0KHRvSlMoZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIGFycmF5LmdldCgp
KSkpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0ludDMyQXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDEyNDU4
MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDE0ICs0OCw0IEBAIEpTQzo6SlNWYWx1ZSBKU0ludDMyQXJy
YXk6OnNldChKU0M6OkV4ZWMKICAgICByZXR1cm4gc2V0V2ViR0xBcnJheUhlbHBlcjxJbnQzMkFy
cmF5LCBpbnQ+KGV4ZWMsIGltcGwoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSlNJbnQzMkFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTSW50MzJBcnJheShFeGVjU3Rh
dGUqIGV4ZWMpCi17Ci0gICAgSlNJbnQzMkFycmF5Q29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3Ig
PSBqc0Nhc3Q8SlNJbnQzMkFycmF5Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7Ci0gICAg
UmVmUHRyPEludDMyQXJyYXk+IGFycmF5ID0gY29uc3RydWN0QXJyYXlCdWZmZXJWaWV3PEludDMy
QXJyYXksIGludD4oZXhlYyk7Ci0gICAgaWYgKCFhcnJheS5nZXQoKSkKLSAgICAgICAgLy8gRXhj
ZXB0aW9uIGhhcyBhbHJlYWR5IGJlZW4gdGhyb3duLgotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0
b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBhcnJheS5nZXQoKSkpKTsK
LX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ1ODIpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCwxNCArNDgsNCBAQCBKU0M6OkpTVmFsdWUgSlNVaW50OEFycmF5Ojpz
ZXQoSlNDOjpFeGVjCiAgICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8VWludDhBcnJheSwg
dW5zaWduZWQgY2hhcj4oZXhlYywgaW1wbCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU1VpbnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNVaW50OEFycmF5KEV4
ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU1VpbnQ4QXJyYXlDb25zdHJ1Y3RvcioganNDb25zdHJ1
Y3RvciA9IGpzQ2FzdDxKU1VpbnQ4QXJyYXlDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsK
LSAgICBSZWZQdHI8VWludDhBcnJheT4gYXJyYXkgPSBjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXc8
VWludDhBcnJheSwgdW5zaWduZWQgY2hhcj4oZXhlYyk7Ci0gICAgaWYgKCFhcnJheS5nZXQoKSkK
LSAgICAgICAgLy8gRXhjZXB0aW9uIGhhcyBhbHJlYWR5IGJlZW4gdGhyb3duLgotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBh
cnJheS5nZXQoKSkpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1
c3RvbS5jcHAJKHJldmlzaW9uIDEyNDU4MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxNCAr
NDgsNCBAQCBKU0M6OkpTVmFsdWUgSlNVaW50OENsYW1wZWRBcnJheTo6c2V0KEpTCiAgICAgcmV0
dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8VWludDhDbGFtcGVkQXJyYXksIHVuc2lnbmVkIGNoYXI+
KGV4ZWMsIGltcGwoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNVaW50
OENsYW1wZWRBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1VpbnQ4Q2xhbXBlZEFycmF5KEV4
ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU1VpbnQ4Q2xhbXBlZEFycmF5Q29uc3RydWN0b3IqIGpz
Q29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNVaW50OENsYW1wZWRBcnJheUNvbnN0cnVjdG9yKj4oZXhl
Yy0+Y2FsbGVlKCkpOwotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gYXJyYXkgPSBjb25z
dHJ1Y3RBcnJheUJ1ZmZlclZpZXc8VWludDhDbGFtcGVkQXJyYXksIHVuc2lnbmVkIGNoYXI+KGV4
ZWMpOwotICAgIGlmICghYXJyYXkuZ2V0KCkpCi0gICAgICAgIC8vIEV4Y2VwdGlvbiBoYXMgYWxy
ZWFkeSBiZWVuIHRocm93bi4KLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVl
KCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0Nv
bnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgYXJyYXkuZ2V0KCkpKSk7Ci19Ci0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDE2
QXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVWludDE2QXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ1ODIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1VpbnQxNkFycmF5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDgsMTQgKzQ4LDQgQEAgSlNDOjpKU1ZhbHVlIEpTVWludDE2QXJyYXk6OnNldChKU0M6OkV4
ZQogICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPFVpbnQxNkFycmF5LCB1bnNpZ25lZCBz
aG9ydD4oZXhlYywgaW1wbCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U1VpbnQxNkFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVWludDE2QXJyYXkoRXhlY1N0YXRl
KiBleGVjKQotewotICAgIEpTVWludDE2QXJyYXlDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9
IGpzQ2FzdDxKU1VpbnQxNkFycmF5Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7Ci0gICAg
UmVmUHRyPFVpbnQxNkFycmF5PiBhcnJheSA9IGNvbnN0cnVjdEFycmF5QnVmZmVyVmlldzxVaW50
MTZBcnJheSwgdW5zaWduZWQgc2hvcnQ+KGV4ZWMpOwotICAgIGlmICghYXJyYXkuZ2V0KCkpCi0g
ICAgICAgIC8vIEV4Y2VwdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHRocm93bi4KLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgYXJy
YXkuZ2V0KCkpKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwCShyZXZp
c2lvbiAxMjQ1ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTQgKzQ4LDQgQEAgSlNDOjpKU1ZhbHVl
IEpTVWludDMyQXJyYXk6OnNldChKU0M6OkV4ZQogICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVs
cGVyPFVpbnQzMkFycmF5LCB1bnNpZ25lZCBpbnQ+KGV4ZWMsIGltcGwoKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNVaW50MzJBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1
Y3RKU1VpbnQzMkFycmF5KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU1VpbnQzMkFycmF5Q29u
c3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNVaW50MzJBcnJheUNvbnN0cnVjdG9y
Kj4oZXhlYy0+Y2FsbGVlKCkpOwotICAgIFJlZlB0cjxVaW50MzJBcnJheT4gYXJyYXkgPSBjb25z
dHJ1Y3RBcnJheUJ1ZmZlclZpZXc8VWludDMyQXJyYXksIHVuc2lnbmVkIGludD4oZXhlYyk7Ci0g
ICAgaWYgKCFhcnJheS5nZXQoKSkKLSAgICAgICAgLy8gRXhjZXB0aW9uIGhhcyBhbHJlYWR5IGJl
ZW4gdGhyb3duLgotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0
b3ItPmdsb2JhbE9iamVjdCgpLCBhcnJheS5nZXQoKSkpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDEyNDU4MikKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUs
NiArMzI1LDIxIEBAIHN1YiBJc1R5cGVkQXJyYXlUeXBlCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N1
YiBHZXRUeXBlZEFycmF5VmlldworeworICAgIG15ICR0eXBlID0gc2hpZnQ7CisgICAgcmV0dXJu
ICJzaWduZWQgY2hhciIgaWYgJHR5cGUgZXEgIkludDhBcnJheSI7CisgICAgcmV0dXJuICJ1bnNp
Z25lZCBjaGFyIiBpZiAkdHlwZSBlcSAiVWludDhBcnJheSIgb3IgJHR5cGUgZXEgIlVpbnQ4Q2xh
bXBlZEFycmF5IjsKKyAgICByZXR1cm4gInNob3J0IiBpZiAkdHlwZSBlcSAiSW50MTZBcnJheSI7
CisgICAgcmV0dXJuICJ1bnNpZ25lZCBzaG9ydCIgaWYgJHR5cGUgZXEgIlVpbnQxNkFycmF5IjsK
KyAgICByZXR1cm4gImludCIgaWYgJHR5cGUgZXEgIkludDMyQXJyYXkiOworICAgIHJldHVybiAi
dW5zaWduZWQgaW50IiBpZiAkdHlwZSBlcSAiVWludDMyQXJyYXkiOworICAgIHJldHVybiAiZmxv
YXQiIGlmICR0eXBlIGVxICJGbG9hdDMyQXJyYXkiOworICAgIHJldHVybiAiZG91YmxlIiBpZiAk
dHlwZSBlcSAiRmxvYXQ2NEFycmF5IjsKKworICAgIHJldHVybiAiIjsKK30KKwogc3ViIEFkZFR5
cGVkZWZGb3JTY3JpcHRQcm9maWxlVHlwZQogewogICAgIG15ICR0eXBlID0gc2hpZnQ7CkBAIC0z
NzkxLDYgKzM4MDYsMjEgQEAgRU5ECiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0O1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJ9XG5cbiIpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKEdldFR5cGVkQXJy
YXlWaWV3KCRpbnRlcmZhY2VOYW1lKSkKKyAgICAgICAgeworICAgICAgICAgICAgJGltcGxJbmNs
dWRlc3siSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCJ9ID0gMTsKKyAgICAgICAgICAgIG15ICR2
aWV3VHlwZSA9IEdldFR5cGVkQXJyYXlWaWV3KCRpbnRlcmZhY2VOYW1lKTsKKyAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtjb25z
dHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdCR7Y2xhc3NOYW1lfShFeGVjU3RhdGUqIGV4ZWMp
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOworICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICR7Y29uc3RydWN0b3JDbGFzc05hbWV9KiBqc0Nv
bnN0cnVjdG9yID0ganNDYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4oZXhlYy0+Y2FsbGVl
KCkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPCRp
bnRlcmZhY2VOYW1lPiBhcnJheSA9IGNvbnN0cnVjdEFycmF5QnVmZmVyVmlldzwkaW50ZXJmYWNl
TmFtZSwgJHZpZXdUeXBlPihleGVjKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIGlmICghYXJyYXkuZ2V0KCkpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgLy8gRXhjZXB0aW9uIGhhcyBhbHJlYWR5IGJlZW4gdGhyb3duLlxu
Iik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1ZhbHVlKCkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29u
c3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBhcnJheS5nZXQoKSkpKTtcbiIpOworICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFy
cmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCShyZXZpc2lvbiAxMjQ1ODIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSlNGbG9hdDY0QXJyYXkuaCIKIAog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlld0hl
bHBlci5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRmxvYXQzMkFy
cmF5LmgiCiAjaW5jbHVkZSAiSlNJbnQzMkFycmF5LmgiCkBAIC04NCw2ICs4NSwxNiBAQCBDb25z
dHJ1Y3RUeXBlIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3I6CiAgICAgcmV0dXJuIENvbnN0cnVj
dFR5cGVIb3N0OwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTRmxvYXQ2NEFy
cmF5Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTRmxvYXQ2NEFycmF5KEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICBKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0ganNDYXN0
PEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CisgICAgUmVmUHRy
PEZsb2F0NjRBcnJheT4gYXJyYXkgPSBjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXc8RmxvYXQ2NEFy
cmF5LCBkb3VibGU+KGV4ZWMpOworICAgIGlmICghYXJyYXkuZ2V0KCkpCisgICAgICAgIC8vIEV4
Y2VwdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHRocm93bi4KKyAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0
b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBhcnJheS5nZXQoKSkpKTsK
K30KKwogLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU0Zsb2F0NjRBcnJheVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQo=
</data>
<flag name="review"
          id="166017"
          type_id="1"
          status="-"
          setter="haraken"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156644</attachid>
            <date>2012-08-06 03:18:55 -0700</date>
            <delta_ts>2012-08-06 05:02:51 -0700</delta_ts>
            <desc>updatedPatch</desc>
            <filename>typed_array_002.diff</filename>
            <type>text/plain</type>
            <size>14492</size>
            <attacher name="Vineet Chaudhary (vineetc)">code.vineet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNDc0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA4LTA2ICBWaW5lZXQg
Q2hhdWRoYXJ5ICA8cmdmNzQ4QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbSlNDXSBSZW1vdmUg
Y3VzdG9tIEpTQmluZGluZ3MgZm9yIGNvbnN0cnVjdEFycmF5QnVmZmVyVmlldygpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzA5NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSBUeXBlZEFy
cmF5IGZpbGVzIGhhdmUgdGhlIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBvZiBjb25zdHJ1Y3RBcnJh
eUJ1ZmZlclZpZXcoKS4KKyAgICAgICAgV2UgY2FuIGNhbiByZW1vdmUgdGhlc2UgbW9kaWZ5aW5n
IENvZGVHZW5lcmF0b3JKUy5wbQorCisgICAgICAgIFRlc3RzOiBUZXN0VHlwZWRBcnJheS5pZGwK
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcDogUmVtb3Zl
ZCBjdXN0b20gY2FsbCBjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXcoKS4KKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHA6IERpdHRvLgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSW50MTZBcnJheUN1c3RvbS5jcHA6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSW50MzJBcnJheUN1c3RvbS5jcHA6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTVWludDE2QXJyYXlDdXN0b20uY3BwOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1VpbnQzMkFycmF5Q3VzdG9tLmNwcDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG06IE1vZGlmaWVkIEdlbmVyYXRvciBjb2RlIHRvIGdlbmVyYXRl
IGJpbmRpbmdzIGZvcgorICAgICAgICBjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXcoKQorICAgICAg
ICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvSURMQXR0cmlidXRlcy50eHQ6IEFkZGVkIFtUeXBlZEFycmF5XSBhdHRyaWJ1dGUuCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcDogVGVz
dHMgcmVzdWx0LgorICAgICAgICAoV2ViQ29yZTo6SlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3Rvcjo6
Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpKU0Zsb2F0NjRBcnJheUNvbnN0
cnVjdG9yOjpjb25zdHJ1Y3RKU0Zsb2F0NjRBcnJheSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RUeXBlZEFycmF5LmlkbDogVGVzdC4KKyAgICAgICAgKiBodG1sL2NhbnZh
cy9GbG9hdDMyQXJyYXkuaWRsOiBVc2luZyBbVHlwZWRBcnJheV0uCisgICAgICAgICogaHRtbC9j
YW52YXMvRmxvYXQ2NEFycmF5LmlkbDogRGl0dG8uCisgICAgICAgICogaHRtbC9jYW52YXMvSW50
MTZBcnJheS5pZGw6IERpdHRvLgorICAgICAgICAqIGh0bWwvY2FudmFzL0ludDMyQXJyYXkuaWRs
OiBEaXR0by4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9VaW50MTZBcnJheS5pZGw6IERpdHRvLgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1VpbnQzMkFycmF5LmlkbDogRGl0dG8uCisKIDIwMTItMDgt
MDYgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQ6IFdlYiBJbnNwZWN0b3I6IHNpbmdsZSBsaW5lIHRlc3QgZml4IGZvciByMTI0NzQ0
LgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGbG9hdDMyQXJyYXlDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQzMkFy
cmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gMTI0NzMyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNGbG9hdDMyQXJyYXlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxNCAr
NDgsNCBAQCBKU0M6OkpTVmFsdWUgSlNGbG9hdDMyQXJyYXk6OnNldChKU0M6OkV4CiAgICAgcmV0
dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8RmxvYXQzMkFycmF5LCBmbG9hdD4oZXhlYywgaW1wbCgp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0Zsb2F0MzJBcnJheUNvbnN0
cnVjdG9yOjpjb25zdHJ1Y3RKU0Zsb2F0MzJBcnJheShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAg
SlNGbG9hdDMyQXJyYXlDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU0Zsb2F0
MzJBcnJheUNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwotICAgIFJlZlB0cjxGbG9hdDMy
QXJyYXk+IGFycmF5ID0gY29uc3RydWN0QXJyYXlCdWZmZXJWaWV3PEZsb2F0MzJBcnJheSwgZmxv
YXQ+KGV4ZWMpOwotICAgIGlmICghYXJyYXkuZ2V0KCkpCi0gICAgICAgIC8vIEV4Y2VwdGlvbiBo
YXMgYWxyZWFkeSBiZWVuIHRocm93bi4KLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVj
LCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgYXJyYXkuZ2V0KCkpKSk7Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RmxvYXQ2NEFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAJKHJldmlzaW9uIDEyNDczMikKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxvYXQ2NEFycmF5Q3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDgsMTQgKzQ4LDQgQEAgSlNDOjpKU1ZhbHVlIEpTRmxvYXQ2NEFycmF5Ojpz
ZXQoSlNDOjpFeAogICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPEZsb2F0NjRBcnJheSwg
ZG91YmxlPihleGVjLCBpbXBsKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTRmxvYXQ2NEFycmF5KEV4ZWNT
dGF0ZSogZXhlYykKLXsKLSAgICBKU0Zsb2F0NjRBcnJheUNvbnN0cnVjdG9yKiBqc0NvbnN0cnVj
dG9yID0ganNDYXN0PEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7
Ci0gICAgUmVmUHRyPEZsb2F0NjRBcnJheT4gYXJyYXkgPSBjb25zdHJ1Y3RBcnJheUJ1ZmZlclZp
ZXc8RmxvYXQ2NEFycmF5LCBkb3VibGU+KGV4ZWMpOwotICAgIGlmICghYXJyYXkuZ2V0KCkpCi0g
ICAgICAgIC8vIEV4Y2VwdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHRocm93bi4KLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgYXJy
YXkuZ2V0KCkpKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MTZBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQxNkFycmF5Q3VzdG9tLmNwcAkocmV2aXNp
b24gMTI0NzMyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQxNkFycmF5Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTQgKzQ4LDQgQEAgSlNDOjpKU1ZhbHVlIEpT
SW50MTZBcnJheTo6c2V0KEpTQzo6RXhlYwogICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVy
PEludDE2QXJyYXksIHNob3J0PihleGVjLCBpbXBsKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEpTSW50MTZBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0ludDE2QXJy
YXkoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTSW50MTZBcnJheUNvbnN0cnVjdG9yKiBqc0Nv
bnN0cnVjdG9yID0ganNDYXN0PEpTSW50MTZBcnJheUNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVl
KCkpOwotICAgIFJlZlB0cjxJbnQxNkFycmF5PiBhcnJheSA9IGNvbnN0cnVjdEFycmF5QnVmZmVy
VmlldzxJbnQxNkFycmF5LCBzaG9ydD4oZXhlYyk7Ci0gICAgaWYgKCFhcnJheS5nZXQoKSkKLSAg
ICAgICAgLy8gRXhjZXB0aW9uIGhhcyBhbHJlYWR5IGJlZW4gdGhyb3duLgotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBhcnJh
eS5nZXQoKSkpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbnQzMkFycmF5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDMyQXJyYXlDdXN0b20uY3BwCShyZXZpc2lv
biAxMjQ3MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDMyQXJyYXlDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxNCArNDgsNCBAQCBKU0M6OkpTVmFsdWUgSlNJ
bnQzMkFycmF5OjpzZXQoSlNDOjpFeGVjCiAgICAgcmV0dXJuIHNldFdlYkdMQXJyYXlIZWxwZXI8
SW50MzJBcnJheSwgaW50PihleGVjLCBpbXBsKCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTSW50MzJBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0ludDMyQXJyYXko
RXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTSW50MzJBcnJheUNvbnN0cnVjdG9yKiBqc0NvbnN0
cnVjdG9yID0ganNDYXN0PEpTSW50MzJBcnJheUNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkp
OwotICAgIFJlZlB0cjxJbnQzMkFycmF5PiBhcnJheSA9IGNvbnN0cnVjdEFycmF5QnVmZmVyVmll
dzxJbnQzMkFycmF5LCBpbnQ+KGV4ZWMpOwotICAgIGlmICghYXJyYXkuZ2V0KCkpCi0gICAgICAg
IC8vIEV4Y2VwdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHRocm93bi4KLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNP
YmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgYXJyYXkuZ2V0
KCkpKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAx
MjQ3MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQxNkFycmF5Q3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTQgKzQ4LDQgQEAgSlNDOjpKU1ZhbHVlIEpTVWlu
dDE2QXJyYXk6OnNldChKU0M6OkV4ZQogICAgIHJldHVybiBzZXRXZWJHTEFycmF5SGVscGVyPFVp
bnQxNkFycmF5LCB1bnNpZ25lZCBzaG9ydD4oZXhlYywgaW1wbCgpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1VpbnQxNkFycmF5Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpT
VWludDE2QXJyYXkoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTVWludDE2QXJyYXlDb25zdHJ1
Y3RvcioganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1VpbnQxNkFycmF5Q29uc3RydWN0b3IqPihl
eGVjLT5jYWxsZWUoKSk7Ci0gICAgUmVmUHRyPFVpbnQxNkFycmF5PiBhcnJheSA9IGNvbnN0cnVj
dEFycmF5QnVmZmVyVmlldzxVaW50MTZBcnJheSwgdW5zaWduZWQgc2hvcnQ+KGV4ZWMpOwotICAg
IGlmICghYXJyYXkuZ2V0KCkpCi0gICAgICAgIC8vIEV4Y2VwdGlvbiBoYXMgYWxyZWFkeSBiZWVu
IHRocm93bi4KLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9y
LT5nbG9iYWxPYmplY3QoKSwgYXJyYXkuZ2V0KCkpKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMy
QXJyYXlDdXN0b20uY3BwCShyZXZpc2lvbiAxMjQ3MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTQg
KzQ4LDQgQEAgSlNDOjpKU1ZhbHVlIEpTVWludDMyQXJyYXk6OnNldChKU0M6OkV4ZQogICAgIHJl
dHVybiBzZXRXZWJHTEFycmF5SGVscGVyPFVpbnQzMkFycmF5LCB1bnNpZ25lZCBpbnQ+KGV4ZWMs
IGltcGwoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNVaW50MzJBcnJh
eUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1VpbnQzMkFycmF5KEV4ZWNTdGF0ZSogZXhlYykKLXsK
LSAgICBKU1VpbnQzMkFycmF5Q29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNV
aW50MzJBcnJheUNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwotICAgIFJlZlB0cjxVaW50
MzJBcnJheT4gYXJyYXkgPSBjb25zdHJ1Y3RBcnJheUJ1ZmZlclZpZXc8VWludDMyQXJyYXksIHVu
c2lnbmVkIGludD4oZXhlYyk7Ci0gICAgaWYgKCFhcnJheS5nZXQoKSkKLSAgICAgICAgLy8gRXhj
ZXB0aW9uIGhhcyBhbHJlYWR5IGJlZW4gdGhyb3duLgotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0
b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBhcnJheS5nZXQoKSkpKTsK
LX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDEyNDczMikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3
b3JraW5nIGNvcHkpCkBAIC0zNzkxLDYgKzM3OTEsMjAgQEAgRU5ECiAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0O1xuIik7CiAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlR5cGVkQXJyYXkifSkgewor
ICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCJ9ID0g
MTsKKyAgICAgICAgICAgIG15ICR2aWV3VHlwZSA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IlR5cGVkQXJyYXkifTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0
cnVjdCR7Y2xhc3NOYW1lfShFeGVjU3RhdGUqIGV4ZWMpXG4iKTsKKyAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIntcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICR7Y29uc3RydWN0b3JDbGFzc05hbWV9KiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PCR7Y29u
c3RydWN0b3JDbGFzc05hbWV9Kj4oZXhlYy0+Y2FsbGVlKCkpO1xuIik7CisgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPCRpbnRlcmZhY2VOYW1lPiBhcnJheSA9IGNv
bnN0cnVjdEFycmF5QnVmZmVyVmlldzwkaW50ZXJmYWNlTmFtZSwgJHZpZXdUeXBlPihleGVjKTtc
biIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghYXJyYXkuZ2V0
KCkpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgLy8gRXhj
ZXB0aW9uIGhhcyBhbHJlYWR5IGJlZW4gdGhyb3duLlxuIik7CisgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTtc
biIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3Qo
KSwgYXJyYXkuZ2V0KCkpKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
In1cblxuIik7CisgICAgICAgIH0KICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAkocmV2aXNpb24gMTI0NzMy
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw3IEBAIFRyYW5zZmVyTGlzdD0qCiBUcmVhdE51
bGxBcz1OdWxsU3RyaW5nCiBUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPUZhbHNlfE51bGx8VW5k
ZWZpbmVkCiBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmcKK1R5cGVkQXJyYXk9KgogVVJMCiBW
OEN1c3RvbQogVjhDdXN0b21Db25zdHJ1Y3RvcgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RUeXBlZEFycmF5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5cGVkQXJyYXkuaWRsCShyZXZpc2lv
biAxMjQ3MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5
cGVkQXJyYXkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw4IEBAIG1vZHVsZSBodG1s
IHsKICAgICAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAogICAgICAgICBKU05vU3RhdGlj
VGFibGVzLAogICAgICAgICBDdXN0b21Ub0pTT2JqZWN0LAotICAgICAgICBEb05vdENoZWNrQ29u
c3RhbnRzCisgICAgICAgIERvTm90Q2hlY2tDb25zdGFudHMsCisgICAgICAgIFR5cGVkQXJyYXk9
ZG91YmxlCiAgICAgXSBGbG9hdDY0QXJyYXkgOiBBcnJheUJ1ZmZlclZpZXcgewogICAgICAgICBJ
bnQzMkFycmF5IGZvbyhpbiBGbG9hdDMyQXJyYXkgYXJyYXkpOwogICAgIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zs
b2F0NjRBcnJheS5jcHAJKHJldmlzaW9uIDEyNDczMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJKU0Zsb2F0NjRBcnJheS5oIgogCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgiCiAj
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNGbG9hdDMyQXJyYXkuaCIKICNp
bmNsdWRlICJKU0ludDMyQXJyYXkuaCIKQEAgLTg0LDYgKzg1LDE2IEBAIENvbnN0cnVjdFR5cGUg
SlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3RvcjoKICAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7
CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNGbG9hdDY0QXJyYXlDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0SlNGbG9hdDY0QXJyYXkoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpT
RmxvYXQ2NEFycmF5Q29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNGbG9hdDY0
QXJyYXlDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBSZWZQdHI8RmxvYXQ2NEFy
cmF5PiBhcnJheSA9IGNvbnN0cnVjdEFycmF5QnVmZmVyVmlldzxGbG9hdDY0QXJyYXksIGRvdWJs
ZT4oZXhlYyk7CisgICAgaWYgKCFhcnJheS5nZXQoKSkKKyAgICAgICAgLy8gRXhjZXB0aW9uIGhh
cyBhbHJlYWR5IGJlZW4gdGhyb3duLgorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMs
IGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBhcnJheS5nZXQoKSkpKTsKK30KKwogLyog
SGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU0Zsb2F0NjRBcnJheVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvRmxvYXQzMkFycmF5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDMyQXJyYXkuaWRsCShyZXZpc2lvbiAxMjQ3MzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDMyQXJyYXkuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw3ICszMyw4IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgSlNHZW5lcmF0ZVRv
TmF0aXZlT2JqZWN0LAogICAgICAgICBKU05vU3RhdGljVGFibGVzLAogICAgICAgICBDdXN0b21U
b0pTT2JqZWN0LAotICAgICAgICBEb05vdENoZWNrQ29uc3RhbnRzCisgICAgICAgIERvTm90Q2hl
Y2tDb25zdGFudHMsCisgICAgICAgIFR5cGVkQXJyYXk9ZmxvYXQKICAgICBdIEZsb2F0MzJBcnJh
eSA6IEFycmF5QnVmZmVyVmlldyB7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQllURVNf
UEVSX0VMRU1FTlQgPSA0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9GbG9h
dDY0QXJyYXkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Zs
b2F0NjRBcnJheS5pZGwJKHJldmlzaW9uIDEyNDczMikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0Zsb2F0NjRBcnJheS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDggQEAg
bW9kdWxlIGh0bWwgewogICAgICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCiAgICAgICAg
IEpTTm9TdGF0aWNUYWJsZXMsCiAgICAgICAgIEN1c3RvbVRvSlNPYmplY3QsCi0gICAgICAgIERv
Tm90Q2hlY2tDb25zdGFudHMKKyAgICAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKKyAgICAgICAg
VHlwZWRBcnJheT1kb3VibGUKICAgICBdIEZsb2F0NjRBcnJheSA6IEFycmF5QnVmZmVyVmlldyB7
CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgQllURVNfUEVSX0VMRU1FTlQgPSA4OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQxNkFycmF5LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQxNkFycmF5LmlkbAkocmV2aXNpb24g
MTI0NzMyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MTZBcnJheS5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDggQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBKU0dl
bmVyYXRlVG9OYXRpdmVPYmplY3QsCiAgICAgICAgIEpTTm9TdGF0aWNUYWJsZXMsCiAgICAgICAg
IEN1c3RvbVRvSlNPYmplY3QsCi0gICAgICAgIERvTm90Q2hlY2tDb25zdGFudHMKKyAgICAgICAg
RG9Ob3RDaGVja0NvbnN0YW50cywKKyAgICAgICAgVHlwZWRBcnJheT1zaG9ydAogICAgIF0gSW50
MTZBcnJheSA6IEFycmF5QnVmZmVyVmlldyB7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcg
QllURVNfUEVSX0VMRU1FTlQgPSAyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9JbnQzMkFycmF5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9JbnQzMkFycmF5LmlkbAkocmV2aXNpb24gMTI0NzMyKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvSW50MzJBcnJheS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDggQEAg
bW9kdWxlIGh0bWwgewogICAgICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCiAgICAgICAg
IEpTTm9TdGF0aWNUYWJsZXMsCiAgICAgICAgIEN1c3RvbVRvSlNPYmplY3QsCi0gICAgICAgIERv
Tm90Q2hlY2tDb25zdGFudHMKKyAgICAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKKyAgICAgICAg
VHlwZWRBcnJheT1pbnQKICAgICBdIEludDMyQXJyYXkgOiBBcnJheUJ1ZmZlclZpZXcgewogICAg
ICAgICBjb25zdCB1bnNpZ25lZCBsb25nIEJZVEVTX1BFUl9FTEVNRU5UID0gNDsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDE2QXJyYXkuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQxNkFycmF5LmlkbAkocmV2aXNpb24gMTI0
NzMyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDE2QXJyYXkuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw3ICszMyw4IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgSlNHZW5l
cmF0ZVRvTmF0aXZlT2JqZWN0LAogICAgICAgICBKU05vU3RhdGljVGFibGVzLAogICAgICAgICBD
dXN0b21Ub0pTT2JqZWN0LAotICAgICAgICBEb05vdENoZWNrQ29uc3RhbnRzCisgICAgICAgIERv
Tm90Q2hlY2tDb25zdGFudHMsCisgICAgICAgIFR5cGVkQXJyYXk9dW5zaWduZWQgc2hvcnQKICAg
ICBdIFVpbnQxNkFycmF5IDogQXJyYXlCdWZmZXJWaWV3IHsKICAgICAgICAgY29uc3QgdW5zaWdu
ZWQgbG9uZyBCWVRFU19QRVJfRUxFTUVOVCA9IDI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1VpbnQzMkFycmF5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwJKHJldmlzaW9uIDEyNDczMikKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQzMkFycmF5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NyArMzMsOCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVj
dCwKICAgICAgICAgSlNOb1N0YXRpY1RhYmxlcywKICAgICAgICAgQ3VzdG9tVG9KU09iamVjdCwK
LSAgICAgICAgRG9Ob3RDaGVja0NvbnN0YW50cworICAgICAgICBEb05vdENoZWNrQ29uc3RhbnRz
LAorICAgICAgICBUeXBlZEFycmF5PXVuc2lnbmVkIGludAogICAgIF0gVWludDMyQXJyYXkgOiBB
cnJheUJ1ZmZlclZpZXcgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIEJZVEVTX1BFUl9F
TEVNRU5UID0gNDsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>