<?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>20664</bug_id>
          
          <creation_ts>2008-09-05 07:14:15 -0700</creation_ts>
          <short_desc>[GTK] File names are not always encodable in UTF-8</short_desc>
          <delta_ts>2009-01-12 15:33:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Marco Barisione">marco.barisione</reporter>
          <assigned_to name="Marco Barisione">marco.barisione</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>90263</commentid>
    <comment_count>0</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-09-05 07:14:15 -0700</bug_when>
    <thetext>On linux file names should be considered just raw strings as it&apos;s possible to have just junk non-encodable in UTF-8 inside them. This means that file names cannot be just stored as-is inside a String. Note that using g_filename_to_utf8 is not a possible solution as it&apos;s only meant to convert file names for displaying them in the UI.

A possible solution would be to switch from String to CString for file names but this would mean losing the ability to use all the nice String methods on them and making the generic code and the code for other ports more complex.

Another possible solution is to escape invalid characters before storing them in a String and unescaping them before passing the string to functions expecting a raw file name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90264</commentid>
    <comment_count>1</comment_count>
      <attachid>23191</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-09-05 07:25:52 -0700</bug_when>
    <thetext>Created attachment 23191
Add String::toFilename and String::fromFilename

1. Add String::fromFilename static method (only for the GTK port) that creates an escape string from a file name.
2. Add String::toFilename to unescape a string create with String::fromFilename.
3. Add some debugging code to try to catch uses of String::toFilename on Strings not created through String::fromFilename.
4. Fix the functions in FileSystemGtk.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90265</commentid>
    <comment_count>2</comment_count>
      <attachid>23192</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-09-05 07:30:58 -0700</bug_when>
    <thetext>Created attachment 23192
Modified version of attachment #23170 to the String::to/fromFilename</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90266</commentid>
    <comment_count>3</comment_count>
      <attachid>23193</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-09-05 07:38:40 -0700</bug_when>
    <thetext>Created attachment 23193
Test

This patch creates 2 CSS files the first named test-à.css (with the à encoded in latin-1, i.e. &quot;\xe0&quot;) and test-[?].css (where with [?] I mean the Unicode replacement character, i.e. &quot;\xef\xbf\xbd&quot;), and then it tries to load test-à.css as the user-specified stylesheet.

Try this with https://bugs.webkit.org/attachment.cgi?id=23170 and WebKit will load test-[?].css because of the raw chars -&gt; utf-8 transformation, so you will se a red background.

Try this with https://bugs.webkit.org/attachment.cgi?id=23192 and WebKit will load test-à.css, so you will se a green background.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90287</commentid>
    <comment_count>4</comment_count>
      <attachid>23191</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-05 11:31:26 -0700</bug_when>
    <thetext>Comment on attachment 23191
Add String::toFilename and String::fromFilename

Adding this capability to the String class seems clearly wrong. It&apos;s not correct layering -- we don&apos;t want the String class to know anything about the file system. We also want to limit platform-specific functions in the String class to the ones for converting to and from platform String types.

You can accomplish this by building functions that operate on String objects rather than adding member functions to the String class itself.

I believe this can be done entirely within the FileSystemGtk.cpp file without touching PlatformString.h or String.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90289</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-05 11:33:32 -0700</bug_when>
    <thetext>One other question: This seems fine for cases where the filenames come from the functions in FileSystemGtk. But what effect will this have on all the code paths where the filename comes from content on the web?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90861</commentid>
    <comment_count>6</comment_count>
      <attachid>23350</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-09-11 08:49:18 -0700</bug_when>
    <thetext>Created attachment 23350
Add filenameToString and filenameFromString to FileSystemGtk.cpp

(In reply to comment #5)
&gt; One other question: This seems fine for cases where the filenames come from the
&gt; functions in FileSystemGtk. But what effect will this have on all the code
&gt; paths where the filename comes from content on the web?

Like? I cannot think to any case where we could get filenames causing problems, but probably I&apos;m missing something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91071</commentid>
    <comment_count>7</comment_count>
      <attachid>23350</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-09-13 09:18:59 -0700</bug_when>
    <thetext>Comment on attachment 23350
Add filenameToString and filenameFromString to FileSystemGtk.cpp

+#if PLATFORM(WIN)

should be WIN_OS.

g_uri_escape_string()

^ only available in GLib &gt;= 2.16


For this change to make sense, we need to decide exactly what we expect the developer to pass to user-stylesheet-uri: a local filename (byte array) or a well formatted URI?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91210</commentid>
    <comment_count>8</comment_count>
      <attachid>23441</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-09-15 08:10:29 -0700</bug_when>
    <thetext>Created attachment 23441
Add filenameToString and filenameFromString to FileSystemGtk.cpp

(In reply to comment #7)
&gt; +#if PLATFORM(WIN)
&gt; 
&gt; should be WIN_OS.

Fixed.

&gt; g_uri_escape_string()
&gt; 
&gt; ^ only available in GLib &gt;= 2.16

I included a copy of that function so we can use with glib &lt; 2.16. Is it the right way to do that?
 
&gt; For this change to make sense, we need to decide exactly what we expect the
&gt; developer to pass to user-stylesheet-uri: a local filename (byte array) or a
&gt; well formatted URI?

WebCore expects a URI and considering the name I think that it should be clear that it&apos;s a URI and not a filename.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92061</commentid>
    <comment_count>9</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-09-21 19:10:34 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=23441) [edit]

&gt; 
&gt; &gt; g_uri_escape_string()
&gt; &gt; 
&gt; &gt; ^ only available in GLib &gt;= 2.16
&gt; 
&gt; I included a copy of that function so we can use with glib &lt; 2.16. Is it the
&gt; right way to do that?

It might make sense to create a new file (maybe even only a header file) for such things? Besides that question it seems to be done. If we manage to land bug #18987 first you might need to upload a new diff though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92314</commentid>
    <comment_count>10</comment_count>
      <attachid>23441</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-09-23 04:20:36 -0700</bug_when>
    <thetext>Comment on attachment 23441
Add filenameToString and filenameFromString to FileSystemGtk.cpp

 87         gchar* systemFilename = filenameFromString(m_filename.utf8().data());

That can just be:
 87         gchar* systemFilename = filenameFromString(m_filename);
or?

I think all the imported code from GLIB should live in a separate header/.cpp pair, that way it can have its own special indentation for that file.  Although I&apos;m not sure that&apos;s really enough code (at least for is_valid) to really justify needing to be copy/pasted from glib.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93743</commentid>
    <comment_count>11</comment_count>
      <attachid>24021</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-10-02 09:46:32 -0700</bug_when>
    <thetext>Created attachment 24021
Add filenameToString, filenameFromString and filenameForDisplay to FileSystemGtk.cpp

(In reply to comment #10)
&gt; (From update of attachment 23441 [edit])
&gt;  87         gchar* systemFilename =
&gt; filenameFromString(m_filename.utf8().data());
&gt; 
&gt; That can just be:
&gt;  87         gchar* systemFilename = filenameFromString(m_filename);
&gt; or?

Yeah, I didn&apos;t see that. Fixed.

&gt; I think all the imported code from GLIB should live in a separate header/.cpp
&gt; pair, that way it can have its own special indentation for that file.  Although
&gt; I&apos;m not sure that&apos;s really enough code (at least for is_valid) to really
&gt; justify needing to be copy/pasted from glib.

Done. is_valid is there only because it&apos;s used by another function copied from glib, I don&apos;t use it directly.

&gt; such things? Besides that question it seems to be done. If we manage to land
&gt; bug #18987 first you might need to upload a new diff though.

Updated. For this chance I also added filenameForDisplay that converts an encoded string to a UTF-8 string for display, useful for error messages for instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95169</commentid>
    <comment_count>12</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-10-13 10:51:32 -0700</bug_when>
    <thetext>Looks sane. One minor coding style issue with the following but it can be fixed when landing. I need another second to have a second look.

+    gchar *filename = filenameFromString(string);
+    gchar *display = g_filename_to_utf8(filename, 0, 0, 0, 0);
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95179</commentid>
    <comment_count>13</comment_count>
      <attachid>24021</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-10-13 11:23:27 -0700</bug_when>
    <thetext>Comment on attachment 24021
Add filenameToString, filenameFromString and filenameForDisplay to FileSystemGtk.cpp


&gt;+        gchar* systemFilename = filenameFromString(m_filename);
&gt;+        gchar* systemBasename = g_path_get_basename(systemFilename);
&gt;+        g_free(systemFilename);
&gt;+        stringByAdoptingFileSystemRepresentation(systemBasename, string);


vs.


&gt;+    char* baseName = g_path_get_basename(tmpFilename);
&gt;     String fileName = String::fromUTF8(baseName);
&gt;     g_free(baseName);
&gt;+    g_free(tmpFilename);

should one use the above stringByAdopting... function as well?


The next thing is to remove the various if (fileName) {} statements as filenameFromString is not returning a NULL String? We at least have inconsistent null handling with filenameFromString after this patch. I would be willing to land this as the first part if cleanups follow? Do you agree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95294</commentid>
    <comment_count>14</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-10-14 08:57:24 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 24021 [edit])
&gt; &gt;+        gchar* systemFilename = filenameFromString(m_filename);
&gt; &gt;+        gchar* systemBasename = g_path_get_basename(systemFilename);
&gt; &gt;+        g_free(systemFilename);
&gt; &gt;+        stringByAdoptingFileSystemRepresentation(systemBasename, string);
&gt; 
&gt; vs.
&gt; 
&gt; &gt;+    char* baseName = g_path_get_basename(tmpFilename);
&gt; &gt;     String fileName = String::fromUTF8(baseName);
&gt; &gt;     g_free(baseName);
&gt; &gt;+    g_free(tmpFilename);

I will fix it using GOwnPtr now that it landed. I can fix this and the return value checks in a separate patch+bug report if it&apos;s ok for you, so we avoid to keep changing the same patch.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95419</commentid>
    <comment_count>15</comment_count>
      <attachid>24021</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-10-15 11:23:43 -0700</bug_when>
    <thetext>Comment on attachment 24021
Add filenameToString, filenameFromString and filenameForDisplay to FileSystemGtk.cpp

We are aware that more work needs to be done but this will be done in another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95439</commentid>
    <comment_count>16</comment_count>
      <attachid>24021</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-10-15 13:34:28 -0700</bug_when>
    <thetext>Comment on attachment 24021
Add filenameToString, filenameFromString and filenameForDisplay to FileSystemGtk.cpp

Clearing the review field as the patch landed. guriescape had to be converted to spaces.

Thanks for the patch and the next thing would be to move things to GOwnPtr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101151</commentid>
    <comment_count>17</comment_count>
    <who name="Sung-jun, Kim">withsmilo</who>
    <bug_when>2008-12-02 23:00:56 -0800</bug_when>
    <thetext>This patch was landed. How about change status to FIXED?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105409</commentid>
    <comment_count>18</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-01-12 15:33:53 -0800</bug_when>
    <thetext>Setting to fixed since the patch was landed, please reopen if needed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23191</attachid>
            <date>2008-09-05 07:25:52 -0700</date>
            <delta_ts>2008-09-11 08:49:18 -0700</delta_ts>
            <desc>Add String::toFilename and String::fromFilename</desc>
            <filename>filename-encoding.patch</filename>
            <type>text/plain</type>
            <size>8325</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwCShyZXZpc2lvbmUgMzYxMTEpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nLmNwcAkoY29waWEgbG9jYWxlKQpAQCAtMSw2ICsxLDcg
QEAKIC8qCiAgKiAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC0zNCw2ICszNSwxMCBAQAogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1Vu
aWNvZGUuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9VVEY4Lmg+CiAKKyNpZiBQTEFURk9STShH
VEspCisjaW5jbHVkZSA8Z2xpYi5oPgorI2VuZGlmCisKICNpZiBVU0UoSlNDKQogdXNpbmcgS0pT
OjpJZGVudGlmaWVyOwogdXNpbmcgS0pTOjpVU3RyaW5nOwpAQCAtNDUsNiArNTAsOSBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmc6OlN0cmluZyhjb25zdCBVQ2hhciogc3RyLCB1bnNp
Z25lZCBsZW4pCisjaWYgUExBVEZPUk0oR1RLKSAmJiAhZGVmaW5lZChOREVCVUcpCisgICAgOiBt
X2lzR2xpYkZpbGVuYW1lKGZhbHNlKQorI2VuZGlmCiB7CiAgICAgaWYgKCFzdHIpCiAgICAgICAg
IHJldHVybjsKQEAgLTUyLDYgKzYwLDkgQEAKIH0KIAogU3RyaW5nOjpTdHJpbmcoY29uc3QgVUNo
YXIqIHN0cikKKyNpZiBQTEFURk9STShHVEspICYmICFkZWZpbmVkKE5ERUJVRykKKyAgICA6IG1f
aXNHbGliRmlsZW5hbWUoZmFsc2UpCisjZW5kaWYKIHsKICAgICBpZiAoIXN0cikKICAgICAgICAg
cmV0dXJuOwpAQCAtNjQsNiArNzUsOSBAQAogfQogCiBTdHJpbmc6OlN0cmluZyhjb25zdCBjaGFy
KiBzdHIpCisjaWYgUExBVEZPUk0oR1RLKSAmJiAhZGVmaW5lZChOREVCVUcpCisgICAgOiBtX2lz
R2xpYkZpbGVuYW1lKGZhbHNlKQorI2VuZGlmCiB7CiAgICAgaWYgKCFzdHIpCiAgICAgICAgIHJl
dHVybjsKQEAgLTcxLDYgKzg1LDkgQEAKIH0KIAogU3RyaW5nOjpTdHJpbmcoY29uc3QgY2hhciog
c3RyLCB1bnNpZ25lZCBsZW5ndGgpCisjaWYgUExBVEZPUk0oR1RLKSAmJiAhZGVmaW5lZChOREVC
VUcpCisgICAgOiBtX2lzR2xpYkZpbGVuYW1lKGZhbHNlKQorI2VuZGlmCiB7CiAgICAgaWYgKCFz
dHIpCiAgICAgICAgIHJldHVybjsKQEAgLTEzMiw2ICsxNDksMTAgQEAKICAgICAgICAgcmV0dXJu
IGE7CiAgICAgU3RyaW5nIGMgPSBhOwogICAgIGMgKz0gYjsKKyNpZiBQTEFURk9STShHVEspICYm
ICFkZWZpbmVkKE5ERUJVRykKKyAgICBpZiAoYi5tX2lzR2xpYkZpbGVuYW1lKQorICAgICAgICBj
Lm1faXNHbGliRmlsZW5hbWUgPSB0cnVlOworI2VuZGlmCiAgICAgcmV0dXJuIGM7CiB9CiAKQEAg
LTYwOSw2ICs2MzAsNDYgQEAKICAgICByZXR1cm4gVVRGOEVuY29kaW5nKCkuZGVjb2RlKHN0cmlu
Zywgc3RybGVuKHN0cmluZykpOwogfQogCisjaWYgUExBVEZPUk0oR1RLKQorLyogT24gbGludXgg
ZmlsZSBuYW1lcyBhcmUganVzdCByYXcgYnl0ZXMsIHNvIGFsc28gc3RyaW5ncyB0aGF0IGNhbm5v
dCBiZSBlbmNvZGVkIGluIGFueSB3YXkKKyAqIGFyZSB2YWxpZCBmaWxlIG5hbWVzLiBUaGlzIG1l
YW4gdGhhdCB3ZSBjYW5ub3QganVzdCBzdG9yZSBhIGZpbGUgbmFtZSBhcy1pcyBpbiBhIFN0cmlu
ZworICogYnV0IHdlIGhhdmUgdG8gZXNjYXBlIGl0LgorICogT24gV2luZG93cyB0aGUgR0xpYiBm
aWxlIG5hbWUgZW5jb2RpbmcgaXMgYWx3YXlzIFVURi04IHNvIHdlIGNhbiBvcHRpbWl6ZSB0aGlz
IGNhc2UuICovCitjaGFyKiBTdHJpbmc6OnRvRmlsZW5hbWUoKSBjb25zdAoreworI2lmbmRlZiBO
REVCVUcKKyAgICBpZiAoIW1faXNHbGliRmlsZW5hbWUpCisgICAgICAgIGdfY3JpdGljYWwoIlN0
cmluZzo6dG9GaWxlbmFtZSBjYWxsZWQgb24gYSBub24tZmlsZW5hbWUgc3RyaW5nOiAnJXMnIiwg
dXRmOCgpLmRhdGEoKSk7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikKKyAgICByZXR1cm4g
Z19zdHJkdXAodXRmOCgpLmRhdGEoKSk7CisjZWxzZQorICAgIHJldHVybiBnX3VyaV91bmVzY2Fw
ZV9zdHJpbmcodXRmOCgpLmRhdGEoKSwgMCk7CisjZW5kaWYKK30KKworU3RyaW5nIFN0cmluZzo6
ZnJvbUZpbGVuYW1lKGNvbnN0IGNoYXIqIGZpbGVuYW1lKQoreworICAgIGlmICghZmlsZW5hbWUp
CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworI2lmIFBMQVRGT1JNKFdJTikKKyAgICBTdHJp
bmcgc3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChmaWxlbmFtZSk7CisjZWxzZQorICAgIGdjaGFy
KiBlc2NhcGVkU3RyaW5nID0gZ191cmlfZXNjYXBlX3N0cmluZyhmaWxlbmFtZSwgIi86IiwgZmFs
c2UpOworICAgIFN0cmluZyBzdHJpbmcoZXNjYXBlZFN0cmluZyk7CisgICAgZ19mcmVlKGVzY2Fw
ZWRTdHJpbmcpOworI2VuZGlmCisKKyNpZm5kZWYgTkRFQlVHCisgICAgc3RyaW5nLm1faXNHbGli
RmlsZW5hbWUgPSB0cnVlOworI2VuZGlmCisKKyAgICByZXR1cm4gc3RyaW5nOworfQorI2VuZGlm
CisKICNpZiBVU0UoSlNDKQogU3RyaW5nOjpTdHJpbmcoY29uc3QgSWRlbnRpZmllciYgc3RyKQog
ewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtU3RyaW5nLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtU3RyaW5nLmgJKHJldmlzaW9uZSAz
NjExMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybVN0cmluZy5oCShjb3BpYSBs
b2NhbGUpCkBAIC0yMTgsMTEgKzIxOCwyMSBAQAogICAgIHN0YXRpYyBTdHJpbmcgZnJvbVVURjgo
Y29uc3QgY2hhciosIHNpemVfdCk7CiAgICAgc3RhdGljIFN0cmluZyBmcm9tVVRGOChjb25zdCBj
aGFyKik7CiAKKyNpZiBQTEFURk9STShHVEspCisgICAgc3RhdGljIFN0cmluZyBmcm9tRmlsZW5h
bWUoY29uc3QgY2hhciopOworICAgIGNoYXIqIHRvRmlsZW5hbWUoKSBjb25zdDsKKyNlbmRpZgor
CiAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgd3JpdGluZyBkaXJlY3Rpb24gdXNpbmcgdGhlIFVuaWNv
ZGUgQmlkaSBBbGdvcml0aG0gcnVsZXMgUDIgYW5kIFAzLgogICAgIFdURjo6VW5pY29kZTo6RGly
ZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8g
bV9pbXBsLT5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpIDogV1RGOjpVbmljb2RlOjpMZWZ0VG9S
aWdodDsgfQogCiBwcml2YXRlOgogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBtX2ltcGw7CisKKyNp
ZiBQTEFURk9STShHVEspICYmICFkZWZpbmVkKE5ERUJVRykKKyAgICBmcmllbmQgU3RyaW5nIG9w
ZXJhdG9yKyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIG1faXNHbGli
RmlsZW5hbWU7CisjZW5kaWYKIH07CiAKIFN0cmluZyBvcGVyYXRvcisoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJik7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3Rr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNw
cAkocmV2aXNpb25lIDM2MTExKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0
ay5jcHAJKGNvcGlhIGxvY2FsZSkKQEAgLTM3LDcgKzM3LDcgQEAKIGJvb2wgZmlsZUV4aXN0cyhj
b25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBnY2hh
ciogZmlsZW5hbWUgPSBnX2ZpbGVuYW1lX2Zyb21fdXRmOChwYXRoLnV0ZjgoKS5kYXRhKCksIC0x
LCAwLCAwLCAwKTsKKyAgICBnY2hhciogZmlsZW5hbWUgPSBwYXRoLnRvRmlsZW5hbWUoKTsKIAog
ICAgIGlmIChmaWxlbmFtZSkgewogICAgICAgICByZXN1bHQgPSBnX2ZpbGVfdGVzdChmaWxlbmFt
ZSwgR19GSUxFX1RFU1RfRVhJU1RTKTsKQEAgLTUwLDcgKzUwLDcgQEAKIGJvb2wgZGVsZXRlRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBn
Y2hhciogZmlsZW5hbWUgPSBnX2ZpbGVuYW1lX2Zyb21fdXRmOChwYXRoLnV0ZjgoKS5kYXRhKCks
IC0xLCAwLCAwLCAwKTsKKyAgICBnY2hhciogZmlsZW5hbWUgPSBwYXRoLnRvRmlsZW5hbWUoKTsK
IAogICAgIGlmIChmaWxlbmFtZSkgewogICAgICAgICByZXN1bHQgPSBnX3JlbW92ZShmaWxlbmFt
ZSkgPT0gMDsKQEAgLTYzLDcgKzYzLDcgQEAKIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBwYXRoKQogewogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgZ2NoYXIq
IGZpbGVuYW1lID0gZ19maWxlbmFtZV9mcm9tX3V0ZjgocGF0aC51dGY4KCkuZGF0YSgpLCAtMSwg
MCwgMCwgMCk7CisgICAgZ2NoYXIqIGZpbGVuYW1lID0gcGF0aC50b0ZpbGVuYW1lKCk7CiAKICAg
ICBpZiAoZmlsZW5hbWUpIHsKICAgICAgICAgcmVzdWx0ID0gZ19ybWRpcihmaWxlbmFtZSkgPT0g
MDsKQEAgLTc1LDcgKzc1LDcgQEAKIAogYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBh
dGgsIGxvbmcgbG9uZyYgcmVzdWx0U2l6ZSkKIHsKLSAgICBnY2hhciogZmlsZW5hbWUgPSBnX2Zp
bGVuYW1lX2Zyb21fdXRmOChwYXRoLnV0ZjgoKS5kYXRhKCksIC0xLCAwLCAwLCAwKTsKKyAgICBn
Y2hhciogZmlsZW5hbWUgPSBwYXRoLnRvRmlsZW5hbWUoKTsKICAgICBpZiAoIWZpbGVuYW1lKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTkxLDcgKzkxLDcgQEAKIAogYm9vbCBnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgbW9kaWZpZWRUaW1l
KQogewotICAgIGdjaGFyKiBmaWxlbmFtZSA9IGdfZmlsZW5hbWVfZnJvbV91dGY4KHBhdGgudXRm
OCgpLmRhdGEoKSwgLTEsIDAsIDAsIDApOworICAgIGdjaGFyKiBmaWxlbmFtZSA9IHBhdGgudG9G
aWxlbmFtZSgpOwogICAgIGlmICghZmlsZW5hbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApA
QCAtMTE2LDcgKzExNiw3IEBACiAKIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIHsKLSAgICBnY2hhciogZmlsZW5hbWUgPSBnX2ZpbGVuYW1lX2Zyb21fdXRmOChw
YXRoLnV0ZjgoKS5kYXRhKCksIC0xLCAwLCAwLCAwKTsKKyAgICBnY2hhciogZmlsZW5hbWUgPSBw
YXRoLnRvRmlsZW5hbWUoKTsKICAgICBpZiAoIWZpbGVuYW1lKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTEyOCwxNCArMTI4LDE2IEBACiAKIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgp
CiB7Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZ19nZXRfaG9tZV9kaXIoKSk7CisgICAg
cmV0dXJuIFN0cmluZzo6ZnJvbUZpbGVuYW1lKGdfZ2V0X2hvbWVfZGlyKCkpOwogfQogCiBTdHJp
bmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aE5hbWUpCiB7Ci0gICAgY2hhciog
YmFzZU5hbWUgPSBnX3BhdGhfZ2V0X2Jhc2VuYW1lKHBhdGhOYW1lLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIGNoYXIqIHRtcEZpbGVuYW1lID0gcGF0aE5hbWUudG9GaWxlbmFtZSgpOworICAgIGNoYXIq
IGJhc2VOYW1lID0gZ19wYXRoX2dldF9iYXNlbmFtZSh0bXBGaWxlbmFtZSk7CiAgICAgU3RyaW5n
IGZpbGVOYW1lID0gU3RyaW5nOjpmcm9tVVRGOChiYXNlTmFtZSk7CiAgICAgZ19mcmVlKGJhc2VO
YW1lKTsKKyAgICBnX2ZyZWUodG1wRmlsZW5hbWUpOwogCiAgICAgcmV0dXJuIGZpbGVOYW1lOwog
fQpAQCAtMTUwLDcgKzE1Miw4IEBACiB7CiAgICAgVmVjdG9yPFN0cmluZz4gZW50cmllczsKIAot
ICAgIEdEaXIqIGRpciA9IGdfZGlyX29wZW4oKHBhdGgudXRmOCgpKS5kYXRhKCksIDAsIDApOwor
ICAgIGdjaGFyKiBmaWxlbmFtZSA9IHBhdGgudG9GaWxlbmFtZSgpOworICAgIEdEaXIqIGRpciA9
IGdfZGlyX29wZW4oZmlsZW5hbWUsIDAsIDApOwogICAgIGlmICghZGlyKQogICAgICAgICByZXR1
cm4gZW50cmllczsKIApAQCAtMTU5LDExICsxNjIsMTIgQEAKICAgICAgICAgaWYgKCFnX3BhdHRl
cm5fbWF0Y2hfc3RyaW5nKHBzcGVjLCBuYW1lKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgIGdjaGFyKiBlbnRyeSA9IGdfYnVpbGRfZmlsZW5hbWUoKHBhdGgudXRmOCgpKS5kYXRh
KCksIG5hbWUsIE5VTEwpOwotICAgICAgICBlbnRyaWVzLmFwcGVuZChlbnRyeSk7CisgICAgICAg
IGdjaGFyKiBlbnRyeSA9IGdfYnVpbGRfZmlsZW5hbWUoZmlsZW5hbWUsIG5hbWUsIE5VTEwpOwor
ICAgICAgICBlbnRyaWVzLmFwcGVuZChTdHJpbmc6OmZyb21GaWxlbmFtZShlbnRyeSkpOwogICAg
ICAgICBnX2ZyZWUoZW50cnkpOwogICAgIH0KICAgICBnX2Rpcl9jbG9zZShkaXIpOworICAgIGdf
ZnJlZShmaWxlbmFtZSk7CiAKICAgICByZXR1cm4gZW50cmllczsKIH0KSW5kZXg6IFdlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbmUgMzYx
MTEpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkoY29waWEgbG9jYWxlKQpAQCAtMSwzICsxLDM1IEBA
CisyMDA4LTA5LTA1ICBNYXJjbyBCYXJpc2lvbmUgIDxtYXJjby5iYXJpc2lvbmVAY29sbGFib3Jh
LmNvLnVrPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjY0CisgICAgICAgIFtH
VEtdIEZpbGUgbmFtZXMgYXJlIG5vdCBhbHdheXMgZW5jb2RhYmxlIGluIFVURi04CisKKyAgICAg
ICAgT24gTGludXggZmlsZSBuYW1lcyBhcmUganVzdCByYXcgZGF0YSBhbmQgY2Fubm90IGFsd2F5
cyBiZSBkaXJlY3RseQorICAgICAgICBlbmNvZGVkIGluIFVURi04IG9yIGluIGFueSBvdGhlciBl
bmNvZGluZ3MsIHNvIHdlIGVzY2FwZSB0aGVtIGJlZm9yZQorICAgICAgICBzdG9yaW5nIHRoZSBm
aWxlIG5hbWUgaW4gYSBTdHJpbmcgYW5kIHVuZXNjYXBlIHRoZW0gYmVmb3JlIHBhc3NpbmcKKyAg
ICAgICAgdGhlbSB0byBuYXRpdmUgZnVuY3Rpb25zIGhhbmRsaW5nIGZpbGVzLgorCisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybVN0cmluZy5oOiBBZGQgU3RyaW5nOjp0b0ZpbGVuYW1l
IGFuZAorICAgICAgICBTdHJpbmc6OmZyb21GaWxlbmFtZS4KKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L1N0cmluZy5jcHA6IEltcGxlbWVudCBTdHJpbmc6OnRvRmlsZW5hbWUgYW5kCisgICAgICAg
IFN0cmluZzo6ZnJvbUZpbGVuYW1lLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nOjpTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3IrKToKKyAgICAgICAgKFdlYkNvcmU6OlN0cmlu
Zzo6dG9GaWxlbmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmc6OmZyb21GaWxlbmFtZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwOiBVc2UgU3RyaW5nOjp0
b0ZpbGVuYW1lIGFuZAorICAgICAgICBTdHJpbmc6OmZyb21GaWxlbmFtZS4KKyAgICAgICAgKFdl
YkNvcmU6OmZpbGVFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlRmlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpkZWxldGVFbXB0eURpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpn
ZXRGaWxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6
CisgICAgICAgIChXZWJDb3JlOjptYWtlQWxsRGlyZWN0b3JpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6aG9tZURpcmVjdG9yeVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6cGF0aEdldEZpbGVOYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6Omxpc3REaXJlY3RvcnkpOgorCiAyMDA4LTA5LTA1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBbm90aGVyIGJ1aWxkIGZp
eC4K
</data>
<flag name="review"
          id="10321"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23192</attachid>
            <date>2008-09-05 07:30:58 -0700</date>
            <delta_ts>2008-09-05 07:30:58 -0700</delta_ts>
            <desc>Modified version of attachment #23170 to the String::to/fromFilename</desc>
            <filename>implement-file-stubs-with-string-filenames.patch</filename>
            <type>text/plain</type>
            <size>6084</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQkocmV2aXNpb25lIDM2MDg4KQorKysgV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQko
Y29waWEgbG9jYWxlKQpAQCAtMTkyMyw2ICsxOTIzLDcgQEAKIAlXZWJDb3JlL3BsYXRmb3JtL2d0
ay9GaWxlU3lzdGVtR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS2V5RXZlbnRHdGsu
Y3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9LZXlib2FyZENvZGVzLmggXAorCVdlYkNvcmUv
cGxhdGZvcm0vZ3RrL0tVUkxHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFn
ZS5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwIFwK
IAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2dnaW5nR3RrLmNwcCBcCkBAIC0xOTM4LDYgKzE5Mzks
NyBAQAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmggXAogCVdlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9T
ZWFyY2hQb3B1cE1lbnVHdGsuY3BwIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRCdWZm
ZXJHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRUaW1lckd0ay5jcHAgXAog
CVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1NvdW5kR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvU3lzdGVtVGltZUd0ay5jcHAgXApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvVGVtcG9y
YXJ5TGlua1N0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9UZW1w
b3JhcnlMaW5rU3R1YnMuY3BwCShyZXZpc2lvbmUgMzYwODgpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2d0ay9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCShjb3BpYSBsb2NhbGUpCkBAIC0zMSwxMCArMzEs
OCBAQAogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1
ZGUgIkZUUERpcmVjdG9yeURvY3VtZW50LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgotI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPGZsb2F0Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwpAQCAtNjcsOSArNjUsNSBAQAogU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5n
ZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyAmY2hhbGxlbmdlU3Ry
aW5nLCBjb25zdCBLVVJMICZ1cmwpIHsgcmV0dXJuIFN0cmluZygpOyB9CiBmbG9hdCB1c2VySWRs
ZVRpbWUoKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBGTFRfTUFYOyB9IC8vIHJldHVybiBh
biBhcmJpdHJhcmlseSBoaWdoIHVzZXJJZGxlVGltZSBzbyB0aGF0IHJlbGVhc2luZyBwYWdlcyBm
cm9tIHRoZSBwYWdlIGNhY2hlIGlzbid0IHBvc3Rwb25lZAogCi1TdHJpbmcgS1VSTDo6ZmlsZVN5
c3RlbVBhdGgoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBTdHJpbmcoKTsgfQot
Ci1QYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUoY29uc3QgU3RyaW5nJikgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gMDsgfQot
CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2hhcmVkQnVmZmVyR3RrLmNwcAkocmV2
aXNpb25lIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRCdWZmZXJHdGsuY3BwCShy
ZXZpc2lvbmUgMCkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBD
b2xsYWJvcmEgTHRkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
ICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorCisjaW5jbHVkZSAiQ1N0cmlu
Zy5oIgorCisjaW5jbHVkZSA8Z2xpYi5oPgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCit7CisgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBnY2hhciogZmlsZW5hbWUgPSBmaWxlUGF0aC50
b0ZpbGVuYW1lKCk7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBnY2hhciogY29udGVudHM7CisgICAgZ3NpemUgc2l6ZTsKKyAgICBHRXJyb3IqIGVycm9yID0g
MDsKKyAgICBpZiAoIWdfZmlsZV9nZXRfY29udGVudHMoZmlsZW5hbWUsICZjb250ZW50cywgJnNp
emUsICZlcnJvcikpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBj
b250ZW50cyBvZiBmaWxlICVzIC0gJXMiLCBmaWxlUGF0aC51dGY4KCkuZGF0YSgpLCBlcnJvci0+
bWVzc2FnZSk7CisgICAgICAgIGdfZXJyb3JfZnJlZShlcnJvcik7CisgICAgICAgIGdfZnJlZShm
aWxlbmFtZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLCBzaXplKTsKKyAg
ICBnX2ZyZWUoZmlsZW5hbWUpOworICAgIGdfZnJlZShjb250ZW50cyk7CisKKyAgICByZXR1cm4g
cmVzdWx0LnJlbGVhc2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvS1VSTEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvS1VSTEd0ay5jcHAJKHJldmlzaW9uZSAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvS1VSTEd0ay5jcHAJKHJldmlzaW9uZSAwKQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiS1VSTC5oIgorCisjaW5jbHVk
ZSAiQ1N0cmluZy5oIgorCisjaW5jbHVkZSA8Z2xpYi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1N0cmluZyBLVVJMOjpmaWxlU3lzdGVtUGF0aCgpIGNvbnN0Cit7CisgICAgZ2NoYXIqIGZp
bGVuYW1lID0gZ19maWxlbmFtZV9mcm9tX3VyaShtX3N0cmluZy51dGY4KCkuZGF0YSgpLCAwLCAw
KTsKKyAgICBpZiAoIWZpbGVuYW1lKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBT
dHJpbmcgcGF0aCA9IFN0cmluZzo6ZnJvbUZpbGVuYW1lKGZpbGVuYW1lKTsKKyAgICBnX2ZyZWUo
ZmlsZW5hbWUpOworICAgIHJldHVybiBwYXRoOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb25lIDM2MDg4KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKGNvcGlhIGxvY2FsZSkK
QEAgLTEsMyArMSwxOCBAQAorMjAwOC0wOS0wNCAgTWFyY28gQmFyaXNpb25lICA8bWFyY28uYmFy
aXNpb25lQGNvbGxhYm9yYS5jby51az4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODk4NworICAgICAgICBbR1RLXSBJbXBsZW1lbnQgU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUgYW5kCisgICAgICAgIEtVUkw6OmZpbGVTeXN0ZW1QYXRoCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5hbTogQWRkIEtVUkxHdGsuY3BwIGFuZCBTaGFyZWRCdWZmZXJHdGsuY3Bw
LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9LVVJMR3RrLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpLVVJMOjpmaWxlU3lzdGVtUGF0aCk6IEltcGxlbWVudGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9TaGFyZWRCdWZmZXJHdGsuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKTogSW1wbGVtZW50ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHA6IFJlbW92ZSB0aGUg
b2xkIHN0dWJzLgorCiAyMDA4LTA5LTA0ICBUb3IgQXJuZSBWZXN0YsO4ICA8dGF2ZXN0Ym9AdHJv
bGx0ZWNoLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23193</attachid>
            <date>2008-09-05 07:38:40 -0700</date>
            <delta_ts>2008-09-05 07:38:40 -0700</delta_ts>
            <desc>Test</desc>
            <filename>filename-test.patch</filename>
            <type>text/plain</type>
            <size>1872</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0d0a0xhdW5jaGVyL21haW4uYyBiL1dlYktpdFRvb2xz
L0d0a0xhdW5jaGVyL21haW4uYwppbmRleCA4ZWQyNjkwLi44OWMxZmU2IDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9HdGtMYXVuY2hlci9tYWluLmMKKysrIGIvV2ViS2l0VG9vbHMvR3RrTGF1bmNo
ZXIvbWFpbi5jCkBAIC0yNCw2ICsyNCwxMiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaW5j
bHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxmY250
bC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCiAjaW5jbHVk
ZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXQuaD4KIApAQCAtMTc5LDYgKzE4
NSwyNyBAQCBjcmVhdGVfd2luZG93ICgpCiAgICAgcmV0dXJuIHdpbmRvdzsKIH0KIAorc3RhdGlj
IHZvaWQKK3dyaXRlX2Nzc19maWxlIChjb25zdCBnY2hhciogY2hhcnMsIGNvbnN0IGdjaGFyKiBj
b2xvciwgZ2NoYXIgKipyZXN1bHQpCit7CisgICAgZ2NoYXIgKmZpbGVuYW1lID0gZ19zdHJkdXBf
cHJpbnRmICgidGVzdC0lcy5jc3MiLCBjaGFycyk7CisgICAgZ2NoYXIgKmNvbnRlbnQgPSBnX3N0
cmR1cF9wcmludGYgKCIqIHsgYmFja2dyb3VuZC1jb2xvcjogJXMgIWltcG9ydGFudDsgfVxuIiwg
Y29sb3IpOyAKKyAgICBpbnQgZmQgPSBjcmVhdChmaWxlbmFtZSwgMDY0NCk7CisgICAgd3JpdGUo
ZmQsIGNvbnRlbnQsIHN0cmxlbihjb250ZW50KSk7CisKKyAgICBpZiAocmVzdWx0KSB7CisgICAg
ICAgIGdjaGFyICpjdXJyX2RpciA9IGdfZ2V0X2N1cnJlbnRfZGlyICgpOworICAgICAgICBnY2hh
ciAqcGF0aCA9IGdfYnVpbGRfZmlsZW5hbWUgKGN1cnJfZGlyLCBmaWxlbmFtZSwgTlVMTCk7Cisg
ICAgICAgICpyZXN1bHQgPSBnX2ZpbGVuYW1lX3RvX3VyaSAocGF0aCwgTlVMTCwgTlVMTCk7Cisg
ICAgICAgIGdfZnJlZSAocGF0aCk7CisgICAgICAgIGdfZnJlZSAoY3Vycl9kaXIpOworICAgIH0K
KworICAgIGNsb3NlKGZkKTsKKyAgICBnX2ZyZWUgKGZpbGVuYW1lKTsKKyAgICBnX2ZyZWUgKGNv
bnRlbnQpOworfQorCiBpbnQKIG1haW4gKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiB7CkBAIC0x
OTIsNiArMjE5LDE4IEBAIG1haW4gKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgbWFpbl93
aW5kb3cgPSBjcmVhdGVfd2luZG93ICgpOwogICAgIGd0a19jb250YWluZXJfYWRkIChHVEtfQ09O
VEFJTkVSIChtYWluX3dpbmRvdyksIHZib3gpOwogCisgICAgZ2NoYXIgKmNzc19maWxlOworICAg
IHdyaXRlX2Nzc19maWxlICgiXHhlMCIsICJncmVlbiIsICZjc3NfZmlsZSk7CisgICAgd3JpdGVf
Y3NzX2ZpbGUgKCJceGVmXHhiZlx4YmQiLCAicmVkIiwgTlVMTCk7CisKKyAgICBXZWJLaXRXZWJT
ZXR0aW5ncyAqc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldyAoKTsKKyAgICBnX29i
amVjdF9zZXQgKHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgInVzZXItc3R5bGVzaGVldC11
cmkiLCBjc3NfZmlsZSwKKyAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGdfZnJlZSAoY3Nz
X2ZpbGUpOworICAgIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MgKHdlYl92aWV3LCBzZXR0
aW5ncyk7CisgICAgZ19vYmplY3RfdW5yZWYgKHNldHRpbmdzKTsKKwogICAgIGdjaGFyKiB1cmkg
PSAoZ2NoYXIqKSAoYXJnYyA+IDEgPyBhcmd2WzFdIDogImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8i
KTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfb3BlbiAod2ViX3ZpZXcsIHVyaSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23350</attachid>
            <date>2008-09-11 08:49:18 -0700</date>
            <delta_ts>2008-09-15 08:10:29 -0700</delta_ts>
            <desc>Add filenameToString and filenameFromString to FileSystemGtk.cpp</desc>
            <filename>filename-escaping.patch</filename>
            <type>text/plain</type>
            <size>7364</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVDaG9vc2VyR3RrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlQ2hvb3Nlckd0ay5jcHAJKHJldmlzaW9uZSAz
NjMzMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVDaG9vc2VyR3RrLmNwcAkoY29waWEg
bG9jYWxlKQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgogI2luY2x1ZGUgIkljb24uaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgi
CkBAIC00NSwxNCArNDYsOSBAQAogICAgIGlmICghc3lzdGVtRmlsZW5hbWUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGdjaGFyKiBmaWxlbmFtZSA9IGdfZmlsZW5hbWVfdG9fdXRmOChz
eXN0ZW1GaWxlbmFtZSwgLTEsIDAsIDAsIDApOworICAgIHJlc3VsdCA9IGZpbGVuYW1lVG9TdHJp
bmcoc3lzdGVtRmlsZW5hbWUpOwogICAgIGdfZnJlZShzeXN0ZW1GaWxlbmFtZSk7CiAKLSAgICBp
ZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXN1bHQgPSBTdHJp
bmc6OmZyb21VVEY4KGZpbGVuYW1lKTsKLSAgICBnX2ZyZWUoZmlsZW5hbWUpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC04OCwxMyArODQsMTAgQEAKICAgICBTdHJpbmcgc3RyaW5nID0gZmls
ZUJ1dHRvbk5vRmlsZVNlbGVjdGVkTGFiZWwoKTsKIAogICAgIGlmICghbV9maWxlbmFtZS5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgZ2NoYXIqIHN5c3RlbUZpbGVuYW1lID0gZ19maWxlbmFtZV9mcm9t
X3V0ZjgobV9maWxlbmFtZS51dGY4KCkuZGF0YSgpLCAtMSwgMCwgMCwgMCk7Ci0gICAgICAgIGlm
IChzeXN0ZW1GaWxlbmFtZSkgewotICAgICAgICAgICAgZ2NoYXIqIHN5c3RlbUJhc2VuYW1lID0g
Z19wYXRoX2dldF9iYXNlbmFtZShzeXN0ZW1GaWxlbmFtZSk7Ci0gICAgICAgICAgICBnX2ZyZWUo
c3lzdGVtRmlsZW5hbWUpOwotCi0gICAgICAgICAgICBzdHJpbmdCeUFkb3B0aW5nRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHN5c3RlbUJhc2VuYW1lLCBzdHJpbmcpOwotICAgICAgICB9CisgICAg
ICAgIGdjaGFyKiBzeXN0ZW1GaWxlbmFtZSA9IGZpbGVuYW1lRnJvbVN0cmluZyhtX2ZpbGVuYW1l
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBnY2hhciogc3lzdGVtQmFzZW5hbWUgPSBnX3BhdGhf
Z2V0X2Jhc2VuYW1lKHN5c3RlbUZpbGVuYW1lKTsKKyAgICAgICAgZ19mcmVlKHN5c3RlbUZpbGVu
YW1lKTsKKyAgICAgICAgc3RyaW5nQnlBZG9wdGluZ0ZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihz
eXN0ZW1CYXNlbmFtZSwgc3RyaW5nKTsKICAgICB9CiAKICAgICByZXR1cm4gU3RyaW5nVHJ1bmNh
dG9yOjpjZW50ZXJUcnVuY2F0ZShzdHJpbmcsIHdpZHRoLCBmb250LCBmYWxzZSk7CkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcAkocmV2aXNpb25lIDM2MzMzKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAJKGNvcGlhIGxvY2FsZSkKQEAg
LTM0LDEwICszNCwzOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8qIE9uIGxpbnV4IGZp
bGUgbmFtZXMgYXJlIGp1c3QgcmF3IGJ5dGVzLCBzbyBhbHNvIHN0cmluZ3MgdGhhdCBjYW5ub3Qg
YmUgZW5jb2RlZCBpbiBhbnkgd2F5CisgKiBhcmUgdmFsaWQgZmlsZSBuYW1lcy4gVGhpcyBtZWFu
IHRoYXQgd2UgY2Fubm90IGp1c3Qgc3RvcmUgYSBmaWxlIG5hbWUgYXMtaXMgaW4gYSBTdHJpbmcK
KyAqIGJ1dCB3ZSBoYXZlIHRvIGVzY2FwZSBpdC4KKyAqIE9uIFdpbmRvd3MgdGhlIEdMaWIgZmls
ZSBuYW1lIGVuY29kaW5nIGlzIGFsd2F5cyBVVEYtOCBzbyB3ZSBjYW4gb3B0aW1pemUgdGhpcyBj
YXNlLiAqLworU3RyaW5nIGZpbGVuYW1lVG9TdHJpbmcoY29uc3QgY2hhciogZmlsZW5hbWUpCit7
CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisjaWYgUExB
VEZPUk0oV0lOKQorICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGZpbGVuYW1lKTsKKyNlbHNl
CisgICAgZ2NoYXIqIGVzY2FwZWRTdHJpbmcgPSBnX3VyaV9lc2NhcGVfc3RyaW5nKGZpbGVuYW1l
LCAiLzoiLCBmYWxzZSk7CisgICAgU3RyaW5nIHN0cmluZyhlc2NhcGVkU3RyaW5nKTsKKyAgICBn
X2ZyZWUoZXNjYXBlZFN0cmluZyk7CisgICAgcmV0dXJuIHN0cmluZzsKKyNlbmRpZgorfQorCitj
aGFyKiBmaWxlbmFtZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisjaWYgUExB
VEZPUk0oV0lOKQorICAgIHJldHVybiBnX3N0cmR1cChzdHJpbmcudXRmOCgpLmRhdGEoKSk7Cisj
ZWxzZQorICAgIHJldHVybiBnX3VyaV91bmVzY2FwZV9zdHJpbmcoc3RyaW5nLnV0ZjgoKS5kYXRh
KCksIDApOworI2VuZGlmCit9CisKIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgp
CiB7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBnY2hhciogZmlsZW5hbWUgPSBnX2Zp
bGVuYW1lX2Zyb21fdXRmOChwYXRoLnV0ZjgoKS5kYXRhKCksIC0xLCAwLCAwLCAwKTsKKyAgICBn
Y2hhciogZmlsZW5hbWUgPSBmaWxlbmFtZUZyb21TdHJpbmcocGF0aCk7CiAKICAgICBpZiAoZmls
ZW5hbWUpIHsKICAgICAgICAgcmVzdWx0ID0gZ19maWxlX3Rlc3QoZmlsZW5hbWUsIEdfRklMRV9U
RVNUX0VYSVNUUyk7CkBAIC01MCw3ICs3OCw3IEBACiBib29sIGRlbGV0ZUZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoKQogewogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgZ2NoYXIqIGZpbGVu
YW1lID0gZ19maWxlbmFtZV9mcm9tX3V0ZjgocGF0aC51dGY4KCkuZGF0YSgpLCAtMSwgMCwgMCwg
MCk7CisgICAgZ2NoYXIqIGZpbGVuYW1lID0gZmlsZW5hbWVGcm9tU3RyaW5nKHBhdGgpOwogCiAg
ICAgaWYgKGZpbGVuYW1lKSB7CiAgICAgICAgIHJlc3VsdCA9IGdfcmVtb3ZlKGZpbGVuYW1lKSA9
PSAwOwpAQCAtNjMsNyArOTEsNyBAQAogYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBT
dHJpbmcmIHBhdGgpCiB7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBnY2hhciogZmls
ZW5hbWUgPSBnX2ZpbGVuYW1lX2Zyb21fdXRmOChwYXRoLnV0ZjgoKS5kYXRhKCksIC0xLCAwLCAw
LCAwKTsKKyAgICBnY2hhciogZmlsZW5hbWUgPSBmaWxlbmFtZUZyb21TdHJpbmcocGF0aCk7CiAK
ICAgICBpZiAoZmlsZW5hbWUpIHsKICAgICAgICAgcmVzdWx0ID0gZ19ybWRpcihmaWxlbmFtZSkg
PT0gMDsKQEAgLTc1LDcgKzEwMyw3IEBACiAKIGJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5n
JiBwYXRoLCBsb25nIGxvbmcmIHJlc3VsdFNpemUpCiB7Ci0gICAgZ2NoYXIqIGZpbGVuYW1lID0g
Z19maWxlbmFtZV9mcm9tX3V0ZjgocGF0aC51dGY4KCkuZGF0YSgpLCAtMSwgMCwgMCwgMCk7Cisg
ICAgZ2NoYXIqIGZpbGVuYW1lID0gZmlsZW5hbWVGcm9tU3RyaW5nKHBhdGgpOwogICAgIGlmICgh
ZmlsZW5hbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtOTEsNyArMTE5LDcgQEAKIAog
Ym9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYg
bW9kaWZpZWRUaW1lKQogewotICAgIGdjaGFyKiBmaWxlbmFtZSA9IGdfZmlsZW5hbWVfZnJvbV91
dGY4KHBhdGgudXRmOCgpLmRhdGEoKSwgLTEsIDAsIDAsIDApOworICAgIGdjaGFyKiBmaWxlbmFt
ZSA9IGZpbGVuYW1lRnJvbVN0cmluZyhwYXRoKTsKICAgICBpZiAoIWZpbGVuYW1lKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTExNiw3ICsxNDQsNyBAQAogCiBib29sIG1ha2VBbGxEaXJl
Y3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgZ2NoYXIqIGZpbGVuYW1lID0gZ19m
aWxlbmFtZV9mcm9tX3V0ZjgocGF0aC51dGY4KCkuZGF0YSgpLCAtMSwgMCwgMCwgMCk7CisgICAg
Z2NoYXIqIGZpbGVuYW1lID0gZmlsZW5hbWVGcm9tU3RyaW5nKHBhdGgpOwogICAgIGlmICghZmls
ZW5hbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTI4LDE0ICsxNTYsMTYgQEAKIAog
U3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKIHsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRG
OChnX2dldF9ob21lX2RpcigpKTsKKyAgICByZXR1cm4gZmlsZW5hbWVUb1N0cmluZyhnX2dldF9o
b21lX2RpcigpKTsKIH0KIAogU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBh
dGhOYW1lKQogewotICAgIGNoYXIqIGJhc2VOYW1lID0gZ19wYXRoX2dldF9iYXNlbmFtZShwYXRo
TmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICBjaGFyKiB0bXBGaWxlbmFtZSA9IGZpbGVuYW1lRnJv
bVN0cmluZyhwYXRoTmFtZSk7CisgICAgY2hhciogYmFzZU5hbWUgPSBnX3BhdGhfZ2V0X2Jhc2Vu
YW1lKHRtcEZpbGVuYW1lKTsKICAgICBTdHJpbmcgZmlsZU5hbWUgPSBTdHJpbmc6OmZyb21VVEY4
KGJhc2VOYW1lKTsKICAgICBnX2ZyZWUoYmFzZU5hbWUpOworICAgIGdfZnJlZSh0bXBGaWxlbmFt
ZSk7CiAKICAgICByZXR1cm4gZmlsZU5hbWU7CiB9CkBAIC0xNTAsNyArMTgwLDggQEAKIHsKICAg
ICBWZWN0b3I8U3RyaW5nPiBlbnRyaWVzOwogCi0gICAgR0RpciogZGlyID0gZ19kaXJfb3Blbigo
cGF0aC51dGY4KCkpLmRhdGEoKSwgMCwgMCk7CisgICAgZ2NoYXIqIGZpbGVuYW1lID0gZmlsZW5h
bWVGcm9tU3RyaW5nKHBhdGgpOworICAgIEdEaXIqIGRpciA9IGdfZGlyX29wZW4oZmlsZW5hbWUs
IDAsIDApOwogICAgIGlmICghZGlyKQogICAgICAgICByZXR1cm4gZW50cmllczsKIApAQCAtMTU5
LDExICsxOTAsMTIgQEAKICAgICAgICAgaWYgKCFnX3BhdHRlcm5fbWF0Y2hfc3RyaW5nKHBzcGVj
LCBuYW1lKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGdjaGFyKiBlbnRyeSA9
IGdfYnVpbGRfZmlsZW5hbWUoKHBhdGgudXRmOCgpKS5kYXRhKCksIG5hbWUsIE5VTEwpOwotICAg
ICAgICBlbnRyaWVzLmFwcGVuZChlbnRyeSk7CisgICAgICAgIGdjaGFyKiBlbnRyeSA9IGdfYnVp
bGRfZmlsZW5hbWUoZmlsZW5hbWUsIG5hbWUsIE5VTEwpOworICAgICAgICBlbnRyaWVzLmFwcGVu
ZChmaWxlbmFtZVRvU3RyaW5nKGVudHJ5KSk7CiAgICAgICAgIGdfZnJlZShlbnRyeSk7CiAgICAg
fQogICAgIGdfZGlyX2Nsb3NlKGRpcik7CisgICAgZ19mcmVlKGZpbGVuYW1lKTsKIAogICAgIHJl
dHVybiBlbnRyaWVzOwogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgJKHJldmlzaW9uZSAzNjMz
MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCShjb3BpYSBsb2NhbGUpCkBAIC0x
NTgsNiArMTU4LDExIEBACiBib29sIHNhZmVDcmVhdGVGaWxlKGNvbnN0IFN0cmluZyYsIENGRGF0
YVJlZik7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKEdUSykKK1N0cmluZyBmaWxlbmFtZVRvU3Ry
aW5nKGNvbnN0IGNoYXIqIGZpbGVuYW1lKTsKK2NoYXIqIGZpbGVuYW1lRnJvbVN0cmluZyhjb25z
dCBTdHJpbmcmIHN0cmluZyk7CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRmlsZVN5c3RlbV9oCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb25lIDM2MzMzKQorKysgV2ViQ29yZS9DaGFu
Z2VMb2cJKGNvcGlhIGxvY2FsZSkKQEAgLTEsMyArMSwzMiBAQAorMjAwOC0wOS0xMSAgTWFyY28g
QmFyaXNpb25lICA8bWFyY28uYmFyaXNpb25lQGNvbGxhYm9yYS5jby51az4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY2NAorICAgICAgICBbR1RLXSBGaWxlIG5hbWVzIGFyZSBu
b3QgYWx3YXlzIGVuY29kYWJsZSBpbiBVVEYtOAorCisgICAgICAgIE9uIExpbnV4IGZpbGUgbmFt
ZXMgYXJlIGp1c3QgcmF3IGRhdGEgYW5kIGNhbm5vdCBhbHdheXMgYmUgZGlyZWN0bHkKKyAgICAg
ICAgZW5jb2RlZCBpbiBVVEYtOCBvciBpbiBhbnkgb3RoZXIgZW5jb2RpbmdzLCBzbyB3ZSBlc2Nh
cGUgdGhlbSBiZWZvcmUKKyAgICAgICAgc3RvcmluZyB0aGUgZmlsZSBuYW1lIGluIGEgU3RyaW5n
IGFuZCB1bmVzY2FwZSB0aGVtIGJlZm9yZSBwYXNzaW5nCisgICAgICAgIHRoZW0gdG8gbmF0aXZl
IGZ1bmN0aW9ucyBoYW5kbGluZyBmaWxlcy4KKworICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTeXN0
ZW0uaDogQWRkIGZpbGVuYW1lVG9TdHJpbmcgYW5kIGZpbGVuYW1lRnJvbVN0cmluZy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpm
aWxlbmFtZVRvU3RyaW5nKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpmaWxlbmFtZUZyb21T
dHJpbmcpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmZpbGVFeGlzdHMpOgorICAgICAgICAo
V2ViQ29yZTo6ZGVsZXRlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpkZWxldGVFbXB0eURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6CisgICAgICAgIChXZWJDb3JlOjptYWtlQWxsRGly
ZWN0b3JpZXMpOgorICAgICAgICAoV2ViQ29yZTo6aG9tZURpcmVjdG9yeVBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6cGF0aEdldEZpbGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Omxpc3REaXJl
Y3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9GaWxlQ2hvb3Nlckd0ay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzdHJpbmdCeUFkb3B0aW5nRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyOjpiYXNlbmFtZUZvcldpZHRoKToKKwogMjAw
OC0wOS0xMSAgRGlyayBTY2h1bHplICA8dmJzODVAZ214LmRlPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uLgo=
</data>
<flag name="review"
          id="10411"
          type_id="1"
          status="-"
          setter="alp"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23441</attachid>
            <date>2008-09-15 08:10:29 -0700</date>
            <delta_ts>2008-10-02 09:46:32 -0700</delta_ts>
            <desc>Add filenameToString and filenameFromString to FileSystemGtk.cpp</desc>
            <filename>filename-escaping.patch</filename>
            <type>text/plain</type>
            <size>10428</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVDaG9vc2VyR3RrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlQ2hvb3Nlckd0ay5jcHAJKHJldmlzaW9uZSAz
NjQ0NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVDaG9vc2VyR3RrLmNwcAkoY29waWEg
bG9jYWxlKQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgogI2luY2x1ZGUgIkljb24uaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgi
CkBAIC00NSwxNCArNDYsOSBAQAogICAgIGlmICghc3lzdGVtRmlsZW5hbWUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGdjaGFyKiBmaWxlbmFtZSA9IGdfZmlsZW5hbWVfdG9fdXRmOChz
eXN0ZW1GaWxlbmFtZSwgLTEsIDAsIDAsIDApOworICAgIHJlc3VsdCA9IGZpbGVuYW1lVG9TdHJp
bmcoc3lzdGVtRmlsZW5hbWUpOwogICAgIGdfZnJlZShzeXN0ZW1GaWxlbmFtZSk7CiAKLSAgICBp
ZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXN1bHQgPSBTdHJp
bmc6OmZyb21VVEY4KGZpbGVuYW1lKTsKLSAgICBnX2ZyZWUoZmlsZW5hbWUpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC04OCwxMyArODQsMTAgQEAKICAgICBTdHJpbmcgc3RyaW5nID0gZmls
ZUJ1dHRvbk5vRmlsZVNlbGVjdGVkTGFiZWwoKTsKIAogICAgIGlmICghbV9maWxlbmFtZS5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgZ2NoYXIqIHN5c3RlbUZpbGVuYW1lID0gZ19maWxlbmFtZV9mcm9t
X3V0ZjgobV9maWxlbmFtZS51dGY4KCkuZGF0YSgpLCAtMSwgMCwgMCwgMCk7Ci0gICAgICAgIGlm
IChzeXN0ZW1GaWxlbmFtZSkgewotICAgICAgICAgICAgZ2NoYXIqIHN5c3RlbUJhc2VuYW1lID0g
Z19wYXRoX2dldF9iYXNlbmFtZShzeXN0ZW1GaWxlbmFtZSk7Ci0gICAgICAgICAgICBnX2ZyZWUo
c3lzdGVtRmlsZW5hbWUpOwotCi0gICAgICAgICAgICBzdHJpbmdCeUFkb3B0aW5nRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHN5c3RlbUJhc2VuYW1lLCBzdHJpbmcpOwotICAgICAgICB9CisgICAg
ICAgIGdjaGFyKiBzeXN0ZW1GaWxlbmFtZSA9IGZpbGVuYW1lRnJvbVN0cmluZyhtX2ZpbGVuYW1l
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBnY2hhciogc3lzdGVtQmFzZW5hbWUgPSBnX3BhdGhf
Z2V0X2Jhc2VuYW1lKHN5c3RlbUZpbGVuYW1lKTsKKyAgICAgICAgZ19mcmVlKHN5c3RlbUZpbGVu
YW1lKTsKKyAgICAgICAgc3RyaW5nQnlBZG9wdGluZ0ZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihz
eXN0ZW1CYXNlbmFtZSwgc3RyaW5nKTsKICAgICB9CiAKICAgICByZXR1cm4gU3RyaW5nVHJ1bmNh
dG9yOjpjZW50ZXJUcnVuY2F0ZShzdHJpbmcsIHdpZHRoLCBmb250LCBmYWxzZSk7CkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcAkocmV2aXNpb25lIDM2NDQ0KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAJKGNvcGlhIGxvY2FsZSkKQEAg
LTM0LDEwICszNCwxNDUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgIVBMQVRGT1JN
KFdJTl9PUykgJiYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigyLCAxNiwgMCkKKy8qIGlzX3ZhbGlkLCBn
dW5pY2hhcl9vayBhbmQgZ19zdHJpbmdfYXBwZW5kX3VyaV9lc2NhcGVkIHdlcmUgY29waWVkIGZv
ciBnbGliL2dzdHJpbmcuYworICogaW4gdGhlIGdsaWIgcGFja2FnZS4KKyAqCisgKiBPcmlnaW5h
bCBjb3B5cmlnaHQ6CisgKiAgIENvcHlyaWdodCAoQykgMTk5NS0xOTk3ICBQZXRlciBNYXR0aXMs
IFNwZW5jZXIgS2ltYmFsbCBhbmQgSm9zaCBNYWNEb25hbGQKKyAqCisgKiAgIE1vZGlmaWVkIGJ5
IHRoZSBHTGliIFRlYW0gYW5kIG90aGVycyAxOTk3LTIwMDAuICBTZWUgdGhlIEFVVEhPUlMKKyAq
ICAgZmlsZSBmb3IgYSBsaXN0IG9mIHBlb3BsZSBvbiB0aGUgR0xpYiBUZWFtLiAgU2VlIHRoZSBD
aGFuZ2VMb2cKKyAqICAgZmlsZXMgZm9yIGEgbGlzdCBvZiBjaGFuZ2VzLiAgVGhlc2UgZmlsZXMg
YXJlIGRpc3RyaWJ1dGVkIHdpdGgKKyAqICAgR0xpYiBhdCBmdHA6Ly9mdHAuZ3RrLm9yZy9wdWIv
Z3RrLy4gCisgKgorICogUGxlYXNlIGRvbid0IGNoYW5nZSB0aGUgaW5kZW50YXRpb24gc28gaXQn
cyBlYXNpZXIgdG8gdXBkYXRlIHRoZXNlIGZ1bmN0aW9ucworICogaWYgdGhleSBhcmUgY2hhbmdl
ZCBpbiBnbGliLgorICovCitzdGF0aWMgZ2Jvb2xlYW4KK2lzX3ZhbGlkIChjaGFyIGMsIGNvbnN0
IGNoYXIgKnJlc2VydmVkX2NoYXJzX2FsbG93ZWQpCit7CisgIGlmIChnX2FzY2lpX2lzYWxudW0g
KGMpIHx8CisgICAgICBjID09ICctJyB8fAorICAgICAgYyA9PSAnLicgfHwKKyAgICAgIGMgPT0g
J18nIHx8CisgICAgICBjID09ICd+JykKKyAgICByZXR1cm4gVFJVRTsKKworICBpZiAocmVzZXJ2
ZWRfY2hhcnNfYWxsb3dlZCAmJgorICAgICAgc3RyY2hyIChyZXNlcnZlZF9jaGFyc19hbGxvd2Vk
LCBjKSAhPSBOVUxMKQorICAgIHJldHVybiBUUlVFOworICAKKyAgcmV0dXJuIEZBTFNFOworfQor
CitzdGF0aWMgZ2Jvb2xlYW4gCitndW5pY2hhcl9vayAoZ3VuaWNoYXIgYykKK3sKKyAgcmV0dXJu
CisgICAgKGMgIT0gKGd1bmljaGFyKSAtMikgJiYKKyAgICAoYyAhPSAoZ3VuaWNoYXIpIC0xKTsK
K30KKworc3RhdGljIEdTdHJpbmcgKgorZ19zdHJpbmdfYXBwZW5kX3VyaV9lc2NhcGVkIChHU3Ry
aW5nICpzdHJpbmcsCisJCQkgICAgIGNvbnN0IGNoYXIgKnVuZXNjYXBlZCwKKwkJCSAgICAgY29u
c3QgY2hhciAqcmVzZXJ2ZWRfY2hhcnNfYWxsb3dlZCwKKwkJCSAgICAgZ2Jvb2xlYW4gYWxsb3df
dXRmOCkKK3sKKyAgdW5zaWduZWQgY2hhciBjOworICBjb25zdCBjaGFyICplbmQ7CisgIHN0YXRp
YyBjb25zdCBnY2hhciBoZXhbXSA9ICIwMTIzNDU2Nzg5QUJDREVGIjsKKworICBnX3JldHVybl92
YWxfaWZfZmFpbCAoc3RyaW5nICE9IE5VTEwsIE5VTEwpOworICBnX3JldHVybl92YWxfaWZfZmFp
bCAodW5lc2NhcGVkICE9IE5VTEwsIE5VTEwpOworCisgIGVuZCA9IHVuZXNjYXBlZCArIHN0cmxl
biAodW5lc2NhcGVkKTsKKyAgCisgIHdoaWxlICgoYyA9ICp1bmVzY2FwZWQpICE9IDApCisgICAg
eworICAgICAgaWYgKGMgPj0gMHg4MCAmJiBhbGxvd191dGY4ICYmCisJICBndW5pY2hhcl9vayAo
Z191dGY4X2dldF9jaGFyX3ZhbGlkYXRlZCAodW5lc2NhcGVkLCBlbmQgLSB1bmVzY2FwZWQpKSkK
Kwl7CisJICBpbnQgbGVuID0gZ191dGY4X3NraXAgW2NdOworCSAgZ19zdHJpbmdfYXBwZW5kX2xl
biAoc3RyaW5nLCB1bmVzY2FwZWQsIGxlbik7CisJICB1bmVzY2FwZWQgKz0gbGVuOworCX0KKyAg
ICAgIGVsc2UgaWYgKGlzX3ZhbGlkIChjLCByZXNlcnZlZF9jaGFyc19hbGxvd2VkKSkKKwl7CisJ
ICBnX3N0cmluZ19hcHBlbmRfYyAoc3RyaW5nLCBjKTsKKwkgIHVuZXNjYXBlZCsrOworCX0KKyAg
ICAgIGVsc2UKKwl7CisJICBnX3N0cmluZ19hcHBlbmRfYyAoc3RyaW5nLCAnJScpOworCSAgZ19z
dHJpbmdfYXBwZW5kX2MgKHN0cmluZywgaGV4WygoZ3VjaGFyKWMpID4+IDRdKTsKKwkgIGdfc3Ry
aW5nX2FwcGVuZF9jIChzdHJpbmcsIGhleFsoKGd1Y2hhciljKSAmIDB4Zl0pOworCSAgdW5lc2Nh
cGVkKys7CisJfQorICAgIH0KKworICByZXR1cm4gc3RyaW5nOworfQorCisvKiBnX3VyaV9lc2Nh
cGVfc3RyaW5nIHdhcyBjb3BpZWQgZm9yIGdsaWIvZ3VyaWZ1bmNzLmMgaW4gdGhlIGdsaWIgcGFj
a2FnZS4KKyAqCisgKiBPcmlnaW5hbCBjb3B5cmlnaHQ6CisgKiAgIENvcHlyaWdodCAoQykgMjAw
Ni0yMDA3IFJlZCBIYXQsIEluYy4KKyAqICAgQXV0aG9yOiBBbGV4YW5kZXIgTGFyc3NvbiA8YWxl
eGxAcmVkaGF0LmNvbT4KKyAqCisgKiBQbGVhc2UgZG9uJ3QgY2hhbmdlIHRoZSBpbmRlbnRhdGlv
biBzbyBpdCdzIGVhc2llciB0byB1cGRhdGUgdGhpcyBmdW5jdGlvbgorICogaWYgaXQncyBjaGFu
Z2VkIGluIGdsaWIuCisgKi8KK3N0YXRpYyBjaGFyICoKK2dfdXJpX2VzY2FwZV9zdHJpbmcgKGNv
bnN0IGNoYXIgKnVuZXNjYXBlZCwKKwkJICAgICBjb25zdCBjaGFyICAqcmVzZXJ2ZWRfY2hhcnNf
YWxsb3dlZCwKKwkJICAgICBnYm9vbGVhbiAgICAgYWxsb3dfdXRmOCkKK3sKKyAgR1N0cmluZyAq
czsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAodW5lc2NhcGVkICE9IE5VTEwsIE5VTEwpOwor
CisgIHMgPSBnX3N0cmluZ19zaXplZF9uZXcgKHN0cmxlbiAodW5lc2NhcGVkKSArIDEwKTsKKyAg
CisgIF9nX3N0cmluZ19hcHBlbmRfdXJpX2VzY2FwZWQgKHMsIHVuZXNjYXBlZCwgcmVzZXJ2ZWRf
Y2hhcnNfYWxsb3dlZCwgYWxsb3dfdXRmOCk7CisgIAorICByZXR1cm4gZ19zdHJpbmdfZnJlZSAo
cywgRkFMU0UpOworfQorI2VuZGlmIC8vICNpZiAhUExBVEZPUk0oV0lOX09TKSAmJiAhR1RLX0NI
RUNLX1ZFUlNJT04oMiwgMTYsIDApCisKKy8qIE9uIGxpbnV4IGZpbGUgbmFtZXMgYXJlIGp1c3Qg
cmF3IGJ5dGVzLCBzbyBhbHNvIHN0cmluZ3MgdGhhdCBjYW5ub3QgYmUgZW5jb2RlZCBpbiBhbnkg
d2F5CisgKiBhcmUgdmFsaWQgZmlsZSBuYW1lcy4gVGhpcyBtZWFuIHRoYXQgd2UgY2Fubm90IGp1
c3Qgc3RvcmUgYSBmaWxlIG5hbWUgYXMtaXMgaW4gYSBTdHJpbmcKKyAqIGJ1dCB3ZSBoYXZlIHRv
IGVzY2FwZSBpdC4KKyAqIE9uIFdpbmRvd3MgdGhlIEdMaWIgZmlsZSBuYW1lIGVuY29kaW5nIGlz
IGFsd2F5cyBVVEYtOCBzbyB3ZSBjYW4gb3B0aW1pemUgdGhpcyBjYXNlLiAqLworU3RyaW5nIGZp
bGVuYW1lVG9TdHJpbmcoY29uc3QgY2hhciogZmlsZW5hbWUpCit7CisgICAgaWYgKCFmaWxlbmFt
ZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisjaWYgUExBVEZPUk0oV0lOX09TKQorICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGZpbGVuYW1lKTsKKyNlbHNlCisgICAgZ2NoYXIqIGVz
Y2FwZWRTdHJpbmcgPSBnX3VyaV9lc2NhcGVfc3RyaW5nKGZpbGVuYW1lLCAiLzoiLCBmYWxzZSk7
CisgICAgU3RyaW5nIHN0cmluZyhlc2NhcGVkU3RyaW5nKTsKKyAgICBnX2ZyZWUoZXNjYXBlZFN0
cmluZyk7CisgICAgcmV0dXJuIHN0cmluZzsKKyNlbmRpZgorfQorCitjaGFyKiBmaWxlbmFtZUZy
b21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisjaWYgUExBVEZPUk0oV0lOX09TKQor
ICAgIHJldHVybiBnX3N0cmR1cChzdHJpbmcudXRmOCgpLmRhdGEoKSk7CisjZWxzZQorICAgIHJl
dHVybiBnX3VyaV91bmVzY2FwZV9zdHJpbmcoc3RyaW5nLnV0ZjgoKS5kYXRhKCksIDApOworI2Vu
ZGlmCit9CisKIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgYm9v
bCByZXN1bHQgPSBmYWxzZTsKLSAgICBnY2hhciogZmlsZW5hbWUgPSBnX2ZpbGVuYW1lX2Zyb21f
dXRmOChwYXRoLnV0ZjgoKS5kYXRhKCksIC0xLCAwLCAwLCAwKTsKKyAgICBnY2hhciogZmlsZW5h
bWUgPSBmaWxlbmFtZUZyb21TdHJpbmcocGF0aCk7CiAKICAgICBpZiAoZmlsZW5hbWUpIHsKICAg
ICAgICAgcmVzdWx0ID0gZ19maWxlX3Rlc3QoZmlsZW5hbWUsIEdfRklMRV9URVNUX0VYSVNUUyk7
CkBAIC01MCw3ICsxODUsNyBAQAogYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkK
IHsKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIGdjaGFyKiBmaWxlbmFtZSA9IGdfZmls
ZW5hbWVfZnJvbV91dGY4KHBhdGgudXRmOCgpLmRhdGEoKSwgLTEsIDAsIDAsIDApOworICAgIGdj
aGFyKiBmaWxlbmFtZSA9IGZpbGVuYW1lRnJvbVN0cmluZyhwYXRoKTsKIAogICAgIGlmIChmaWxl
bmFtZSkgewogICAgICAgICByZXN1bHQgPSBnX3JlbW92ZShmaWxlbmFtZSkgPT0gMDsKQEAgLTYz
LDcgKzE5OCw3IEBACiBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0
aCkKIHsKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIGdjaGFyKiBmaWxlbmFtZSA9IGdf
ZmlsZW5hbWVfZnJvbV91dGY4KHBhdGgudXRmOCgpLmRhdGEoKSwgLTEsIDAsIDAsIDApOworICAg
IGdjaGFyKiBmaWxlbmFtZSA9IGZpbGVuYW1lRnJvbVN0cmluZyhwYXRoKTsKIAogICAgIGlmIChm
aWxlbmFtZSkgewogICAgICAgICByZXN1bHQgPSBnX3JtZGlyKGZpbGVuYW1lKSA9PSAwOwpAQCAt
NzUsNyArMjEwLDcgQEAKIAogYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxv
bmcgbG9uZyYgcmVzdWx0U2l6ZSkKIHsKLSAgICBnY2hhciogZmlsZW5hbWUgPSBnX2ZpbGVuYW1l
X2Zyb21fdXRmOChwYXRoLnV0ZjgoKS5kYXRhKCksIC0xLCAwLCAwLCAwKTsKKyAgICBnY2hhciog
ZmlsZW5hbWUgPSBmaWxlbmFtZUZyb21TdHJpbmcocGF0aCk7CiAgICAgaWYgKCFmaWxlbmFtZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC05MSw3ICsyMjYsNyBAQAogCiBib29sIGdldEZp
bGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiBtb2RpZmllZFRp
bWUpCiB7Ci0gICAgZ2NoYXIqIGZpbGVuYW1lID0gZ19maWxlbmFtZV9mcm9tX3V0ZjgocGF0aC51
dGY4KCkuZGF0YSgpLCAtMSwgMCwgMCwgMCk7CisgICAgZ2NoYXIqIGZpbGVuYW1lID0gZmlsZW5h
bWVGcm9tU3RyaW5nKHBhdGgpOwogICAgIGlmICghZmlsZW5hbWUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApAQCAtMTE2LDcgKzI1MSw3IEBACiAKIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNv
bnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBnY2hhciogZmlsZW5hbWUgPSBnX2ZpbGVuYW1lX2Zy
b21fdXRmOChwYXRoLnV0ZjgoKS5kYXRhKCksIC0xLCAwLCAwLCAwKTsKKyAgICBnY2hhciogZmls
ZW5hbWUgPSBmaWxlbmFtZUZyb21TdHJpbmcocGF0aCk7CiAgICAgaWYgKCFmaWxlbmFtZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMjgsMTQgKzI2MywxNiBAQAogCiBTdHJpbmcgaG9t
ZURpcmVjdG9yeVBhdGgoKQogewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGdfZ2V0X2hv
bWVfZGlyKCkpOworICAgIHJldHVybiBmaWxlbmFtZVRvU3RyaW5nKGdfZ2V0X2hvbWVfZGlyKCkp
OwogfQogCiBTdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aE5hbWUpCiB7
Ci0gICAgY2hhciogYmFzZU5hbWUgPSBnX3BhdGhfZ2V0X2Jhc2VuYW1lKHBhdGhOYW1lLnV0Zjgo
KS5kYXRhKCkpOworICAgIGNoYXIqIHRtcEZpbGVuYW1lID0gZmlsZW5hbWVGcm9tU3RyaW5nKHBh
dGhOYW1lKTsKKyAgICBjaGFyKiBiYXNlTmFtZSA9IGdfcGF0aF9nZXRfYmFzZW5hbWUodG1wRmls
ZW5hbWUpOwogICAgIFN0cmluZyBmaWxlTmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoYmFzZU5hbWUp
OwogICAgIGdfZnJlZShiYXNlTmFtZSk7CisgICAgZ19mcmVlKHRtcEZpbGVuYW1lKTsKIAogICAg
IHJldHVybiBmaWxlTmFtZTsKIH0KQEAgLTE1MCw3ICsyODcsOCBAQAogewogICAgIFZlY3RvcjxT
dHJpbmc+IGVudHJpZXM7CiAKLSAgICBHRGlyKiBkaXIgPSBnX2Rpcl9vcGVuKChwYXRoLnV0Zjgo
KSkuZGF0YSgpLCAwLCAwKTsKKyAgICBnY2hhciogZmlsZW5hbWUgPSBmaWxlbmFtZUZyb21TdHJp
bmcocGF0aCk7CisgICAgR0RpciogZGlyID0gZ19kaXJfb3BlbihmaWxlbmFtZSwgMCwgMCk7CiAg
ICAgaWYgKCFkaXIpCiAgICAgICAgIHJldHVybiBlbnRyaWVzOwogCkBAIC0xNTksMTEgKzI5Nywx
MiBAQAogICAgICAgICBpZiAoIWdfcGF0dGVybl9tYXRjaF9zdHJpbmcocHNwZWMsIG5hbWUpKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgZ2NoYXIqIGVudHJ5ID0gZ19idWlsZF9m
aWxlbmFtZSgocGF0aC51dGY4KCkpLmRhdGEoKSwgbmFtZSwgTlVMTCk7Ci0gICAgICAgIGVudHJp
ZXMuYXBwZW5kKGVudHJ5KTsKKyAgICAgICAgZ2NoYXIqIGVudHJ5ID0gZ19idWlsZF9maWxlbmFt
ZShmaWxlbmFtZSwgbmFtZSwgTlVMTCk7CisgICAgICAgIGVudHJpZXMuYXBwZW5kKGZpbGVuYW1l
VG9TdHJpbmcoZW50cnkpKTsKICAgICAgICAgZ19mcmVlKGVudHJ5KTsKICAgICB9CiAgICAgZ19k
aXJfY2xvc2UoZGlyKTsKKyAgICBnX2ZyZWUoZmlsZW5hbWUpOwogCiAgICAgcmV0dXJuIGVudHJp
ZXM7CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAkocmV2aXNpb25lIDM2NDQ0KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgJKGNvcGlhIGxvY2FsZSkKQEAgLTE1OCw2ICsxNTgs
MTEgQEAKIGJvb2wgc2FmZUNyZWF0ZUZpbGUoY29uc3QgU3RyaW5nJiwgQ0ZEYXRhUmVmKTsKICNl
bmRpZgogCisjaWYgUExBVEZPUk0oR1RLKQorU3RyaW5nIGZpbGVuYW1lVG9TdHJpbmcoY29uc3Qg
Y2hhciogZmlsZW5hbWUpOworY2hhciogZmlsZW5hbWVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYg
c3RyaW5nKTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBG
aWxlU3lzdGVtX2gKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbmUgMzY0NDQpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkoY29w
aWEgbG9jYWxlKQpAQCAtMSwzICsxLDM2IEBACisyMDA4LTA5LTE1ICBNYXJjbyBCYXJpc2lvbmUg
IDxtYXJjby5iYXJpc2lvbmVAY29sbGFib3JhLmNvLnVrPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNjY0CisgICAgICAgIFtHVEtdIEZpbGUgbmFtZXMgYXJlIG5vdCBhbHdheXMg
ZW5jb2RhYmxlIGluIFVURi04CisKKyAgICAgICAgT24gTGludXggZmlsZSBuYW1lcyBhcmUganVz
dCByYXcgZGF0YSBhbmQgY2Fubm90IGFsd2F5cyBiZSBkaXJlY3RseQorICAgICAgICBlbmNvZGVk
IGluIFVURi04IG9yIGluIGFueSBvdGhlciBlbmNvZGluZ3MsIHNvIHdlIGVzY2FwZSB0aGVtIGJl
Zm9yZQorICAgICAgICBzdG9yaW5nIHRoZSBmaWxlIG5hbWUgaW4gYSBTdHJpbmcgYW5kIHVuZXNj
YXBlIHRoZW0gYmVmb3JlIHBhc3NpbmcKKyAgICAgICAgdGhlbSB0byBuYXRpdmUgZnVuY3Rpb25z
IGhhbmRsaW5nIGZpbGVzLgorCisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5oOiBBZGQg
ZmlsZW5hbWVUb1N0cmluZyBhbmQgZmlsZW5hbWVGcm9tU3RyaW5nLgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9GaWxlQ2hvb3Nlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdCeUFk
b3B0aW5nRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpGaWxlQ2hvb3Nlcjo6YmFzZW5hbWVGb3JXaWR0aCk6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzX3ZhbGlkKToK
KyAgICAgICAgKFdlYkNvcmU6Omd1bmljaGFyX29rKToKKyAgICAgICAgKFdlYkNvcmU6Omdfc3Ry
aW5nX2FwcGVuZF91cmlfZXNjYXBlZCk6CisgICAgICAgIChXZWJDb3JlOjpnX3VyaV9lc2NhcGVf
c3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6ZmlsZW5hbWVGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVFeGlz
dHMpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpk
ZWxldGVFbXB0eURpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6CisgICAgICAgIChXZWJD
b3JlOjptYWtlQWxsRGlyZWN0b3JpZXMpOgorICAgICAgICAoV2ViQ29yZTo6aG9tZURpcmVjdG9y
eVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6cGF0aEdldEZpbGVOYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6Omxpc3REaXJlY3RvcnkpOgorCiAyMDA4LTA5LTE1ICBUb3IgQXJuZSBWZXN0YsO4ICA8
dGF2ZXN0Ym9AdHJvbGx0ZWNoLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4K
</data>
<flag name="review"
          id="10464"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24021</attachid>
            <date>2008-10-02 09:46:32 -0700</date>
            <delta_ts>2008-10-15 13:34:28 -0700</delta_ts>
            <desc>Add filenameToString, filenameFromString and filenameForDisplay to FileSystemGtk.cpp</desc>
            <filename>filename-encoding.patch</filename>
            <type>text/plain</type>
            <size>16355</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQkocmV2aXNpb25lIDM3MTg5KQorKysgV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQko
Y29waWEgbG9jYWxlKQpAQCAtMjA0Niw2ICsyMDQ2LDggQEAKIAlXZWJDb3JlL3BsYXRmb3JtL2d0
ay9XaWRnZXRHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGsyZHJhd2luZy5jIFwK
IAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGtkcmF3aW5nLmggXAorCVdlYkNvcmUvcGxhdGZvcm0v
Z3RrL2d1cmllc2NhcGUuYyBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3VyaWVzY2FwZS5oIFwK
IAlXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIFwKIAlXZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIFwKIAlX
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaCBcCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlQ2hvb3Nlckd0ay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZUNob29zZXJHdGsuY3BwCShyZXZpc2lvbmUgMzcx
ODkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlQ2hvb3Nlckd0ay5jcHAJKGNvcGlhIGxv
Y2FsZSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGcmFtZVZp
ZXcuaCIKICNpbmNsdWRlICJJY29uLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgpA
QCAtNDUsMTQgKzQ2LDkgQEAKICAgICBpZiAoIXN5c3RlbUZpbGVuYW1lKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBnY2hhciogZmlsZW5hbWUgPSBnX2ZpbGVuYW1lX3RvX3V0Zjgoc3lz
dGVtRmlsZW5hbWUsIC0xLCAwLCAwLCAwKTsKKyAgICByZXN1bHQgPSBmaWxlbmFtZVRvU3RyaW5n
KHN5c3RlbUZpbGVuYW1lKTsKICAgICBnX2ZyZWUoc3lzdGVtRmlsZW5hbWUpOwogCi0gICAgaWYg
KCFmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVzdWx0ID0gU3RyaW5n
Ojpmcm9tVVRGOChmaWxlbmFtZSk7Ci0gICAgZ19mcmVlKGZpbGVuYW1lKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtODgsMTMgKzg0LDEwIEBACiAgICAgU3RyaW5nIHN0cmluZyA9IGZpbGVC
dXR0b25Ob0ZpbGVTZWxlY3RlZExhYmVsKCk7CiAKICAgICBpZiAoIW1fZmlsZW5hbWUuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIGdjaGFyKiBzeXN0ZW1GaWxlbmFtZSA9IGdfZmlsZW5hbWVfZnJvbV91
dGY4KG1fZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgLTEsIDAsIDAsIDApOwotICAgICAgICBpZiAo
c3lzdGVtRmlsZW5hbWUpIHsKLSAgICAgICAgICAgIGdjaGFyKiBzeXN0ZW1CYXNlbmFtZSA9IGdf
cGF0aF9nZXRfYmFzZW5hbWUoc3lzdGVtRmlsZW5hbWUpOwotICAgICAgICAgICAgZ19mcmVlKHN5
c3RlbUZpbGVuYW1lKTsKLQotICAgICAgICAgICAgc3RyaW5nQnlBZG9wdGluZ0ZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihzeXN0ZW1CYXNlbmFtZSwgc3RyaW5nKTsKLSAgICAgICAgfQorICAgICAg
ICBnY2hhciogc3lzdGVtRmlsZW5hbWUgPSBmaWxlbmFtZUZyb21TdHJpbmcobV9maWxlbmFtZSk7
CisgICAgICAgIGdjaGFyKiBzeXN0ZW1CYXNlbmFtZSA9IGdfcGF0aF9nZXRfYmFzZW5hbWUoc3lz
dGVtRmlsZW5hbWUpOworICAgICAgICBnX2ZyZWUoc3lzdGVtRmlsZW5hbWUpOworICAgICAgICBz
dHJpbmdCeUFkb3B0aW5nRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN5c3RlbUJhc2VuYW1lLCBz
dHJpbmcpOwogICAgIH0KIAogICAgIHJldHVybiBTdHJpbmdUcnVuY2F0b3I6OmNlbnRlclRydW5j
YXRlKHN0cmluZywgd2lkdGgsIGZvbnQsIGZhbHNlKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3RrL2d1cmllc2NhcGUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9ndXJp
ZXNjYXBlLmMJKHJldmlzaW9uZSAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3VyaWVzY2Fw
ZS5jCShyZXZpc2lvbmUgMCkKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggQ29sbGFib3JhLCBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5NyBQZXRlciBN
YXR0aXMsIFNwZW5jZXIgS2ltYmFsbCBhbmQgSm9zaCBNYWNEb25hbGQKKyAqIENvcHlyaWdodCAo
QykgMTk5Ny0yMDAwIFRoZSBHTGliIFRlYW0KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDA3IFJl
ZCBIYXQsIEluYy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2luY2x1ZGUgImd1cmllc2NhcGUuaCIKKworI2luY2x1ZGUgPHN0cmluZy5o
PgorCisjaWYgIVBMQVRGT1JNKFdJTl9PUykgJiYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigyLCAxNiwg
MCkKKworLyogaXNfdmFsaWQsIGd1bmljaGFyX29rIGFuZCBnX3N0cmluZ19hcHBlbmRfdXJpX2Vz
Y2FwZWQgd2VyZSBjb3BpZWQgZm9yIGdsaWIvZ3N0cmluZy5jCisgKiBpbiB0aGUgZ2xpYiBwYWNr
YWdlLgorICoKKyAqIE9yaWdpbmFsIGNvcHlyaWdodDoKKyAqICAgQ29weXJpZ2h0IChDKSAxOTk1
LTE5OTcgIFBldGVyIE1hdHRpcywgU3BlbmNlciBLaW1iYWxsIGFuZCBKb3NoIE1hY0RvbmFsZAor
ICoKKyAqICAgTW9kaWZpZWQgYnkgdGhlIEdMaWIgVGVhbSBhbmQgb3RoZXJzIDE5OTctMjAwMC4g
IFNlZSB0aGUgQVVUSE9SUworICogICBmaWxlIGZvciBhIGxpc3Qgb2YgcGVvcGxlIG9uIHRoZSBH
TGliIFRlYW0uICBTZWUgdGhlIENoYW5nZUxvZworICogICBmaWxlcyBmb3IgYSBsaXN0IG9mIGNo
YW5nZXMuICBUaGVzZSBmaWxlcyBhcmUgZGlzdHJpYnV0ZWQgd2l0aAorICogICBHTGliIGF0IGZ0
cDovL2Z0cC5ndGsub3JnL3B1Yi9ndGsvLiAKKyAqCisgKiBQbGVhc2UgZG9uJ3QgY2hhbmdlIHRo
ZSBpbmRlbnRhdGlvbiBzbyBpdCdzIGVhc2llciB0byB1cGRhdGUgdGhlc2UgZnVuY3Rpb25zCisg
KiBpZiB0aGV5IGFyZSBjaGFuZ2VkIGluIGdsaWIuCisgKi8KK3N0YXRpYyBnYm9vbGVhbgoraXNf
dmFsaWQgKGNoYXIgYywgY29uc3QgY2hhciAqcmVzZXJ2ZWRfY2hhcnNfYWxsb3dlZCkKK3sKKyAg
aWYgKGdfYXNjaWlfaXNhbG51bSAoYykgfHwKKyAgICAgIGMgPT0gJy0nIHx8CisgICAgICBjID09
ICcuJyB8fAorICAgICAgYyA9PSAnXycgfHwKKyAgICAgIGMgPT0gJ34nKQorICAgIHJldHVybiBU
UlVFOworCisgIGlmIChyZXNlcnZlZF9jaGFyc19hbGxvd2VkICYmCisgICAgICBzdHJjaHIgKHJl
c2VydmVkX2NoYXJzX2FsbG93ZWQsIGMpICE9IE5VTEwpCisgICAgcmV0dXJuIFRSVUU7CisgIAor
ICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiAKK2d1bmljaGFyX29rIChndW5p
Y2hhciBjKQoreworICByZXR1cm4KKyAgICAoYyAhPSAoZ3VuaWNoYXIpIC0yKSAmJgorICAgIChj
ICE9IChndW5pY2hhcikgLTEpOworfQorCitzdGF0aWMgR1N0cmluZyAqCitnX3N0cmluZ19hcHBl
bmRfdXJpX2VzY2FwZWQgKEdTdHJpbmcgKnN0cmluZywKKwkJCSAgICAgY29uc3QgY2hhciAqdW5l
c2NhcGVkLAorCQkJICAgICBjb25zdCBjaGFyICpyZXNlcnZlZF9jaGFyc19hbGxvd2VkLAorCQkJ
ICAgICBnYm9vbGVhbiBhbGxvd191dGY4KQoreworICB1bnNpZ25lZCBjaGFyIGM7CisgIGNvbnN0
IGNoYXIgKmVuZDsKKyAgc3RhdGljIGNvbnN0IGdjaGFyIGhleFsxNl0gPSAiMDEyMzQ1Njc4OUFC
Q0RFRiI7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHN0cmluZyAhPSBOVUxMLCBOVUxMKTsK
KyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHVuZXNjYXBlZCAhPSBOVUxMLCBOVUxMKTsKKworICBl
bmQgPSB1bmVzY2FwZWQgKyBzdHJsZW4gKHVuZXNjYXBlZCk7CisgIAorICB3aGlsZSAoKGMgPSAq
dW5lc2NhcGVkKSAhPSAwKQorICAgIHsKKyAgICAgIGlmIChjID49IDB4ODAgJiYgYWxsb3dfdXRm
OCAmJgorCSAgZ3VuaWNoYXJfb2sgKGdfdXRmOF9nZXRfY2hhcl92YWxpZGF0ZWQgKHVuZXNjYXBl
ZCwgZW5kIC0gdW5lc2NhcGVkKSkpCisJeworCSAgaW50IGxlbiA9IGdfdXRmOF9za2lwIFtjXTsK
KwkgIGdfc3RyaW5nX2FwcGVuZF9sZW4gKHN0cmluZywgdW5lc2NhcGVkLCBsZW4pOworCSAgdW5l
c2NhcGVkICs9IGxlbjsKKwl9CisgICAgICBlbHNlIGlmIChpc192YWxpZCAoYywgcmVzZXJ2ZWRf
Y2hhcnNfYWxsb3dlZCkpCisJeworCSAgZ19zdHJpbmdfYXBwZW5kX2MgKHN0cmluZywgYyk7CisJ
ICB1bmVzY2FwZWQrKzsKKwl9CisgICAgICBlbHNlCisJeworCSAgZ19zdHJpbmdfYXBwZW5kX2Mg
KHN0cmluZywgJyUnKTsKKwkgIGdfc3RyaW5nX2FwcGVuZF9jIChzdHJpbmcsIGhleFsoKGd1Y2hh
ciljKSA+PiA0XSk7CisJICBnX3N0cmluZ19hcHBlbmRfYyAoc3RyaW5nLCBoZXhbKChndWNoYXIp
YykgJiAweGZdKTsKKwkgIHVuZXNjYXBlZCsrOworCX0KKyAgICB9CisKKyAgcmV0dXJuIHN0cmlu
ZzsKK30KKworLyogZ191cmlfZXNjYXBlX3N0cmluZyB3YXMgY29waWVkIGZvciBnbGliL2d1cmlm
dW5jcy5jIGluIHRoZSBnbGliIHBhY2thZ2UgYW5zCisgKiByZW5hbWVkIHRvIF93ZWJraXRfZ191
cmlfZXNjYXBlX3N0cmluZyB0byBhdm9pZCBleHBvcnRpbmcgYSBzeW1ib2wgd2l0aCB0aGUKKyAq
ICJnXyIgcHJlZml4LgorICoKKyAqIE9yaWdpbmFsIGNvcHlyaWdodDoKKyAqICAgQ29weXJpZ2h0
IChDKSAyMDA2LTIwMDcgUmVkIEhhdCwgSW5jLgorICogICBBdXRob3I6IEFsZXhhbmRlciBMYXJz
c29uIDxhbGV4bEByZWRoYXQuY29tPgorICoKKyAqIFBsZWFzZSBkb24ndCBjaGFuZ2UgdGhlIGlu
ZGVudGF0aW9uIHNvIGl0J3MgZWFzaWVyIHRvIHVwZGF0ZSB0aGlzIGZ1bmN0aW9uCisgKiBpZiBp
dCdzIGNoYW5nZWQgaW4gZ2xpYi4KKyAqLworY2hhciAqCitfd2ViY29yZV9nX3VyaV9lc2NhcGVf
c3RyaW5nIChjb25zdCBjaGFyICp1bmVzY2FwZWQsCisJCSAgICAgY29uc3QgY2hhciAgKnJlc2Vy
dmVkX2NoYXJzX2FsbG93ZWQsCisJCSAgICAgZ2Jvb2xlYW4gICAgIGFsbG93X3V0ZjgpCit7Cisg
IEdTdHJpbmcgKnM7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHVuZXNjYXBlZCAhPSBOVUxM
LCBOVUxMKTsKKworICBzID0gZ19zdHJpbmdfc2l6ZWRfbmV3IChzdHJsZW4gKHVuZXNjYXBlZCkg
KyAxMCk7CisgIAorICBnX3N0cmluZ19hcHBlbmRfdXJpX2VzY2FwZWQgKHMsIHVuZXNjYXBlZCwg
cmVzZXJ2ZWRfY2hhcnNfYWxsb3dlZCwgYWxsb3dfdXRmOCk7CisgIAorICByZXR1cm4gZ19zdHJp
bmdfZnJlZSAocywgRkFMU0UpOworfQorI2VuZGlmIC8vICNpZiAhUExBVEZPUk0oV0lOX09TKSAm
JiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTYsIDApCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2d0
ay9GaWxlU3lzdGVtR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9G
aWxlU3lzdGVtR3RrLmNwcAkocmV2aXNpb25lIDM3MTg5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRmlsZVN5c3RlbUd0ay5jcHAJKGNvcGlhIGxvY2FsZSkKQEAgLTIyLDYgKzIyLDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAKKyNpbmNsdWRlICJn
dXJpZXNjYXBlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIkNTdHJpbmcuaCIKQEAgLTM0LDEwICszNSw1NyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8qIE9uIGxpbnV4IGZpbGUgbmFtZXMgYXJlIGp1c3Qg
cmF3IGJ5dGVzLCBzbyBhbHNvIHN0cmluZ3MgdGhhdCBjYW5ub3QgYmUgZW5jb2RlZCBpbiBhbnkg
d2F5CisgKiBhcmUgdmFsaWQgZmlsZSBuYW1lcy4gVGhpcyBtZWFuIHRoYXQgd2UgY2Fubm90IGp1
c3Qgc3RvcmUgYSBmaWxlIG5hbWUgYXMtaXMgaW4gYSBTdHJpbmcKKyAqIGJ1dCB3ZSBoYXZlIHRv
IGVzY2FwZSBpdC4KKyAqIE9uIFdpbmRvd3MgdGhlIEdMaWIgZmlsZSBuYW1lIGVuY29kaW5nIGlz
IGFsd2F5cyBVVEYtOCBzbyB3ZSBjYW4gb3B0aW1pemUgdGhpcyBjYXNlLiAqLworU3RyaW5nIGZp
bGVuYW1lVG9TdHJpbmcoY29uc3QgY2hhciogZmlsZW5hbWUpCit7CisgICAgaWYgKCFmaWxlbmFt
ZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisjaWYgUExBVEZPUk0oV0lOX09TKQorICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGZpbGVuYW1lKTsKKyNlbHNlCisgICAgZ2NoYXIqIGVz
Y2FwZWRTdHJpbmcgPSBnX3VyaV9lc2NhcGVfc3RyaW5nKGZpbGVuYW1lLCAiLzoiLCBmYWxzZSk7
CisgICAgU3RyaW5nIHN0cmluZyhlc2NhcGVkU3RyaW5nKTsKKyAgICBnX2ZyZWUoZXNjYXBlZFN0
cmluZyk7CisgICAgcmV0dXJuIHN0cmluZzsKKyNlbmRpZgorfQorCitjaGFyKiBmaWxlbmFtZUZy
b21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisjaWYgUExBVEZPUk0oV0lOX09TKQor
ICAgIHJldHVybiBnX3N0cmR1cChzdHJpbmcudXRmOCgpLmRhdGEoKSk7CisjZWxzZQorICAgIHJl
dHVybiBnX3VyaV91bmVzY2FwZV9zdHJpbmcoc3RyaW5nLnV0ZjgoKS5kYXRhKCksIDApOworI2Vu
ZGlmCit9CisKKy8vIENvbnZlcnRzIGEgc3RyaW5nIHRvIHNvbWV0aGluZyBzdWl0YWJsZSB0byBi
ZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuCitTdHJpbmcgZmlsZW5hbWVGb3JEaXNwbGF5KGNvbnN0
IFN0cmluZyYgc3RyaW5nKQoreworI2lmIFBMQVRGT1JNKFdJTl9PUykKKyAgICByZXR1cm4gc3Ry
aW5nOworI2Vsc2UKKyAgICBnY2hhciAqZmlsZW5hbWUgPSBmaWxlbmFtZUZyb21TdHJpbmcoc3Ry
aW5nKTsKKyAgICBnY2hhciAqZGlzcGxheSA9IGdfZmlsZW5hbWVfdG9fdXRmOChmaWxlbmFtZSwg
MCwgMCwgMCwgMCk7CisgICAgZ19mcmVlKGZpbGVuYW1lKTsKKyAgICBpZiAoIWRpc3BsYXkpCisg
ICAgICAgIHJldHVybiBzdHJpbmc7CisKKyAgICBTdHJpbmcgZGlzcGxheVN0cmluZyA9IFN0cmlu
Zzo6ZnJvbVVURjgoZGlzcGxheSk7CisgICAgZ19mcmVlKGRpc3BsYXkpOworCisgICAgcmV0dXJu
IGRpc3BsYXlTdHJpbmc7CisjZW5kaWYKK30KKwogYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIHsKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIGdjaGFyKiBmaWxlbmFt
ZSA9IGdfZmlsZW5hbWVfZnJvbV91dGY4KHBhdGgudXRmOCgpLmRhdGEoKSwgLTEsIDAsIDAsIDAp
OworICAgIGdjaGFyKiBmaWxlbmFtZSA9IGZpbGVuYW1lRnJvbVN0cmluZyhwYXRoKTsKIAogICAg
IGlmIChmaWxlbmFtZSkgewogICAgICAgICByZXN1bHQgPSBnX2ZpbGVfdGVzdChmaWxlbmFtZSwg
R19GSUxFX1RFU1RfRVhJU1RTKTsKQEAgLTUwLDcgKzk4LDcgQEAKIGJvb2wgZGVsZXRlRmlsZShj
b25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBnY2hh
ciogZmlsZW5hbWUgPSBnX2ZpbGVuYW1lX2Zyb21fdXRmOChwYXRoLnV0ZjgoKS5kYXRhKCksIC0x
LCAwLCAwLCAwKTsKKyAgICBnY2hhciogZmlsZW5hbWUgPSBmaWxlbmFtZUZyb21TdHJpbmcocGF0
aCk7CiAKICAgICBpZiAoZmlsZW5hbWUpIHsKICAgICAgICAgcmVzdWx0ID0gZ19yZW1vdmUoZmls
ZW5hbWUpID09IDA7CkBAIC02Myw3ICsxMTEsNyBAQAogYm9vbCBkZWxldGVFbXB0eURpcmVjdG9y
eShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBn
Y2hhciogZmlsZW5hbWUgPSBnX2ZpbGVuYW1lX2Zyb21fdXRmOChwYXRoLnV0ZjgoKS5kYXRhKCks
IC0xLCAwLCAwLCAwKTsKKyAgICBnY2hhciogZmlsZW5hbWUgPSBmaWxlbmFtZUZyb21TdHJpbmco
cGF0aCk7CiAKICAgICBpZiAoZmlsZW5hbWUpIHsKICAgICAgICAgcmVzdWx0ID0gZ19ybWRpcihm
aWxlbmFtZSkgPT0gMDsKQEAgLTc1LDcgKzEyMyw3IEBACiAKIGJvb2wgZ2V0RmlsZVNpemUoY29u
c3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJlc3VsdFNpemUpCiB7Ci0gICAgZ2NoYXIqIGZp
bGVuYW1lID0gZ19maWxlbmFtZV9mcm9tX3V0ZjgocGF0aC51dGY4KCkuZGF0YSgpLCAtMSwgMCwg
MCwgMCk7CisgICAgZ2NoYXIqIGZpbGVuYW1lID0gZmlsZW5hbWVGcm9tU3RyaW5nKHBhdGgpOwog
ICAgIGlmICghZmlsZW5hbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtOTEsNyArMTM5
LDcgQEAKIAogYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgs
IHRpbWVfdCYgbW9kaWZpZWRUaW1lKQogewotICAgIGdjaGFyKiBmaWxlbmFtZSA9IGdfZmlsZW5h
bWVfZnJvbV91dGY4KHBhdGgudXRmOCgpLmRhdGEoKSwgLTEsIDAsIDAsIDApOworICAgIGdjaGFy
KiBmaWxlbmFtZSA9IGZpbGVuYW1lRnJvbVN0cmluZyhwYXRoKTsKICAgICBpZiAoIWZpbGVuYW1l
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTExNiw3ICsxNjQsNyBAQAogCiBib29sIG1h
a2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgZ2NoYXIqIGZpbGVu
YW1lID0gZ19maWxlbmFtZV9mcm9tX3V0ZjgocGF0aC51dGY4KCkuZGF0YSgpLCAtMSwgMCwgMCwg
MCk7CisgICAgZ2NoYXIqIGZpbGVuYW1lID0gZmlsZW5hbWVGcm9tU3RyaW5nKHBhdGgpOwogICAg
IGlmICghZmlsZW5hbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTI4LDE0ICsxNzYs
MTYgQEAKIAogU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKIHsKLSAgICByZXR1cm4gU3RyaW5n
Ojpmcm9tVVRGOChnX2dldF9ob21lX2RpcigpKTsKKyAgICByZXR1cm4gZmlsZW5hbWVUb1N0cmlu
ZyhnX2dldF9ob21lX2RpcigpKTsKIH0KIAogU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBT
dHJpbmcmIHBhdGhOYW1lKQogewotICAgIGNoYXIqIGJhc2VOYW1lID0gZ19wYXRoX2dldF9iYXNl
bmFtZShwYXRoTmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICBjaGFyKiB0bXBGaWxlbmFtZSA9IGZp
bGVuYW1lRnJvbVN0cmluZyhwYXRoTmFtZSk7CisgICAgY2hhciogYmFzZU5hbWUgPSBnX3BhdGhf
Z2V0X2Jhc2VuYW1lKHRtcEZpbGVuYW1lKTsKICAgICBTdHJpbmcgZmlsZU5hbWUgPSBTdHJpbmc6
OmZyb21VVEY4KGJhc2VOYW1lKTsKICAgICBnX2ZyZWUoYmFzZU5hbWUpOworICAgIGdfZnJlZSh0
bXBGaWxlbmFtZSk7CiAKICAgICByZXR1cm4gZmlsZU5hbWU7CiB9CkBAIC0xNTAsNyArMjAwLDgg
QEAKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBlbnRyaWVzOwogCi0gICAgR0RpciogZGlyID0gZ19k
aXJfb3BlbigocGF0aC51dGY4KCkpLmRhdGEoKSwgMCwgMCk7CisgICAgZ2NoYXIqIGZpbGVuYW1l
ID0gZmlsZW5hbWVGcm9tU3RyaW5nKHBhdGgpOworICAgIEdEaXIqIGRpciA9IGdfZGlyX29wZW4o
ZmlsZW5hbWUsIDAsIDApOwogICAgIGlmICghZGlyKQogICAgICAgICByZXR1cm4gZW50cmllczsK
IApAQCAtMTU5LDExICsyMTAsMTIgQEAKICAgICAgICAgaWYgKCFnX3BhdHRlcm5fbWF0Y2hfc3Ry
aW5nKHBzcGVjLCBuYW1lKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGdjaGFy
KiBlbnRyeSA9IGdfYnVpbGRfZmlsZW5hbWUoKHBhdGgudXRmOCgpKS5kYXRhKCksIG5hbWUsIE5V
TEwpOwotICAgICAgICBlbnRyaWVzLmFwcGVuZChlbnRyeSk7CisgICAgICAgIGdjaGFyKiBlbnRy
eSA9IGdfYnVpbGRfZmlsZW5hbWUoZmlsZW5hbWUsIG5hbWUsIE5VTEwpOworICAgICAgICBlbnRy
aWVzLmFwcGVuZChmaWxlbmFtZVRvU3RyaW5nKGVudHJ5KSk7CiAgICAgICAgIGdfZnJlZShlbnRy
eSk7CiAgICAgfQogICAgIGdfZGlyX2Nsb3NlKGRpcik7CisgICAgZ19mcmVlKGZpbGVuYW1lKTsK
IAogICAgIHJldHVybiBlbnRyaWVzOwogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3Vy
aWVzY2FwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL2d1cmllc2NhcGUu
aAkocmV2aXNpb25lIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2d0ay9ndXJpZXNjYXBlLmgJKHJl
dmlzaW9uZSAwKQpAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IENv
bGxhYm9yYSwgTHRkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaWZuZGVmIGd1cmllc2NhcGVfaAorI2RlZmluZSBndXJpZXNjYXBlX2gK
KworI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworR19CRUdJ
Tl9ERUNMUworCisjaWYgIVBMQVRGT1JNKFdJTl9PUykgJiYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigy
LCAxNiwgMCkKKworI2RlZmluZSBnX3VyaV9lc2NhcGVfc3RyaW5nIF93ZWJjb3JlX2dfdXJpX2Vz
Y2FwZV9zdHJpbmcKKworY2hhcgkqX3dlYmNvcmVfZ191cmlfZXNjYXBlX3N0cmluZwkoY29uc3Qg
Y2hhciAqdW5lc2NhcGVkLAorCQkJCQkgY29uc3QgY2hhciAqcmVzZXJ2ZWRfY2hhcnNfYWxsb3dl
ZCwKKwkJCQkJIGdib29sZWFuICAgIGFsbG93X3V0ZjgpOworCisjZW5kaWYKKworR19FTkRfREVD
TFMKKworI2VuZGlmIC8vIGd1cmllc2NhcGVfaApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
U2hhcmVkQnVmZmVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9T
aGFyZWRCdWZmZXJHdGsuY3BwCShyZXZpc2lvbmUgMzcxODkpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TaGFyZWRCdWZmZXJHdGsuY3BwCShjb3BpYSBsb2NhbGUpCkBAIC0yMCw2ICsyMCw3IEBA
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKICNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5j
bHVkZSAiRmlsZVN5c3RlbS5oIgogCiAjaW5jbHVkZSA8Z2xpYi5oPgogCkBAIC0zMSwxNSArMzIs
MTIgQEAKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIGdjaGFyKiBmaWxlbmFtZSA9IGdfZmlsZW5hbWVfZnJvbV91dGY4KGZpbGVQYXRoLnV0Zjgo
KS5kYXRhKCksIC0xLCAwLCAwLCAwKTsKLSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICByZXR1
cm4gMDsKLQorICAgIGdjaGFyKiBmaWxlbmFtZSA9IGZpbGVuYW1lRnJvbVN0cmluZyhmaWxlUGF0
aCk7CiAgICAgZ2NoYXIqIGNvbnRlbnRzOwogICAgIGdzaXplIHNpemU7CiAgICAgR0Vycm9yKiBl
cnJvciA9IDA7CiAgICAgaWYgKCFnX2ZpbGVfZ2V0X2NvbnRlbnRzKGZpbGVuYW1lLCAmY29udGVu
dHMsICZzaXplLCAmZXJyb3IpKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5
IHJlYWQgY29udGVudHMgb2YgZmlsZSAlcyAtICVzIiwgZmlsZVBhdGgudXRmOCgpLmRhdGEoKSwg
ZXJyb3ItPm1lc3NhZ2UpOworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFk
IGNvbnRlbnRzIG9mIGZpbGUgJXMgLSAlcyIsIGZpbGVuYW1lRm9yRGlzcGxheShmaWxlUGF0aCku
dXRmOCgpLmRhdGEoKSwgZXJyb3ItPm1lc3NhZ2UpOwogICAgICAgICBnX2Vycm9yX2ZyZWUoZXJy
b3IpOwogICAgICAgICBnX2ZyZWUoZmlsZW5hbWUpOwogICAgICAgICByZXR1cm4gMDsKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0tVUkxHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3RrL0tVUkxHdGsuY3BwCShyZXZpc2lvbmUgMzcxODkpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2d0ay9LVVJMR3RrLmNwcAkoY29waWEgbG9jYWxlKQpAQCAtMjAsNiArMjAsNyBAQAog
I2luY2x1ZGUgIktVUkwuaCIKIAogI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJGaWxl
U3lzdGVtLmgiCiAKICNpbmNsdWRlIDxnbGliLmg+CiAKQEAgLTMxLDcgKzMyLDcgQEAKICAgICBp
ZiAoIWZpbGVuYW1lKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBTdHJpbmcgcGF0
aCA9IFN0cmluZzo6ZnJvbVVURjgoZmlsZW5hbWUpOworICAgIFN0cmluZyBwYXRoID0gZmlsZW5h
bWVUb1N0cmluZyhmaWxlbmFtZSk7CiAgICAgZ19mcmVlKGZpbGVuYW1lKTsKICAgICByZXR1cm4g
cGF0aDsKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCShyZXZpc2lvbmUgMzcxODkpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAkoY29waWEgbG9jYWxlKQpAQCAtMTU4LDYgKzE1
OCwxMiBAQAogYm9vbCBzYWZlQ3JlYXRlRmlsZShjb25zdCBTdHJpbmcmLCBDRkRhdGFSZWYpOwog
I2VuZGlmCiAKKyNpZiBQTEFURk9STShHVEspCitTdHJpbmcgZmlsZW5hbWVUb1N0cmluZyhjb25z
dCBjaGFyKik7CitjaGFyKiBmaWxlbmFtZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CitTdHJp
bmcgZmlsZW5hbWVGb3JEaXNwbGF5KGNvbnN0IFN0cmluZyYpOworI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEZpbGVTeXN0ZW1faApJbmRleDogV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uZSAzNzE5
MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCShjb3BpYSBsb2NhbGUpCkBAIC0xLDMgKzEsNDQgQEAK
KzIwMDgtMTAtMDIgIE1hcmNvIEJhcmlzaW9uZSAgPG1hcmNvLmJhcmlzaW9uZUBjb2xsYWJvcmEu
Y28udWs+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NjQKKyAgICAgICAgW0dU
S10gRmlsZSBuYW1lcyBhcmUgbm90IGFsd2F5cyBlbmNvZGFibGUgaW4gVVRGLTgKKworICAgICAg
ICBPbiBMaW51eCBmaWxlIG5hbWVzIGFyZSBqdXN0IHJhdyBkYXRhIGFuZCBjYW5ub3QgYWx3YXlz
IGJlIGRpcmVjdGx5CisgICAgICAgIGVuY29kZWQgaW4gVVRGLTggb3IgaW4gYW55IG90aGVyIGVu
Y29kaW5ncywgc28gd2UgZXNjYXBlIHRoZW0gYmVmb3JlCisgICAgICAgIHN0b3JpbmcgdGhlIGZp
bGUgbmFtZSBpbiBhIFN0cmluZyBhbmQgdW5lc2NhcGUgdGhlbSBiZWZvcmUgcGFzc2luZworICAg
ICAgICB0aGVtIHRvIG5hdGl2ZSBmdW5jdGlvbnMgaGFuZGxpbmcgZmlsZXMuCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL0ZpbGVDaG9vc2VyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnN0cmluZ0J5QWRvcHRpbmdGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZUNob29zZXI6OmJhc2VuYW1lRm9yV2lkdGgpOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9GaWxlU3lzdGVtR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZW5hbWVGcm9tU3RyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OmZpbGVuYW1lRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpmaWxlRXhpc3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OmRlbGV0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6ZGVs
ZXRlRW1wdHlEaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZVNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6bWFrZUFsbERpcmVjdG9yaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmhvbWVEaXJlY3RvcnlQ
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhHZXRGaWxlTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpsaXN0RGlyZWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvS1VSTEd0ay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpmaWxlU3lzdGVtUGF0aCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L2d1cmllc2NhcGUuYzogQWRkZWQuCisgICAgICAgIChpc192YWxpZCk6CisgICAgICAgIChndW5p
Y2hhcl9vayk6CisgICAgICAgIChnX3N0cmluZ19hcHBlbmRfdXJpX2VzY2FwZWQpOgorICAgICAg
ICAoX3dlYmNvcmVfZ191cmlfZXNjYXBlX3N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L2d1cmllc2NhcGUuaDogQWRkZWQuCisKIDIwMDgtMTAtMDIgIEFsZXhleSBQcm9za3VyeWFrb3Yg
IDxhcEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>