##// END OF EJS Templates
test-hybridencode: a few more cases
Adrian Buehlmann -
r17540:f2bcc597 default
parent child Browse files
Show More
@@ -1,427 +1,454 b''
1 from mercurial import store
1 from mercurial import store
2
2
3 auxencode = lambda f: store._auxencode(f, True)
3 auxencode = lambda f: store._auxencode(f, True)
4 hybridencode = lambda f: store._hybridencode(f, auxencode)
4 hybridencode = lambda f: store._hybridencode(f, auxencode)
5
5
6 enc = hybridencode # used for 'dotencode' repo format
6 enc = hybridencode # used for 'dotencode' repo format
7
7
8 def show(s):
8 def show(s):
9 print "A = '%s'" % s.encode("string_escape")
9 print "A = '%s'" % s.encode("string_escape")
10 print "B = '%s'" % enc(s).encode("string_escape")
10 print "B = '%s'" % enc(s).encode("string_escape")
11 print
11 print
12
12
13 show("data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&'()+,-.;=[]^`{}")
13 show("data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&'()+,-.;=[]^`{}")
14
14
15 print "uppercase char X is encoded as _x"
15 print "uppercase char X is encoded as _x"
16 show("data/ABCDEFGHIJKLMNOPQRSTUVWXYZ")
16 show("data/ABCDEFGHIJKLMNOPQRSTUVWXYZ")
17
17
18 print "underbar is doubled"
18 print "underbar is doubled"
19 show("data/_")
19 show("data/_")
20
20
21 print "tilde is character-encoded"
21 print "tilde is character-encoded"
22 show("data/~")
22 show("data/~")
23
23
24 print "characters in ASCII code range 1..31"
24 print "characters in ASCII code range 1..31"
25 show('data/\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f'
25 show('data/\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f'
26 '\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f')
26 '\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f')
27
27
28 print "characters in ASCII code range 126..255"
28 print "characters in ASCII code range 126..255"
29 show('data/\x7e\x7f'
29 show('data/\x7e\x7f'
30 '\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f'
30 '\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f'
31 '\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f')
31 '\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f')
32 show('data/\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf'
32 show('data/\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf'
33 '\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf')
33 '\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf')
34 show('data/\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf'
34 show('data/\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf'
35 '\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf')
35 '\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf')
36 show('data/\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef'
36 show('data/\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef'
37 '\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff')
37 '\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff')
38
38
39 print "Windows reserved characters"
39 print "Windows reserved characters"
40 show('data/less <, greater >, colon :, double-quote ", backslash \\'
40 show('data/less <, greater >, colon :, double-quote ", backslash \\'
41 ', pipe |, question-mark ?, asterisk *')
41 ', pipe |, question-mark ?, asterisk *')
42
42
43 print "encoding directories ending in .hg, .i or .d with '.hg' suffix"
43 print "encoding directories ending in .hg, .i or .d with '.hg' suffix"
44 show('data/x.hg/x.i/x.d/foo')
44 show('data/x.hg/x.i/x.d/foo')
45 show('data/a.hg/a.i/a.d/foo')
46 show('data/au.hg/au.i/au.d/foo')
47 show('data/aux.hg/aux.i/aux.d/foo')
48 show('data/auxy.hg/auxy.i/auxy.d/foo')
45
49
46 print "but these are not encoded on *filenames*"
50 print "but these are not encoded on *filenames*"
47 show('data/foo/x.hg')
51 show('data/foo/x.hg')
48 show('data/foo/x.i')
52 show('data/foo/x.i')
49 show('data/foo/x.d')
53 show('data/foo/x.d')
54 show('data/foo/a.hg')
55 show('data/foo/a.i')
56 show('data/foo/a.d')
57 show('data/foo/au.hg')
58 show('data/foo/au.i')
59 show('data/foo/au.d')
60 show('data/foo/aux.hg')
61 show('data/foo/aux.i')
62 show('data/foo/aux.d')
63 show('data/foo/auxy.hg')
64 show('data/foo/auxy.i')
65 show('data/foo/auxy.d')
50
66
51 print "plain .hg, .i and .d directories have the leading dot encoded"
67 print "plain .hg, .i and .d directories have the leading dot encoded"
52 show('data/.hg/.i/.d/foo')
68 show('data/.hg/.i/.d/foo')
53
69
54 show('data/aux.bla/bla.aux/prn/PRN/lpt/com3/nul/coma/foo.NUL/normal.c.i')
70 show('data/aux.bla/bla.aux/prn/PRN/lpt/com3/nul/coma/foo.NUL/normal.c.i')
55
71
56 show('data/AUX/SECOND/X.PRN/FOURTH/FI:FTH/SIXTH/SEVENTH/EIGHTH/NINETH/'
72 show('data/AUX/SECOND/X.PRN/FOURTH/FI:FTH/SIXTH/SEVENTH/EIGHTH/NINETH/'
57 'TENTH/ELEVENTH/LOREMIPSUM.TXT.i')
73 'TENTH/ELEVENTH/LOREMIPSUM.TXT.i')
58 show('data/enterprise/openesbaddons/contrib-imola/corba-bc/netbeansplugin/'
74 show('data/enterprise/openesbaddons/contrib-imola/corba-bc/netbeansplugin/'
59 'wsdlExtension/src/main/java/META-INF/services/org.netbeans.modules'
75 'wsdlExtension/src/main/java/META-INF/services/org.netbeans.modules'
60 '.xml.wsdl.bindingsupport.spi.ExtensibilityElementTemplateProvider.i')
76 '.xml.wsdl.bindingsupport.spi.ExtensibilityElementTemplateProvider.i')
61 show('data/AUX.THE-QUICK-BROWN-FOX-JU:MPS-OVER-THE-LAZY-DOG-THE-QUICK-'
77 show('data/AUX.THE-QUICK-BROWN-FOX-JU:MPS-OVER-THE-LAZY-DOG-THE-QUICK-'
62 'BROWN-FOX-JUMPS-OVER-THE-LAZY-DOG.TXT.i')
78 'BROWN-FOX-JUMPS-OVER-THE-LAZY-DOG.TXT.i')
63 show('data/Project Planning/Resources/AnotherLongDirectoryName/'
79 show('data/Project Planning/Resources/AnotherLongDirectoryName/'
64 'Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt')
80 'Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt')
65 show('data/Project.Planning/Resources/AnotherLongDirectoryName/'
81 show('data/Project.Planning/Resources/AnotherLongDirectoryName/'
66 'Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt')
82 'Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt')
67 show('data/foo.../foo / /a./_. /__/.x../ bla/.FOO/something.i')
83 show('data/foo.../foo / /a./_. /__/.x../ bla/.FOO/something.i')
68
84
69 show('data/c/co/com/com0/com1/com2/com3/com4/com5/com6/com7/com8/com9')
85 show('data/c/co/com/com0/com1/com2/com3/com4/com5/com6/com7/com8/com9')
70 show('data/C/CO/COM/COM0/COM1/COM2/COM3/COM4/COM5/COM6/COM7/COM8/COM9')
86 show('data/C/CO/COM/COM0/COM1/COM2/COM3/COM4/COM5/COM6/COM7/COM8/COM9')
71 show('data/c.x/co.x/com.x/com0.x/com1.x/com2.x/com3.x/com4.x/com5.x'
87 show('data/c.x/co.x/com.x/com0.x/com1.x/com2.x/com3.x/com4.x/com5.x'
72 '/com6.x/com7.x/com8.x/com9.x')
88 '/com6.x/com7.x/com8.x/com9.x')
73 show('data/x.c/x.co/x.com0/x.com1/x.com2/x.com3/x.com4/x.com5'
89 show('data/x.c/x.co/x.com0/x.com1/x.com2/x.com3/x.com4/x.com5'
74 '/x.com6/x.com7/x.com8/x.com9')
90 '/x.com6/x.com7/x.com8/x.com9')
75 show('data/cx/cox/comx/com0x/com1x/com2x/com3x/com4x/com5x'
91 show('data/cx/cox/comx/com0x/com1x/com2x/com3x/com4x/com5x'
76 '/com6x/com7x/com8x/com9x')
92 '/com6x/com7x/com8x/com9x')
77 show('data/xc/xco/xcom0/xcom1/xcom2/xcom3/xcom4/xcom5'
93 show('data/xc/xco/xcom0/xcom1/xcom2/xcom3/xcom4/xcom5'
78 '/xcom6/xcom7/xcom8/xcom9')
94 '/xcom6/xcom7/xcom8/xcom9')
79
95
80 show('data/l/lp/lpt/lpt0/lpt1/lpt2/lpt3/lpt4/lpt5/lpt6/lpt7/lpt8/lpt9')
96 show('data/l/lp/lpt/lpt0/lpt1/lpt2/lpt3/lpt4/lpt5/lpt6/lpt7/lpt8/lpt9')
81 show('data/L/LP/LPT/LPT0/LPT1/LPT2/LPT3/LPT4/LPT5/LPT6/LPT7/LPT8/LPT9')
97 show('data/L/LP/LPT/LPT0/LPT1/LPT2/LPT3/LPT4/LPT5/LPT6/LPT7/LPT8/LPT9')
82 show('data/l.x/lp.x/lpt.x/lpt0.x/lpt1.x/lpt2.x/lpt3.x/lpt4.x/lpt5.x'
98 show('data/l.x/lp.x/lpt.x/lpt0.x/lpt1.x/lpt2.x/lpt3.x/lpt4.x/lpt5.x'
83 '/lpt6.x/lpt7.x/lpt8.x/lpt9.x')
99 '/lpt6.x/lpt7.x/lpt8.x/lpt9.x')
84 show('data/x.l/x.lp/x.lpt/x.lpt0/x.lpt1/x.lpt2/x.lpt3/x.lpt4/x.lpt5'
100 show('data/x.l/x.lp/x.lpt/x.lpt0/x.lpt1/x.lpt2/x.lpt3/x.lpt4/x.lpt5'
85 '/x.lpt6/x.lpt7/x.lpt8/x.lpt9')
101 '/x.lpt6/x.lpt7/x.lpt8/x.lpt9')
86 show('data/lx/lpx/lptx/lpt0x/lpt1x/lpt2x/lpt3x/lpt4x/lpt5x'
102 show('data/lx/lpx/lptx/lpt0x/lpt1x/lpt2x/lpt3x/lpt4x/lpt5x'
87 '/lpt6x/lpt7x/lpt8x/lpt9x')
103 '/lpt6x/lpt7x/lpt8x/lpt9x')
88 show('data/xl/xlp/xlpt/xlpt0/xlpt1/xlpt2/xlpt3/xlpt4/xlpt5'
104 show('data/xl/xlp/xlpt/xlpt0/xlpt1/xlpt2/xlpt3/xlpt4/xlpt5'
89 '/xlpt6/xlpt7/xlpt8/xlpt9')
105 '/xlpt6/xlpt7/xlpt8/xlpt9')
90
106
91 show('data/con/p/pr/prn/a/au/aux/n/nu/nul')
107 show('data/con/p/pr/prn/a/au/aux/n/nu/nul')
92 show('data/CON/P/PR/PRN/A/AU/AUX/N/NU/NUL')
108 show('data/CON/P/PR/PRN/A/AU/AUX/N/NU/NUL')
93 show('data/con.x/p.x/pr.x/prn.x/a.x/au.x/aux.x/n.x/nu.x/nul.x')
109 show('data/con.x/p.x/pr.x/prn.x/a.x/au.x/aux.x/n.x/nu.x/nul.x')
94 show('data/x.con/x.p/x.pr/x.prn/x.a/x.au/x.aux/x.n/x.nu/x.nul')
110 show('data/x.con/x.p/x.pr/x.prn/x.a/x.au/x.aux/x.n/x.nu/x.nul')
95 show('data/conx/px/prx/prnx/ax/aux/auxx/nx/nux/nulx')
111 show('data/conx/px/prx/prnx/ax/aux/auxx/nx/nux/nulx')
96 show('data/xcon/xp/xpr/xprn/xa/xau/xaux/xn/xnu/xnul')
112 show('data/xcon/xp/xpr/xprn/xa/xau/xaux/xn/xnu/xnul')
97
113
114 show('data/a./au./aux./auxy./aux.')
115 show('data/c./co./con./cony./con.')
116 show('data/p./pr./prn./prny./prn.')
117 show('data/n./nu./nul./nuly./nul.')
118 show('data/l./lp./lpt./lpt1./lpt1y./lpt1.')
119 show('data/lpt9./lpt9y./lpt9.')
120 show('data/com./com1./com1y./com1.')
121 show('data/com9./com9y./com9.')
122
123 show('data/a /au /aux /auxy /aux ')
124
98 print "largest unhashed path"
125 print "largest unhashed path"
99 show('data/123456789-123456789-123456789-123456789-123456789-'
126 show('data/123456789-123456789-123456789-123456789-123456789-'
100 'unhashed--xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
127 'unhashed--xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
101 '123456789-12345')
128 '123456789-12345')
102
129
103 print "shortest hashed path"
130 print "shortest hashed path"
104 show('data/123456789-123456789-123456789-123456789-123456789-'
131 show('data/123456789-123456789-123456789-123456789-123456789-'
105 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
132 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
106 '123456789-123456')
133 '123456789-123456')
107
134
108 print "changing one char in part that's hashed away produces a different hash"
135 print "changing one char in part that's hashed away produces a different hash"
109 show('data/123456789-123456789-123456789-123456789-123456789-'
136 show('data/123456789-123456789-123456789-123456789-123456789-'
110 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxy-'
137 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxy-'
111 '123456789-123456')
138 '123456789-123456')
112
139
113 print "uppercase hitting length limit due to encoding"
140 print "uppercase hitting length limit due to encoding"
114 show('data/A23456789-123456789-123456789-123456789-123456789-'
141 show('data/A23456789-123456789-123456789-123456789-123456789-'
115 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
142 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
116 '123456789-12345')
143 '123456789-12345')
117 show('data/Z23456789-123456789-123456789-123456789-123456789-'
144 show('data/Z23456789-123456789-123456789-123456789-123456789-'
118 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
145 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
119 '123456789-12345')
146 '123456789-12345')
120
147
121 print "compare with lowercase not hitting limit"
148 print "compare with lowercase not hitting limit"
122 show('data/a23456789-123456789-123456789-123456789-123456789-'
149 show('data/a23456789-123456789-123456789-123456789-123456789-'
123 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
150 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
124 '123456789-12345')
151 '123456789-12345')
125 show('data/z23456789-123456789-123456789-123456789-123456789-'
152 show('data/z23456789-123456789-123456789-123456789-123456789-'
126 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
153 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
127 '123456789-12345')
154 '123456789-12345')
128
155
129 print "not hitting limit with any of these"
156 print "not hitting limit with any of these"
130 show("data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&'()+,-.;="
157 show("data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&'()+,-.;="
131 "[]^`{}xxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-"
158 "[]^`{}xxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-"
132 "123456789-12345")
159 "123456789-12345")
133
160
134 print "underbar hitting length limit due to encoding"
161 print "underbar hitting length limit due to encoding"
135 show('data/_23456789-123456789-123456789-123456789-123456789-'
162 show('data/_23456789-123456789-123456789-123456789-123456789-'
136 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
163 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
137 '123456789-12345')
164 '123456789-12345')
138
165
139 print "tilde hitting length limit due to encoding"
166 print "tilde hitting length limit due to encoding"
140 show('data/~23456789-123456789-123456789-123456789-123456789-'
167 show('data/~23456789-123456789-123456789-123456789-123456789-'
141 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
168 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
142 '123456789-12345')
169 '123456789-12345')
143
170
144 print "Windows reserved characters hitting length limit"
171 print "Windows reserved characters hitting length limit"
145 show('data/<23456789-123456789-123456789-123456789-123456789-'
172 show('data/<23456789-123456789-123456789-123456789-123456789-'
146 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
173 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
147 '123456789-12345')
174 '123456789-12345')
148 show('data/>23456789-123456789-123456789-123456789-123456789-'
175 show('data/>23456789-123456789-123456789-123456789-123456789-'
149 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
176 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
150 '123456789-12345')
177 '123456789-12345')
151 show('data/:23456789-123456789-123456789-123456789-123456789-'
178 show('data/:23456789-123456789-123456789-123456789-123456789-'
152 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
179 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
153 '123456789-12345')
180 '123456789-12345')
154 show('data/"23456789-123456789-123456789-123456789-123456789-'
181 show('data/"23456789-123456789-123456789-123456789-123456789-'
155 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
182 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
156 '123456789-12345')
183 '123456789-12345')
157 show('data/\\23456789-123456789-123456789-123456789-123456789-'
184 show('data/\\23456789-123456789-123456789-123456789-123456789-'
158 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
185 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
159 '123456789-12345')
186 '123456789-12345')
160 show('data/|23456789-123456789-123456789-123456789-123456789-'
187 show('data/|23456789-123456789-123456789-123456789-123456789-'
161 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
188 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
162 '123456789-12345')
189 '123456789-12345')
163 show('data/?23456789-123456789-123456789-123456789-123456789-'
190 show('data/?23456789-123456789-123456789-123456789-123456789-'
164 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
191 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
165 '123456789-12345')
192 '123456789-12345')
166 show('data/*23456789-123456789-123456789-123456789-123456789-'
193 show('data/*23456789-123456789-123456789-123456789-123456789-'
167 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
194 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
168 '123456789-12345')
195 '123456789-12345')
169
196
170 print "initial space hitting length limit"
197 print "initial space hitting length limit"
171 show('data/ 23456789-123456789-123456789-123456789-123456789-'
198 show('data/ 23456789-123456789-123456789-123456789-123456789-'
172 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
199 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
173 '123456789-12345')
200 '123456789-12345')
174
201
175 print "initial dot hitting length limit"
202 print "initial dot hitting length limit"
176 show('data/.23456789-123456789-123456789-123456789-123456789-'
203 show('data/.23456789-123456789-123456789-123456789-123456789-'
177 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
204 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
178 '123456789-12345')
205 '123456789-12345')
179
206
180 print "trailing space in filename hitting length limit"
207 print "trailing space in filename hitting length limit"
181 show('data/123456789-123456789-123456789-123456789-123456789-'
208 show('data/123456789-123456789-123456789-123456789-123456789-'
182 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
209 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
183 '123456789-1234 ')
210 '123456789-1234 ')
184
211
185 print "trailing dot in filename hitting length limit"
212 print "trailing dot in filename hitting length limit"
186 show('data/123456789-123456789-123456789-123456789-123456789-'
213 show('data/123456789-123456789-123456789-123456789-123456789-'
187 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
214 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
188 '123456789-1234.')
215 '123456789-1234.')
189
216
190 print "initial space in directory hitting length limit"
217 print "initial space in directory hitting length limit"
191 show('data/ x/456789-123456789-123456789-123456789-123456789-'
218 show('data/ x/456789-123456789-123456789-123456789-123456789-'
192 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
219 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
193 '123456789-12345')
220 '123456789-12345')
194
221
195 print "initial dot in directory hitting length limit"
222 print "initial dot in directory hitting length limit"
196 show('data/.x/456789-123456789-123456789-123456789-123456789-'
223 show('data/.x/456789-123456789-123456789-123456789-123456789-'
197 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
224 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
198 '123456789-12345')
225 '123456789-12345')
199
226
200 print "trailing space in directory hitting length limit"
227 print "trailing space in directory hitting length limit"
201 show('data/x /456789-123456789-123456789-123456789-123456789-'
228 show('data/x /456789-123456789-123456789-123456789-123456789-'
202 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
229 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
203 '123456789-12345')
230 '123456789-12345')
204
231
205 print "trailing dot in directory hitting length limit"
232 print "trailing dot in directory hitting length limit"
206 show('data/x./456789-123456789-123456789-123456789-123456789-'
233 show('data/x./456789-123456789-123456789-123456789-123456789-'
207 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
234 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
208 '123456789-12345')
235 '123456789-12345')
209
236
210 print "with directories that need direncoding, hitting length limit"
237 print "with directories that need direncoding, hitting length limit"
211 show('data/x.i/56789-123456789-123456789-123456789-123456789-'
238 show('data/x.i/56789-123456789-123456789-123456789-123456789-'
212 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
239 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
213 '123456789-12345')
240 '123456789-12345')
214 show('data/x.d/56789-123456789-123456789-123456789-123456789-'
241 show('data/x.d/56789-123456789-123456789-123456789-123456789-'
215 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
242 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
216 '123456789-12345')
243 '123456789-12345')
217 show('data/x.hg/5789-123456789-123456789-123456789-123456789-'
244 show('data/x.hg/5789-123456789-123456789-123456789-123456789-'
218 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
245 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
219 '123456789-12345')
246 '123456789-12345')
220
247
221 print "Windows reserved filenames, hitting length limit"
248 print "Windows reserved filenames, hitting length limit"
222 show('data/con/56789-123456789-123456789-123456789-123456789-'
249 show('data/con/56789-123456789-123456789-123456789-123456789-'
223 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
250 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
224 '123456789-12345')
251 '123456789-12345')
225 show('data/prn/56789-123456789-123456789-123456789-123456789-'
252 show('data/prn/56789-123456789-123456789-123456789-123456789-'
226 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
253 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
227 '123456789-12345')
254 '123456789-12345')
228 show('data/aux/56789-123456789-123456789-123456789-123456789-'
255 show('data/aux/56789-123456789-123456789-123456789-123456789-'
229 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
256 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
230 '123456789-12345')
257 '123456789-12345')
231 show('data/nul/56789-123456789-123456789-123456789-123456789-'
258 show('data/nul/56789-123456789-123456789-123456789-123456789-'
232 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
259 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
233 '123456789-12345')
260 '123456789-12345')
234 show('data/com1/6789-123456789-123456789-123456789-123456789-'
261 show('data/com1/6789-123456789-123456789-123456789-123456789-'
235 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
262 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
236 '123456789-12345')
263 '123456789-12345')
237 show('data/com9/6789-123456789-123456789-123456789-123456789-'
264 show('data/com9/6789-123456789-123456789-123456789-123456789-'
238 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
265 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
239 '123456789-12345')
266 '123456789-12345')
240 show('data/lpt1/6789-123456789-123456789-123456789-123456789-'
267 show('data/lpt1/6789-123456789-123456789-123456789-123456789-'
241 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
268 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
242 '123456789-12345')
269 '123456789-12345')
243 show('data/lpt9/6789-123456789-123456789-123456789-123456789-'
270 show('data/lpt9/6789-123456789-123456789-123456789-123456789-'
244 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
271 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
245 '123456789-12345')
272 '123456789-12345')
246
273
247 print "non-reserved names, just not hitting limit"
274 print "non-reserved names, just not hitting limit"
248 show('data/123456789-123456789-123456789-123456789-123456789-'
275 show('data/123456789-123456789-123456789-123456789-123456789-'
249 '/com/com0/lpt/lpt0/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
276 '/com/com0/lpt/lpt0/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
250 '123456789-12345')
277 '123456789-12345')
251
278
252 print "hashed path with largest untruncated 1st dir"
279 print "hashed path with largest untruncated 1st dir"
253 show('data/12345678/-123456789-123456789-123456789-123456789-'
280 show('data/12345678/-123456789-123456789-123456789-123456789-'
254 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
281 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
255 '123456789-123456')
282 '123456789-123456')
256
283
257 print "hashed path with smallest truncated 1st dir"
284 print "hashed path with smallest truncated 1st dir"
258 show('data/123456789/123456789-123456789-123456789-123456789-'
285 show('data/123456789/123456789-123456789-123456789-123456789-'
259 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
286 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
260 '123456789-123456')
287 '123456789-123456')
261
288
262 print "hashed path with largest untruncated two dirs"
289 print "hashed path with largest untruncated two dirs"
263 show('data/12345678/12345678/9-123456789-123456789-123456789-'
290 show('data/12345678/12345678/9-123456789-123456789-123456789-'
264 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
291 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
265 '123456789-123456')
292 '123456789-123456')
266
293
267 print "hashed path with smallest truncated two dirs"
294 print "hashed path with smallest truncated two dirs"
268 show('data/123456789/123456789/123456789-123456789-123456789-'
295 show('data/123456789/123456789/123456789-123456789-123456789-'
269 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
296 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
270 '123456789-123456')
297 '123456789-123456')
271
298
272 print "hashed path with largest untruncated three dirs"
299 print "hashed path with largest untruncated three dirs"
273 show('data/12345678/12345678/12345678/89-123456789-123456789-'
300 show('data/12345678/12345678/12345678/89-123456789-123456789-'
274 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
301 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
275 '123456789-123456')
302 '123456789-123456')
276
303
277 print "hashed path with smallest truncated three dirs"
304 print "hashed path with smallest truncated three dirs"
278 show('data/123456789/123456789/123456789/123456789-123456789-'
305 show('data/123456789/123456789/123456789/123456789-123456789-'
279 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
306 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
280 '123456789-123456')
307 '123456789-123456')
281
308
282 print "hashed path with largest untruncated four dirs"
309 print "hashed path with largest untruncated four dirs"
283 show('data/12345678/12345678/12345678/12345678/789-123456789-'
310 show('data/12345678/12345678/12345678/12345678/789-123456789-'
284 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
311 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
285 '123456789-123456')
312 '123456789-123456')
286
313
287 print "hashed path with smallest truncated four dirs"
314 print "hashed path with smallest truncated four dirs"
288 show('data/123456789/123456789/123456789/123456789/123456789-'
315 show('data/123456789/123456789/123456789/123456789/123456789-'
289 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
316 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
290 '123456789-123456')
317 '123456789-123456')
291
318
292 print "hashed path with largest untruncated five dirs"
319 print "hashed path with largest untruncated five dirs"
293 show('data/12345678/12345678/12345678/12345678/12345678/6789-'
320 show('data/12345678/12345678/12345678/12345678/12345678/6789-'
294 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
321 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
295 '123456789-123456')
322 '123456789-123456')
296
323
297 print "hashed path with smallest truncated five dirs"
324 print "hashed path with smallest truncated five dirs"
298 show('data/123456789/123456789/123456789/123456789/123456789/'
325 show('data/123456789/123456789/123456789/123456789/123456789/'
299 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
326 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
300 '123456789-123456')
327 '123456789-123456')
301
328
302 print "hashed path with largest untruncated six dirs"
329 print "hashed path with largest untruncated six dirs"
303 show('data/12345678/12345678/12345678/12345678/12345678/12345'
330 show('data/12345678/12345678/12345678/12345678/12345678/12345'
304 '678/ed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
331 '678/ed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
305 '123456789-123456')
332 '123456789-123456')
306
333
307 print "hashed path with smallest truncated six dirs"
334 print "hashed path with smallest truncated six dirs"
308 show('data/123456789/123456789/123456789/123456789/123456789/'
335 show('data/123456789/123456789/123456789/123456789/123456789/'
309 '123456789/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
336 '123456789/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
310 '123456789-123456')
337 '123456789-123456')
311
338
312 print "hashed path with largest untruncated seven dirs"
339 print "hashed path with largest untruncated seven dirs"
313 show('data/12345678/12345678/12345678/12345678/12345678/12345'
340 show('data/12345678/12345678/12345678/12345678/12345678/12345'
314 '678/12345678/xxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
341 '678/12345678/xxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
315 '123456789-123456')
342 '123456789-123456')
316
343
317 print "hashed path with smallest truncated seven dirs"
344 print "hashed path with smallest truncated seven dirs"
318 show('data/123456789/123456789/123456789/123456789/123456789/'
345 show('data/123456789/123456789/123456789/123456789/123456789/'
319 '123456789/123456789/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
346 '123456789/123456789/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
320 '123456789-123456')
347 '123456789-123456')
321
348
322 print "hashed path with largest untruncated eight dirs"
349 print "hashed path with largest untruncated eight dirs"
323 print "(directory 8 is dropped because it hits _maxshortdirslen)"
350 print "(directory 8 is dropped because it hits _maxshortdirslen)"
324 show('data/12345678/12345678/12345678/12345678/12345678/12345'
351 show('data/12345678/12345678/12345678/12345678/12345678/12345'
325 '678/12345678/12345678/xxxxxxx-xxxxxxxxx-xxxxxxxxx-'
352 '678/12345678/12345678/xxxxxxx-xxxxxxxxx-xxxxxxxxx-'
326 '123456789-123456')
353 '123456789-123456')
327
354
328 print "hashed path with smallest truncated eight dirs"
355 print "hashed path with smallest truncated eight dirs"
329 print "(directory 8 is dropped because it hits _maxshortdirslen)"
356 print "(directory 8 is dropped because it hits _maxshortdirslen)"
330 show('data/123456789/123456789/123456789/123456789/123456789/'
357 show('data/123456789/123456789/123456789/123456789/123456789/'
331 '123456789/123456789/123456789/xxxxxxxxx-xxxxxxxxx-'
358 '123456789/123456789/123456789/xxxxxxxxx-xxxxxxxxx-'
332 '123456789-123456')
359 '123456789-123456')
333
360
334 print "hashed path with largest non-dropped directory 8"
361 print "hashed path with largest non-dropped directory 8"
335 print "(just not hitting the _maxshortdirslen boundary)"
362 print "(just not hitting the _maxshortdirslen boundary)"
336 show('data/12345678/12345678/12345678/12345678/12345678/12345'
363 show('data/12345678/12345678/12345678/12345678/12345678/12345'
337 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
364 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
338 '123456789-123456')
365 '123456789-123456')
339
366
340 print "...adding one truncated char to dir 1..7 won't drop dir 8"
367 print "...adding one truncated char to dir 1..7 won't drop dir 8"
341 show('data/12345678x/12345678/12345678/12345678/12345678/12345'
368 show('data/12345678x/12345678/12345678/12345678/12345678/12345'
342 '678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
369 '678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
343 '123456789-123456')
370 '123456789-123456')
344 show('data/12345678/12345678x/12345678/12345678/12345678/12345'
371 show('data/12345678/12345678x/12345678/12345678/12345678/12345'
345 '678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
372 '678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
346 '123456789-123456')
373 '123456789-123456')
347 show('data/12345678/12345678/12345678x/12345678/12345678/12345'
374 show('data/12345678/12345678/12345678x/12345678/12345678/12345'
348 '678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
375 '678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
349 '123456789-123456')
376 '123456789-123456')
350 show('data/12345678/12345678/12345678/12345678x/12345678/12345'
377 show('data/12345678/12345678/12345678/12345678x/12345678/12345'
351 '678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
378 '678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
352 '123456789-123456')
379 '123456789-123456')
353 show('data/12345678/12345678/12345678/12345678/12345678x/12345'
380 show('data/12345678/12345678/12345678/12345678/12345678x/12345'
354 '678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
381 '678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
355 '123456789-123456')
382 '123456789-123456')
356 show('data/12345678/12345678/12345678/12345678/12345678/12345'
383 show('data/12345678/12345678/12345678/12345678/12345678/12345'
357 '678x/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
384 '678x/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
358 '123456789-123456')
385 '123456789-123456')
359 show('data/12345678/12345678/12345678/12345678/12345678/12345'
386 show('data/12345678/12345678/12345678/12345678/12345678/12345'
360 '678/12345678x/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
387 '678/12345678x/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
361 '123456789-123456')
388 '123456789-123456')
362
389
363 print "hashed path with shortest dropped directory 8"
390 print "hashed path with shortest dropped directory 8"
364 print "(just hitting the _maxshortdirslen boundary)"
391 print "(just hitting the _maxshortdirslen boundary)"
365 show('data/12345678/12345678/12345678/12345678/12345678/12345'
392 show('data/12345678/12345678/12345678/12345678/12345678/12345'
366 '678/12345678/123456/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
393 '678/12345678/123456/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
367 '123456789-123456')
394 '123456789-123456')
368
395
369 print "hashed path that drops dir 8 due to dot or space at end is"
396 print "hashed path that drops dir 8 due to dot or space at end is"
370 print "encoded, and thus causing to hit _maxshortdirslen"
397 print "encoded, and thus causing to hit _maxshortdirslen"
371 show('data/12345678/12345678/12345678/12345678/12345678/12345'
398 show('data/12345678/12345678/12345678/12345678/12345678/12345'
372 '678/12345678/1234./-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
399 '678/12345678/1234./-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
373 '123456789-123456')
400 '123456789-123456')
374 show('data/12345678/12345678/12345678/12345678/12345678/12345'
401 show('data/12345678/12345678/12345678/12345678/12345678/12345'
375 '678/12345678/1234 /-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
402 '678/12345678/1234 /-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
376 '123456789-123456')
403 '123456789-123456')
377
404
378 print "... with dir 8 short enough for encoding"
405 print "... with dir 8 short enough for encoding"
379 show('data/12345678/12345678/12345678/12345678/12345678/12345'
406 show('data/12345678/12345678/12345678/12345678/12345678/12345'
380 '678/12345678/12./xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
407 '678/12345678/12./xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
381 '123456789-123456')
408 '123456789-123456')
382 show('data/12345678/12345678/12345678/12345678/12345678/12345'
409 show('data/12345678/12345678/12345678/12345678/12345678/12345'
383 '678/12345678/12 /xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
410 '678/12345678/12 /xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
384 '123456789-123456')
411 '123456789-123456')
385
412
386 print "extensions are replicated on hashed paths (unbounded!)"
413 print "extensions are replicated on hashed paths (unbounded!)"
387 show('data/12345678/12345678/12345678/12345678/12345678/12345'
414 show('data/12345678/12345678/12345678/12345678/12345678/12345'
388 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
415 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
389 '123456789-12.345')
416 '123456789-12.345')
390 show('data/12345678/12345678/12345678/12345678/12345678/12345'
417 show('data/12345678/12345678/12345678/12345678/12345678/12345'
391 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
418 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
392 '123456789-12.3456')
419 '123456789-12.3456')
393 show('data/12345678/12345678/12345678/12345678/12345678/12345'
420 show('data/12345678/12345678/12345678/12345678/12345678/12345'
394 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
421 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
395 '123456789-12.34567')
422 '123456789-12.34567')
396 show('data/12345678/12345678/12345678/12345678/12345678/12345'
423 show('data/12345678/12345678/12345678/12345678/12345678/12345'
397 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
424 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
398 '123456789-12.345678')
425 '123456789-12.345678')
399 show('data/12345678/12345678/12345678/12345678/12345678/12345'
426 show('data/12345678/12345678/12345678/12345678/12345678/12345'
400 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
427 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
401 '123456789-12.3456789')
428 '123456789-12.3456789')
402 show('data/12345678/12345678/12345678/12345678/12345678/12345'
429 show('data/12345678/12345678/12345678/12345678/12345678/12345'
403 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
430 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
404 '123456789-12.3456789-')
431 '123456789-12.3456789-')
405 show('data/12345678/12345678/12345678/12345678/12345678/12345'
432 show('data/12345678/12345678/12345678/12345678/12345678/12345'
406 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
433 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
407 '123456789-12.3456789-1')
434 '123456789-12.3456789-1')
408 show('data/12345678/12345678/12345678/12345678/12345678/12345'
435 show('data/12345678/12345678/12345678/12345678/12345678/12345'
409 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
436 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
410 '123456789-12.3456789-12')
437 '123456789-12.3456789-12')
411 show('data/12345678/12345678/12345678/12345678/12345678/12345'
438 show('data/12345678/12345678/12345678/12345678/12345678/12345'
412 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
439 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
413 '123456789-12.3456789-123')
440 '123456789-12.3456789-123')
414 show('data/12345678/12345678/12345678/12345678/12345678/12345'
441 show('data/12345678/12345678/12345678/12345678/12345678/12345'
415 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
442 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
416 '123456789-12.3456789-1234')
443 '123456789-12.3456789-1234')
417 show('data/12345678/12345678/12345678/12345678/12345678/12345'
444 show('data/12345678/12345678/12345678/12345678/12345678/12345'
418 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
445 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
419 '123456789-12.3456789-12345')
446 '123456789-12.3456789-12345')
420 show('data/12345678/12345678/12345678/12345678/12345678/12345'
447 show('data/12345678/12345678/12345678/12345678/12345678/12345'
421 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
448 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
422 '123456789-12.3456789-12345-ABCDEFGHIJKLMNOPRSTUVWX'
449 '123456789-12.3456789-12345-ABCDEFGHIJKLMNOPRSTUVWX'
423 'YZ-abcdefghjiklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPRSTU'
450 'YZ-abcdefghjiklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPRSTU'
424 'VWXYZ-1234567890-xxxxxxxxx-xxxxxxxxx-xxxxxxxx-xxxx'
451 'VWXYZ-1234567890-xxxxxxxxx-xxxxxxxxx-xxxxxxxx-xxxx'
425 'xxxxx-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwww'
452 'xxxxx-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwww'
426 'wwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww')
453 'wwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww')
427
454
@@ -1,413 +1,488 b''
1 A = 'data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&\'()+,-.;=[]^`{}'
1 A = 'data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&\'()+,-.;=[]^`{}'
2 B = 'data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&\'()+,-.;=[]^`{}'
2 B = 'data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&\'()+,-.;=[]^`{}'
3
3
4 uppercase char X is encoded as _x
4 uppercase char X is encoded as _x
5 A = 'data/ABCDEFGHIJKLMNOPQRSTUVWXYZ'
5 A = 'data/ABCDEFGHIJKLMNOPQRSTUVWXYZ'
6 B = 'data/_a_b_c_d_e_f_g_h_i_j_k_l_m_n_o_p_q_r_s_t_u_v_w_x_y_z'
6 B = 'data/_a_b_c_d_e_f_g_h_i_j_k_l_m_n_o_p_q_r_s_t_u_v_w_x_y_z'
7
7
8 underbar is doubled
8 underbar is doubled
9 A = 'data/_'
9 A = 'data/_'
10 B = 'data/__'
10 B = 'data/__'
11
11
12 tilde is character-encoded
12 tilde is character-encoded
13 A = 'data/~'
13 A = 'data/~'
14 B = 'data/~7e'
14 B = 'data/~7e'
15
15
16 characters in ASCII code range 1..31
16 characters in ASCII code range 1..31
17 A = 'data/\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f'
17 A = 'data/\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f'
18 B = 'data/~01~02~03~04~05~06~07~08~09~0a~0b~0c~0d~0e~0f~10~11~12~13~14~15~16~17~18~19~1a~1b~1c~1d~1e~1f'
18 B = 'data/~01~02~03~04~05~06~07~08~09~0a~0b~0c~0d~0e~0f~10~11~12~13~14~15~16~17~18~19~1a~1b~1c~1d~1e~1f'
19
19
20 characters in ASCII code range 126..255
20 characters in ASCII code range 126..255
21 A = 'data/~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f'
21 A = 'data/~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f'
22 B = 'data/~7e~7f~80~81~82~83~84~85~86~87~88~89~8a~8b~8c~8d~8e~8f~90~91~92~93~94~95~96~97~98~99~9a~9b~9c~9d~9e~9f'
22 B = 'data/~7e~7f~80~81~82~83~84~85~86~87~88~89~8a~8b~8c~8d~8e~8f~90~91~92~93~94~95~96~97~98~99~9a~9b~9c~9d~9e~9f'
23
23
24 A = 'data/\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf'
24 A = 'data/\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf'
25 B = 'data/~a0~a1~a2~a3~a4~a5~a6~a7~a8~a9~aa~ab~ac~ad~ae~af~b0~b1~b2~b3~b4~b5~b6~b7~b8~b9~ba~bb~bc~bd~be~bf'
25 B = 'data/~a0~a1~a2~a3~a4~a5~a6~a7~a8~a9~aa~ab~ac~ad~ae~af~b0~b1~b2~b3~b4~b5~b6~b7~b8~b9~ba~bb~bc~bd~be~bf'
26
26
27 A = 'data/\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf'
27 A = 'data/\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf'
28 B = 'data/~c0~c1~c2~c3~c4~c5~c6~c7~c8~c9~ca~cb~cc~cd~ce~cf~d0~d1~d2~d3~d4~d5~d6~d7~d8~d9~da~db~dc~dd~de~df'
28 B = 'data/~c0~c1~c2~c3~c4~c5~c6~c7~c8~c9~ca~cb~cc~cd~ce~cf~d0~d1~d2~d3~d4~d5~d6~d7~d8~d9~da~db~dc~dd~de~df'
29
29
30 A = 'data/\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'
30 A = 'data/\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'
31 B = 'data/~e0~e1~e2~e3~e4~e5~e6~e7~e8~e9~ea~eb~ec~ed~ee~ef~f0~f1~f2~f3~f4~f5~f6~f7~f8~f9~fa~fb~fc~fd~fe~ff'
31 B = 'data/~e0~e1~e2~e3~e4~e5~e6~e7~e8~e9~ea~eb~ec~ed~ee~ef~f0~f1~f2~f3~f4~f5~f6~f7~f8~f9~fa~fb~fc~fd~fe~ff'
32
32
33 Windows reserved characters
33 Windows reserved characters
34 A = 'data/less <, greater >, colon :, double-quote ", backslash \\, pipe |, question-mark ?, asterisk *'
34 A = 'data/less <, greater >, colon :, double-quote ", backslash \\, pipe |, question-mark ?, asterisk *'
35 B = 'data/less ~3c, greater ~3e, colon ~3a, double-quote ~22, backslash ~5c, pipe ~7c, question-mark ~3f, asterisk ~2a'
35 B = 'data/less ~3c, greater ~3e, colon ~3a, double-quote ~22, backslash ~5c, pipe ~7c, question-mark ~3f, asterisk ~2a'
36
36
37 encoding directories ending in .hg, .i or .d with '.hg' suffix
37 encoding directories ending in .hg, .i or .d with '.hg' suffix
38 A = 'data/x.hg/x.i/x.d/foo'
38 A = 'data/x.hg/x.i/x.d/foo'
39 B = 'data/x.hg.hg/x.i.hg/x.d.hg/foo'
39 B = 'data/x.hg.hg/x.i.hg/x.d.hg/foo'
40
40
41 A = 'data/a.hg/a.i/a.d/foo'
42 B = 'data/a.hg.hg/a.i.hg/a.d.hg/foo'
43
44 A = 'data/au.hg/au.i/au.d/foo'
45 B = 'data/au.hg.hg/au.i.hg/au.d.hg/foo'
46
47 A = 'data/aux.hg/aux.i/aux.d/foo'
48 B = 'data/au~78.hg.hg/au~78.i.hg/au~78.d.hg/foo'
49
50 A = 'data/auxy.hg/auxy.i/auxy.d/foo'
51 B = 'data/auxy.hg.hg/auxy.i.hg/auxy.d.hg/foo'
52
41 but these are not encoded on *filenames*
53 but these are not encoded on *filenames*
42 A = 'data/foo/x.hg'
54 A = 'data/foo/x.hg'
43 B = 'data/foo/x.hg'
55 B = 'data/foo/x.hg'
44
56
45 A = 'data/foo/x.i'
57 A = 'data/foo/x.i'
46 B = 'data/foo/x.i'
58 B = 'data/foo/x.i'
47
59
48 A = 'data/foo/x.d'
60 A = 'data/foo/x.d'
49 B = 'data/foo/x.d'
61 B = 'data/foo/x.d'
50
62
63 A = 'data/foo/a.hg'
64 B = 'data/foo/a.hg'
65
66 A = 'data/foo/a.i'
67 B = 'data/foo/a.i'
68
69 A = 'data/foo/a.d'
70 B = 'data/foo/a.d'
71
72 A = 'data/foo/au.hg'
73 B = 'data/foo/au.hg'
74
75 A = 'data/foo/au.i'
76 B = 'data/foo/au.i'
77
78 A = 'data/foo/au.d'
79 B = 'data/foo/au.d'
80
81 A = 'data/foo/aux.hg'
82 B = 'data/foo/au~78.hg'
83
84 A = 'data/foo/aux.i'
85 B = 'data/foo/au~78.i'
86
87 A = 'data/foo/aux.d'
88 B = 'data/foo/au~78.d'
89
90 A = 'data/foo/auxy.hg'
91 B = 'data/foo/auxy.hg'
92
93 A = 'data/foo/auxy.i'
94 B = 'data/foo/auxy.i'
95
96 A = 'data/foo/auxy.d'
97 B = 'data/foo/auxy.d'
98
51 plain .hg, .i and .d directories have the leading dot encoded
99 plain .hg, .i and .d directories have the leading dot encoded
52 A = 'data/.hg/.i/.d/foo'
100 A = 'data/.hg/.i/.d/foo'
53 B = 'data/~2ehg.hg/~2ei.hg/~2ed.hg/foo'
101 B = 'data/~2ehg.hg/~2ei.hg/~2ed.hg/foo'
54
102
55 A = 'data/aux.bla/bla.aux/prn/PRN/lpt/com3/nul/coma/foo.NUL/normal.c.i'
103 A = 'data/aux.bla/bla.aux/prn/PRN/lpt/com3/nul/coma/foo.NUL/normal.c.i'
56 B = 'data/au~78.bla/bla.aux/pr~6e/_p_r_n/lpt/co~6d3/nu~6c/coma/foo._n_u_l/normal.c.i'
104 B = 'data/au~78.bla/bla.aux/pr~6e/_p_r_n/lpt/co~6d3/nu~6c/coma/foo._n_u_l/normal.c.i'
57
105
58 A = 'data/AUX/SECOND/X.PRN/FOURTH/FI:FTH/SIXTH/SEVENTH/EIGHTH/NINETH/TENTH/ELEVENTH/LOREMIPSUM.TXT.i'
106 A = 'data/AUX/SECOND/X.PRN/FOURTH/FI:FTH/SIXTH/SEVENTH/EIGHTH/NINETH/TENTH/ELEVENTH/LOREMIPSUM.TXT.i'
59 B = 'dh/au~78/second/x.prn/fourth/fi~3afth/sixth/seventh/eighth/nineth/tenth/loremia20419e358ddff1bf8751e38288aff1d7c32ec05.i'
107 B = 'dh/au~78/second/x.prn/fourth/fi~3afth/sixth/seventh/eighth/nineth/tenth/loremia20419e358ddff1bf8751e38288aff1d7c32ec05.i'
60
108
61 A = 'data/enterprise/openesbaddons/contrib-imola/corba-bc/netbeansplugin/wsdlExtension/src/main/java/META-INF/services/org.netbeans.modules.xml.wsdl.bindingsupport.spi.ExtensibilityElementTemplateProvider.i'
109 A = 'data/enterprise/openesbaddons/contrib-imola/corba-bc/netbeansplugin/wsdlExtension/src/main/java/META-INF/services/org.netbeans.modules.xml.wsdl.bindingsupport.spi.ExtensibilityElementTemplateProvider.i'
62 B = 'dh/enterpri/openesba/contrib-/corba-bc/netbeans/wsdlexte/src/main/java/org.net7018f27961fdf338a598a40c4683429e7ffb9743.i'
110 B = 'dh/enterpri/openesba/contrib-/corba-bc/netbeans/wsdlexte/src/main/java/org.net7018f27961fdf338a598a40c4683429e7ffb9743.i'
63
111
64 A = 'data/AUX.THE-QUICK-BROWN-FOX-JU:MPS-OVER-THE-LAZY-DOG-THE-QUICK-BROWN-FOX-JUMPS-OVER-THE-LAZY-DOG.TXT.i'
112 A = 'data/AUX.THE-QUICK-BROWN-FOX-JU:MPS-OVER-THE-LAZY-DOG-THE-QUICK-BROWN-FOX-JUMPS-OVER-THE-LAZY-DOG.TXT.i'
65 B = 'dh/au~78.the-quick-brown-fox-ju~3amps-over-the-lazy-dog-the-quick-brown-fox-jud4dcadd033000ab2b26eb66bae1906bcb15d4a70.i'
113 B = 'dh/au~78.the-quick-brown-fox-ju~3amps-over-the-lazy-dog-the-quick-brown-fox-jud4dcadd033000ab2b26eb66bae1906bcb15d4a70.i'
66
114
67 A = 'data/Project Planning/Resources/AnotherLongDirectoryName/Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt'
115 A = 'data/Project Planning/Resources/AnotherLongDirectoryName/Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt'
68 B = 'dh/project_/resource/anotherl/followed/andanoth/andthenanextremelylongfilenaf93030515d9849cfdca52937c2204d19f83913e5.txt'
116 B = 'dh/project_/resource/anotherl/followed/andanoth/andthenanextremelylongfilenaf93030515d9849cfdca52937c2204d19f83913e5.txt'
69
117
70 A = 'data/Project.Planning/Resources/AnotherLongDirectoryName/Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt'
118 A = 'data/Project.Planning/Resources/AnotherLongDirectoryName/Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt'
71 B = 'dh/project_/resource/anotherl/followed/andanoth/andthenanextremelylongfilena0fd7c506f5c9d58204444fc67e9499006bd2d445.txt'
119 B = 'dh/project_/resource/anotherl/followed/andanoth/andthenanextremelylongfilena0fd7c506f5c9d58204444fc67e9499006bd2d445.txt'
72
120
73 A = 'data/foo.../foo / /a./_. /__/.x../ bla/.FOO/something.i'
121 A = 'data/foo.../foo / /a./_. /__/.x../ bla/.FOO/something.i'
74 B = 'data/foo..~2e/foo ~20/~20/a~2e/__.~20/____/~2ex.~2e/~20 bla/~2e_f_o_o/something.i'
122 B = 'data/foo..~2e/foo ~20/~20/a~2e/__.~20/____/~2ex.~2e/~20 bla/~2e_f_o_o/something.i'
75
123
76 A = 'data/c/co/com/com0/com1/com2/com3/com4/com5/com6/com7/com8/com9'
124 A = 'data/c/co/com/com0/com1/com2/com3/com4/com5/com6/com7/com8/com9'
77 B = 'data/c/co/com/com0/co~6d1/co~6d2/co~6d3/co~6d4/co~6d5/co~6d6/co~6d7/co~6d8/co~6d9'
125 B = 'data/c/co/com/com0/co~6d1/co~6d2/co~6d3/co~6d4/co~6d5/co~6d6/co~6d7/co~6d8/co~6d9'
78
126
79 A = 'data/C/CO/COM/COM0/COM1/COM2/COM3/COM4/COM5/COM6/COM7/COM8/COM9'
127 A = 'data/C/CO/COM/COM0/COM1/COM2/COM3/COM4/COM5/COM6/COM7/COM8/COM9'
80 B = 'data/_c/_c_o/_c_o_m/_c_o_m0/_c_o_m1/_c_o_m2/_c_o_m3/_c_o_m4/_c_o_m5/_c_o_m6/_c_o_m7/_c_o_m8/_c_o_m9'
128 B = 'data/_c/_c_o/_c_o_m/_c_o_m0/_c_o_m1/_c_o_m2/_c_o_m3/_c_o_m4/_c_o_m5/_c_o_m6/_c_o_m7/_c_o_m8/_c_o_m9'
81
129
82 A = 'data/c.x/co.x/com.x/com0.x/com1.x/com2.x/com3.x/com4.x/com5.x/com6.x/com7.x/com8.x/com9.x'
130 A = 'data/c.x/co.x/com.x/com0.x/com1.x/com2.x/com3.x/com4.x/com5.x/com6.x/com7.x/com8.x/com9.x'
83 B = 'data/c.x/co.x/com.x/com0.x/co~6d1.x/co~6d2.x/co~6d3.x/co~6d4.x/co~6d5.x/co~6d6.x/co~6d7.x/co~6d8.x/co~6d9.x'
131 B = 'data/c.x/co.x/com.x/com0.x/co~6d1.x/co~6d2.x/co~6d3.x/co~6d4.x/co~6d5.x/co~6d6.x/co~6d7.x/co~6d8.x/co~6d9.x'
84
132
85 A = 'data/x.c/x.co/x.com0/x.com1/x.com2/x.com3/x.com4/x.com5/x.com6/x.com7/x.com8/x.com9'
133 A = 'data/x.c/x.co/x.com0/x.com1/x.com2/x.com3/x.com4/x.com5/x.com6/x.com7/x.com8/x.com9'
86 B = 'data/x.c/x.co/x.com0/x.com1/x.com2/x.com3/x.com4/x.com5/x.com6/x.com7/x.com8/x.com9'
134 B = 'data/x.c/x.co/x.com0/x.com1/x.com2/x.com3/x.com4/x.com5/x.com6/x.com7/x.com8/x.com9'
87
135
88 A = 'data/cx/cox/comx/com0x/com1x/com2x/com3x/com4x/com5x/com6x/com7x/com8x/com9x'
136 A = 'data/cx/cox/comx/com0x/com1x/com2x/com3x/com4x/com5x/com6x/com7x/com8x/com9x'
89 B = 'data/cx/cox/comx/com0x/com1x/com2x/com3x/com4x/com5x/com6x/com7x/com8x/com9x'
137 B = 'data/cx/cox/comx/com0x/com1x/com2x/com3x/com4x/com5x/com6x/com7x/com8x/com9x'
90
138
91 A = 'data/xc/xco/xcom0/xcom1/xcom2/xcom3/xcom4/xcom5/xcom6/xcom7/xcom8/xcom9'
139 A = 'data/xc/xco/xcom0/xcom1/xcom2/xcom3/xcom4/xcom5/xcom6/xcom7/xcom8/xcom9'
92 B = 'data/xc/xco/xcom0/xcom1/xcom2/xcom3/xcom4/xcom5/xcom6/xcom7/xcom8/xcom9'
140 B = 'data/xc/xco/xcom0/xcom1/xcom2/xcom3/xcom4/xcom5/xcom6/xcom7/xcom8/xcom9'
93
141
94 A = 'data/l/lp/lpt/lpt0/lpt1/lpt2/lpt3/lpt4/lpt5/lpt6/lpt7/lpt8/lpt9'
142 A = 'data/l/lp/lpt/lpt0/lpt1/lpt2/lpt3/lpt4/lpt5/lpt6/lpt7/lpt8/lpt9'
95 B = 'data/l/lp/lpt/lpt0/lp~741/lp~742/lp~743/lp~744/lp~745/lp~746/lp~747/lp~748/lp~749'
143 B = 'data/l/lp/lpt/lpt0/lp~741/lp~742/lp~743/lp~744/lp~745/lp~746/lp~747/lp~748/lp~749'
96
144
97 A = 'data/L/LP/LPT/LPT0/LPT1/LPT2/LPT3/LPT4/LPT5/LPT6/LPT7/LPT8/LPT9'
145 A = 'data/L/LP/LPT/LPT0/LPT1/LPT2/LPT3/LPT4/LPT5/LPT6/LPT7/LPT8/LPT9'
98 B = 'data/_l/_l_p/_l_p_t/_l_p_t0/_l_p_t1/_l_p_t2/_l_p_t3/_l_p_t4/_l_p_t5/_l_p_t6/_l_p_t7/_l_p_t8/_l_p_t9'
146 B = 'data/_l/_l_p/_l_p_t/_l_p_t0/_l_p_t1/_l_p_t2/_l_p_t3/_l_p_t4/_l_p_t5/_l_p_t6/_l_p_t7/_l_p_t8/_l_p_t9'
99
147
100 A = 'data/l.x/lp.x/lpt.x/lpt0.x/lpt1.x/lpt2.x/lpt3.x/lpt4.x/lpt5.x/lpt6.x/lpt7.x/lpt8.x/lpt9.x'
148 A = 'data/l.x/lp.x/lpt.x/lpt0.x/lpt1.x/lpt2.x/lpt3.x/lpt4.x/lpt5.x/lpt6.x/lpt7.x/lpt8.x/lpt9.x'
101 B = 'data/l.x/lp.x/lpt.x/lpt0.x/lp~741.x/lp~742.x/lp~743.x/lp~744.x/lp~745.x/lp~746.x/lp~747.x/lp~748.x/lp~749.x'
149 B = 'data/l.x/lp.x/lpt.x/lpt0.x/lp~741.x/lp~742.x/lp~743.x/lp~744.x/lp~745.x/lp~746.x/lp~747.x/lp~748.x/lp~749.x'
102
150
103 A = 'data/x.l/x.lp/x.lpt/x.lpt0/x.lpt1/x.lpt2/x.lpt3/x.lpt4/x.lpt5/x.lpt6/x.lpt7/x.lpt8/x.lpt9'
151 A = 'data/x.l/x.lp/x.lpt/x.lpt0/x.lpt1/x.lpt2/x.lpt3/x.lpt4/x.lpt5/x.lpt6/x.lpt7/x.lpt8/x.lpt9'
104 B = 'data/x.l/x.lp/x.lpt/x.lpt0/x.lpt1/x.lpt2/x.lpt3/x.lpt4/x.lpt5/x.lpt6/x.lpt7/x.lpt8/x.lpt9'
152 B = 'data/x.l/x.lp/x.lpt/x.lpt0/x.lpt1/x.lpt2/x.lpt3/x.lpt4/x.lpt5/x.lpt6/x.lpt7/x.lpt8/x.lpt9'
105
153
106 A = 'data/lx/lpx/lptx/lpt0x/lpt1x/lpt2x/lpt3x/lpt4x/lpt5x/lpt6x/lpt7x/lpt8x/lpt9x'
154 A = 'data/lx/lpx/lptx/lpt0x/lpt1x/lpt2x/lpt3x/lpt4x/lpt5x/lpt6x/lpt7x/lpt8x/lpt9x'
107 B = 'data/lx/lpx/lptx/lpt0x/lpt1x/lpt2x/lpt3x/lpt4x/lpt5x/lpt6x/lpt7x/lpt8x/lpt9x'
155 B = 'data/lx/lpx/lptx/lpt0x/lpt1x/lpt2x/lpt3x/lpt4x/lpt5x/lpt6x/lpt7x/lpt8x/lpt9x'
108
156
109 A = 'data/xl/xlp/xlpt/xlpt0/xlpt1/xlpt2/xlpt3/xlpt4/xlpt5/xlpt6/xlpt7/xlpt8/xlpt9'
157 A = 'data/xl/xlp/xlpt/xlpt0/xlpt1/xlpt2/xlpt3/xlpt4/xlpt5/xlpt6/xlpt7/xlpt8/xlpt9'
110 B = 'data/xl/xlp/xlpt/xlpt0/xlpt1/xlpt2/xlpt3/xlpt4/xlpt5/xlpt6/xlpt7/xlpt8/xlpt9'
158 B = 'data/xl/xlp/xlpt/xlpt0/xlpt1/xlpt2/xlpt3/xlpt4/xlpt5/xlpt6/xlpt7/xlpt8/xlpt9'
111
159
112 A = 'data/con/p/pr/prn/a/au/aux/n/nu/nul'
160 A = 'data/con/p/pr/prn/a/au/aux/n/nu/nul'
113 B = 'data/co~6e/p/pr/pr~6e/a/au/au~78/n/nu/nu~6c'
161 B = 'data/co~6e/p/pr/pr~6e/a/au/au~78/n/nu/nu~6c'
114
162
115 A = 'data/CON/P/PR/PRN/A/AU/AUX/N/NU/NUL'
163 A = 'data/CON/P/PR/PRN/A/AU/AUX/N/NU/NUL'
116 B = 'data/_c_o_n/_p/_p_r/_p_r_n/_a/_a_u/_a_u_x/_n/_n_u/_n_u_l'
164 B = 'data/_c_o_n/_p/_p_r/_p_r_n/_a/_a_u/_a_u_x/_n/_n_u/_n_u_l'
117
165
118 A = 'data/con.x/p.x/pr.x/prn.x/a.x/au.x/aux.x/n.x/nu.x/nul.x'
166 A = 'data/con.x/p.x/pr.x/prn.x/a.x/au.x/aux.x/n.x/nu.x/nul.x'
119 B = 'data/co~6e.x/p.x/pr.x/pr~6e.x/a.x/au.x/au~78.x/n.x/nu.x/nu~6c.x'
167 B = 'data/co~6e.x/p.x/pr.x/pr~6e.x/a.x/au.x/au~78.x/n.x/nu.x/nu~6c.x'
120
168
121 A = 'data/x.con/x.p/x.pr/x.prn/x.a/x.au/x.aux/x.n/x.nu/x.nul'
169 A = 'data/x.con/x.p/x.pr/x.prn/x.a/x.au/x.aux/x.n/x.nu/x.nul'
122 B = 'data/x.con/x.p/x.pr/x.prn/x.a/x.au/x.aux/x.n/x.nu/x.nul'
170 B = 'data/x.con/x.p/x.pr/x.prn/x.a/x.au/x.aux/x.n/x.nu/x.nul'
123
171
124 A = 'data/conx/px/prx/prnx/ax/aux/auxx/nx/nux/nulx'
172 A = 'data/conx/px/prx/prnx/ax/aux/auxx/nx/nux/nulx'
125 B = 'data/conx/px/prx/prnx/ax/au~78/auxx/nx/nux/nulx'
173 B = 'data/conx/px/prx/prnx/ax/au~78/auxx/nx/nux/nulx'
126
174
127 A = 'data/xcon/xp/xpr/xprn/xa/xau/xaux/xn/xnu/xnul'
175 A = 'data/xcon/xp/xpr/xprn/xa/xau/xaux/xn/xnu/xnul'
128 B = 'data/xcon/xp/xpr/xprn/xa/xau/xaux/xn/xnu/xnul'
176 B = 'data/xcon/xp/xpr/xprn/xa/xau/xaux/xn/xnu/xnul'
129
177
178 A = 'data/a./au./aux./auxy./aux.'
179 B = 'data/a~2e/au~2e/au~78~2e/auxy~2e/au~78~2e'
180
181 A = 'data/c./co./con./cony./con.'
182 B = 'data/c~2e/co~2e/co~6e~2e/cony~2e/co~6e~2e'
183
184 A = 'data/p./pr./prn./prny./prn.'
185 B = 'data/p~2e/pr~2e/pr~6e~2e/prny~2e/pr~6e~2e'
186
187 A = 'data/n./nu./nul./nuly./nul.'
188 B = 'data/n~2e/nu~2e/nu~6c~2e/nuly~2e/nu~6c~2e'
189
190 A = 'data/l./lp./lpt./lpt1./lpt1y./lpt1.'
191 B = 'data/l~2e/lp~2e/lpt~2e/lp~741~2e/lpt1y~2e/lp~741~2e'
192
193 A = 'data/lpt9./lpt9y./lpt9.'
194 B = 'data/lp~749~2e/lpt9y~2e/lp~749~2e'
195
196 A = 'data/com./com1./com1y./com1.'
197 B = 'data/com~2e/co~6d1~2e/com1y~2e/co~6d1~2e'
198
199 A = 'data/com9./com9y./com9.'
200 B = 'data/co~6d9~2e/com9y~2e/co~6d9~2e'
201
202 A = 'data/a /au /aux /auxy /aux '
203 B = 'data/a~20/au~20/aux~20/auxy~20/aux~20'
204
130 largest unhashed path
205 largest unhashed path
131 A = 'data/123456789-123456789-123456789-123456789-123456789-unhashed--xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
206 A = 'data/123456789-123456789-123456789-123456789-123456789-unhashed--xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
132 B = 'data/123456789-123456789-123456789-123456789-123456789-unhashed--xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
207 B = 'data/123456789-123456789-123456789-123456789-123456789-unhashed--xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
133
208
134 shortest hashed path
209 shortest hashed path
135 A = 'data/123456789-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
210 A = 'data/123456789-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
136 B = 'dh/123456789-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxe9c55002b50bf5181e7a6fc1f60b126e2a6fcf71'
211 B = 'dh/123456789-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxe9c55002b50bf5181e7a6fc1f60b126e2a6fcf71'
137
212
138 changing one char in part that's hashed away produces a different hash
213 changing one char in part that's hashed away produces a different hash
139 A = 'data/123456789-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxy-123456789-123456'
214 A = 'data/123456789-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxy-123456789-123456'
140 B = 'dh/123456789-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxd24fa4455faf8a94350c18e5eace7c2bb17af706'
215 B = 'dh/123456789-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxd24fa4455faf8a94350c18e5eace7c2bb17af706'
141
216
142 uppercase hitting length limit due to encoding
217 uppercase hitting length limit due to encoding
143 A = 'data/A23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
218 A = 'data/A23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
144 B = 'dh/a23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxcbbc657029b41b94ed510d05feb6716a5c03bc6b'
219 B = 'dh/a23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxcbbc657029b41b94ed510d05feb6716a5c03bc6b'
145
220
146 A = 'data/Z23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
221 A = 'data/Z23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
147 B = 'dh/z23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxx938f32a725c89512833fb96b6602dd9ebff51ddd'
222 B = 'dh/z23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxx938f32a725c89512833fb96b6602dd9ebff51ddd'
148
223
149 compare with lowercase not hitting limit
224 compare with lowercase not hitting limit
150 A = 'data/a23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
225 A = 'data/a23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
151 B = 'data/a23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
226 B = 'data/a23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
152
227
153 A = 'data/z23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
228 A = 'data/z23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
154 B = 'data/z23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
229 B = 'data/z23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
155
230
156 not hitting limit with any of these
231 not hitting limit with any of these
157 A = 'data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&\'()+,-.;=[]^`{}xxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
232 A = 'data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&\'()+,-.;=[]^`{}xxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
158 B = 'data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&\'()+,-.;=[]^`{}xxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
233 B = 'data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&\'()+,-.;=[]^`{}xxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
159
234
160 underbar hitting length limit due to encoding
235 underbar hitting length limit due to encoding
161 A = 'data/_23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
236 A = 'data/_23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
162 B = 'dh/_23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxx9921a01af50feeabc060ce00eee4cba6efc31d2b'
237 B = 'dh/_23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxx9921a01af50feeabc060ce00eee4cba6efc31d2b'
163
238
164 tilde hitting length limit due to encoding
239 tilde hitting length limit due to encoding
165 A = 'data/~23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
240 A = 'data/~23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
166 B = 'dh/~7e23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx9cec6f97d569c10995f785720044ea2e4227481b'
241 B = 'dh/~7e23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx9cec6f97d569c10995f785720044ea2e4227481b'
167
242
168 Windows reserved characters hitting length limit
243 Windows reserved characters hitting length limit
169 A = 'data/<23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
244 A = 'data/<23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
170 B = 'dh/~3c23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxee67d8f275876ca1ef2500fc542e63c885c4e62d'
245 B = 'dh/~3c23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxee67d8f275876ca1ef2500fc542e63c885c4e62d'
171
246
172 A = 'data/>23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
247 A = 'data/>23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
173 B = 'dh/~3e23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx387a85a5b1547cc9136310c974df716818458ddb'
248 B = 'dh/~3e23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx387a85a5b1547cc9136310c974df716818458ddb'
174
249
175 A = 'data/:23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
250 A = 'data/:23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
176 B = 'dh/~3a23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx2e4154fb571d13d22399c58cc4ef4858e4b75999'
251 B = 'dh/~3a23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx2e4154fb571d13d22399c58cc4ef4858e4b75999'
177
252
178 A = 'data/"23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
253 A = 'data/"23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
179 B = 'dh/~2223456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxfc7e3ec7b0687ee06ed8c32fef0eb0c1980259f5'
254 B = 'dh/~2223456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxfc7e3ec7b0687ee06ed8c32fef0eb0c1980259f5'
180
255
181 A = 'data/\\23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
256 A = 'data/\\23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
182 B = 'dh/~5c23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx944e1f2b7110687e116e0d151328ac648b06ab4a'
257 B = 'dh/~5c23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx944e1f2b7110687e116e0d151328ac648b06ab4a'
183
258
184 A = 'data/|23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
259 A = 'data/|23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
185 B = 'dh/~7c23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx28b23dd3fd0242946334126ab62bcd772aac32f4'
260 B = 'dh/~7c23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx28b23dd3fd0242946334126ab62bcd772aac32f4'
186
261
187 A = 'data/?23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
262 A = 'data/?23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
188 B = 'dh/~3f23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxa263022d3994d2143d98f94f431eef8b5e7e0f8a'
263 B = 'dh/~3f23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxa263022d3994d2143d98f94f431eef8b5e7e0f8a'
189
264
190 A = 'data/*23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
265 A = 'data/*23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
191 B = 'dh/~2a23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx0e7e6020e3c00ba7bb7893d84ca2966fbf53e140'
266 B = 'dh/~2a23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx0e7e6020e3c00ba7bb7893d84ca2966fbf53e140'
192
267
193 initial space hitting length limit
268 initial space hitting length limit
194 A = 'data/ 23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
269 A = 'data/ 23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
195 B = 'dh/~2023456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx92acbc78ef8c0b796111629a02601f07d8aec4ea'
270 B = 'dh/~2023456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx92acbc78ef8c0b796111629a02601f07d8aec4ea'
196
271
197 initial dot hitting length limit
272 initial dot hitting length limit
198 A = 'data/.23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
273 A = 'data/.23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
199 B = 'dh/~2e23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxdbe19cc6505b3515ab9228cebf877ad07075168f'
274 B = 'dh/~2e23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxdbe19cc6505b3515ab9228cebf877ad07075168f'
200
275
201 trailing space in filename hitting length limit
276 trailing space in filename hitting length limit
202 A = 'data/123456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-1234 '
277 A = 'data/123456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-1234 '
203 B = 'dh/123456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxx0025dc73e04f97426db4893e3bf67d581dc6d066'
278 B = 'dh/123456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxx0025dc73e04f97426db4893e3bf67d581dc6d066'
204
279
205 trailing dot in filename hitting length limit
280 trailing dot in filename hitting length limit
206 A = 'data/123456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-1234.'
281 A = 'data/123456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-1234.'
207 B = 'dh/123456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxx85a16cf03ee7feba8a5abc626f1ba9886d01e89d'
282 B = 'dh/123456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxx85a16cf03ee7feba8a5abc626f1ba9886d01e89d'
208
283
209 initial space in directory hitting length limit
284 initial space in directory hitting length limit
210 A = 'data/ x/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
285 A = 'data/ x/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
211 B = 'dh/~20x/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx1b3a3b712b2ac00d6af14ae8b4c14fdbf904f516'
286 B = 'dh/~20x/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx1b3a3b712b2ac00d6af14ae8b4c14fdbf904f516'
212
287
213 initial dot in directory hitting length limit
288 initial dot in directory hitting length limit
214 A = 'data/.x/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
289 A = 'data/.x/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
215 B = 'dh/~2ex/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx39dbc4c193a5643a8936fc69c3363cd7ac91ab14'
290 B = 'dh/~2ex/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx39dbc4c193a5643a8936fc69c3363cd7ac91ab14'
216
291
217 trailing space in directory hitting length limit
292 trailing space in directory hitting length limit
218 A = 'data/x /456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
293 A = 'data/x /456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
219 B = 'dh/x~20/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx2253c341df0b5290790ad312cd8499850f2273e5'
294 B = 'dh/x~20/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx2253c341df0b5290790ad312cd8499850f2273e5'
220
295
221 trailing dot in directory hitting length limit
296 trailing dot in directory hitting length limit
222 A = 'data/x./456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
297 A = 'data/x./456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
223 B = 'dh/x~2e/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxcc0324d696d34562b44b5138db08ee1594ccc583'
298 B = 'dh/x~2e/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxcc0324d696d34562b44b5138db08ee1594ccc583'
224
299
225 with directories that need direncoding, hitting length limit
300 with directories that need direncoding, hitting length limit
226 A = 'data/x.i/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
301 A = 'data/x.i/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
227 B = 'dh/x.i.hg/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxa4c4399bdf81c67dbbbb7060aa0124d8dea94f74'
302 B = 'dh/x.i.hg/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxa4c4399bdf81c67dbbbb7060aa0124d8dea94f74'
228
303
229 A = 'data/x.d/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
304 A = 'data/x.d/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
230 B = 'dh/x.d.hg/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxx1303fa90473b230615f5b3ea7b660e881ae5270a'
305 B = 'dh/x.d.hg/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxx1303fa90473b230615f5b3ea7b660e881ae5270a'
231
306
232 A = 'data/x.hg/5789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
307 A = 'data/x.hg/5789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
233 B = 'dh/x.hg.hg/5789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxx26d724a8af68e7a4e4455e6602ea9adbd0eb801f'
308 B = 'dh/x.hg.hg/5789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxx26d724a8af68e7a4e4455e6602ea9adbd0eb801f'
234
309
235 Windows reserved filenames, hitting length limit
310 Windows reserved filenames, hitting length limit
236 A = 'data/con/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
311 A = 'data/con/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
237 B = 'dh/co~6e/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxc0794d4f4c605a2617900eb2563d7113cf6ea7d3'
312 B = 'dh/co~6e/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxc0794d4f4c605a2617900eb2563d7113cf6ea7d3'
238
313
239 A = 'data/prn/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
314 A = 'data/prn/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
240 B = 'dh/pr~6e/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx64db876e1a9730e27236cb9b167aff942240e932'
315 B = 'dh/pr~6e/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx64db876e1a9730e27236cb9b167aff942240e932'
241
316
242 A = 'data/aux/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
317 A = 'data/aux/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
243 B = 'dh/au~78/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx8a178558405ca6fb4bbd75446dfa186f06751a0d'
318 B = 'dh/au~78/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx8a178558405ca6fb4bbd75446dfa186f06751a0d'
244
319
245 A = 'data/nul/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
320 A = 'data/nul/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
246 B = 'dh/nu~6c/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxc5e51b6fec1bd07bd243b053a0c3f7209855b886'
321 B = 'dh/nu~6c/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxc5e51b6fec1bd07bd243b053a0c3f7209855b886'
247
322
248 A = 'data/com1/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
323 A = 'data/com1/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
249 B = 'dh/co~6d1/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx32f5f44ece3bb62b9327369ca84cc19c86259fcd'
324 B = 'dh/co~6d1/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx32f5f44ece3bb62b9327369ca84cc19c86259fcd'
250
325
251 A = 'data/com9/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
326 A = 'data/com9/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
252 B = 'dh/co~6d9/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx734360b28c66a3230f55849fe8926206d229f990'
327 B = 'dh/co~6d9/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx734360b28c66a3230f55849fe8926206d229f990'
253
328
254 A = 'data/lpt1/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
329 A = 'data/lpt1/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
255 B = 'dh/lp~741/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxe6f16ab4b6b0637676b2842b3345c9836df46ef7'
330 B = 'dh/lp~741/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxe6f16ab4b6b0637676b2842b3345c9836df46ef7'
256
331
257 A = 'data/lpt9/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
332 A = 'data/lpt9/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
258 B = 'dh/lp~749/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxa475814c51acead3e44f2ff801f0c4903f986157'
333 B = 'dh/lp~749/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxa475814c51acead3e44f2ff801f0c4903f986157'
259
334
260 non-reserved names, just not hitting limit
335 non-reserved names, just not hitting limit
261 A = 'data/123456789-123456789-123456789-123456789-123456789-/com/com0/lpt/lpt0/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
336 A = 'data/123456789-123456789-123456789-123456789-123456789-/com/com0/lpt/lpt0/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
262 B = 'data/123456789-123456789-123456789-123456789-123456789-/com/com0/lpt/lpt0/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
337 B = 'data/123456789-123456789-123456789-123456789-123456789-/com/com0/lpt/lpt0/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
263
338
264 hashed path with largest untruncated 1st dir
339 hashed path with largest untruncated 1st dir
265 A = 'data/12345678/-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
340 A = 'data/12345678/-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
266 B = 'dh/12345678/-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxx4e9e9e384d00929a93b6835fbf976eb32321ff3c'
341 B = 'dh/12345678/-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxx4e9e9e384d00929a93b6835fbf976eb32321ff3c'
267
342
268 hashed path with smallest truncated 1st dir
343 hashed path with smallest truncated 1st dir
269 A = 'data/123456789/123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
344 A = 'data/123456789/123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
270 B = 'dh/12345678/123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxx1f4e4ec5f2be76e109bfaa8e31c062fe426d5490'
345 B = 'dh/12345678/123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxx1f4e4ec5f2be76e109bfaa8e31c062fe426d5490'
271
346
272 hashed path with largest untruncated two dirs
347 hashed path with largest untruncated two dirs
273 A = 'data/12345678/12345678/9-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
348 A = 'data/12345678/12345678/9-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
274 B = 'dh/12345678/12345678/9-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxx3332d8329d969cf835542a9f2cbcfb385b6cf39d'
349 B = 'dh/12345678/12345678/9-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxx3332d8329d969cf835542a9f2cbcfb385b6cf39d'
275
350
276 hashed path with smallest truncated two dirs
351 hashed path with smallest truncated two dirs
277 A = 'data/123456789/123456789/123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
352 A = 'data/123456789/123456789/123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
278 B = 'dh/12345678/12345678/123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx9699559798247dffa18717138859be5f8874840e'
353 B = 'dh/12345678/12345678/123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx9699559798247dffa18717138859be5f8874840e'
279
354
280 hashed path with largest untruncated three dirs
355 hashed path with largest untruncated three dirs
281 A = 'data/12345678/12345678/12345678/89-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
356 A = 'data/12345678/12345678/12345678/89-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
282 B = 'dh/12345678/12345678/12345678/89-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxf0a2b053bb1369cce02f78c217d6a7aaea18c439'
357 B = 'dh/12345678/12345678/12345678/89-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxf0a2b053bb1369cce02f78c217d6a7aaea18c439'
283
358
284 hashed path with smallest truncated three dirs
359 hashed path with smallest truncated three dirs
285 A = 'data/123456789/123456789/123456789/123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
360 A = 'data/123456789/123456789/123456789/123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
286 B = 'dh/12345678/12345678/12345678/123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-1c6f8284967384ec13985a046d3553179d9d03cd'
361 B = 'dh/12345678/12345678/12345678/123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-1c6f8284967384ec13985a046d3553179d9d03cd'
287
362
288 hashed path with largest untruncated four dirs
363 hashed path with largest untruncated four dirs
289 A = 'data/12345678/12345678/12345678/12345678/789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
364 A = 'data/12345678/12345678/12345678/12345678/789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
290 B = 'dh/12345678/12345678/12345678/12345678/789-123456789-hashed----xxxxxxxxx-xxxxxxx0d30c99049d8f0ff97b94d4ef302027e8d54c6fd'
365 B = 'dh/12345678/12345678/12345678/12345678/789-123456789-hashed----xxxxxxxxx-xxxxxxx0d30c99049d8f0ff97b94d4ef302027e8d54c6fd'
291
366
292 hashed path with smallest truncated four dirs
367 hashed path with smallest truncated four dirs
293 A = 'data/123456789/123456789/123456789/123456789/123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
368 A = 'data/123456789/123456789/123456789/123456789/123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
294 B = 'dh/12345678/12345678/12345678/12345678/123456789-hashed----xxxxxxxxx-xxxxxxxxx-x46162779e1a771810b37a737f82ae7ed33771402'
369 B = 'dh/12345678/12345678/12345678/12345678/123456789-hashed----xxxxxxxxx-xxxxxxxxx-x46162779e1a771810b37a737f82ae7ed33771402'
295
370
296 hashed path with largest untruncated five dirs
371 hashed path with largest untruncated five dirs
297 A = 'data/12345678/12345678/12345678/12345678/12345678/6789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
372 A = 'data/12345678/12345678/12345678/12345678/12345678/6789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
298 B = 'dh/12345678/12345678/12345678/12345678/12345678/6789-hashed----xxxxxxxxx-xxxxxxxbfe752ddc8b003c2790c66a9f2eb1ea75c114390'
373 B = 'dh/12345678/12345678/12345678/12345678/12345678/6789-hashed----xxxxxxxxx-xxxxxxxbfe752ddc8b003c2790c66a9f2eb1ea75c114390'
299
374
300 hashed path with smallest truncated five dirs
375 hashed path with smallest truncated five dirs
301 A = 'data/123456789/123456789/123456789/123456789/123456789/hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
376 A = 'data/123456789/123456789/123456789/123456789/123456789/hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
302 B = 'dh/12345678/12345678/12345678/12345678/12345678/hashed----xxxxxxxxx-xxxxxxxxx-xxb94c27b3532fa880cdd572b1c514785cab7b6ff2'
377 B = 'dh/12345678/12345678/12345678/12345678/12345678/hashed----xxxxxxxxx-xxxxxxxxx-xxb94c27b3532fa880cdd572b1c514785cab7b6ff2'
303
378
304 hashed path with largest untruncated six dirs
379 hashed path with largest untruncated six dirs
305 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/ed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
380 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/ed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
306 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/ed----xxxxxxxxx-xxxxxxxcd8cc5483a0f3be409e0e5d4bf9e36e113c59235'
381 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/ed----xxxxxxxxx-xxxxxxxcd8cc5483a0f3be409e0e5d4bf9e36e113c59235'
307
382
308 hashed path with smallest truncated six dirs
383 hashed path with smallest truncated six dirs
309 A = 'data/123456789/123456789/123456789/123456789/123456789/123456789/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
384 A = 'data/123456789/123456789/123456789/123456789/123456789/123456789/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
310 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxxxx-xxxxxxxxx-xxx47dd6f616f833a142da00701b334cebbf640da06'
385 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxxxx-xxxxxxxxx-xxx47dd6f616f833a142da00701b334cebbf640da06'
311
386
312 hashed path with largest untruncated seven dirs
387 hashed path with largest untruncated seven dirs
313 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
388 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
314 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxx-xxxxxxx1c8ed635229fc22efe51035feeadeb4c8a0ecb82'
389 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxx-xxxxxxx1c8ed635229fc22efe51035feeadeb4c8a0ecb82'
315
390
316 hashed path with smallest truncated seven dirs
391 hashed path with smallest truncated seven dirs
317 A = 'data/123456789/123456789/123456789/123456789/123456789/123456789/123456789/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
392 A = 'data/123456789/123456789/123456789/123456789/123456789/123456789/123456789/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
318 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxxxx-xxxx298ff7d33f8ce6db57930837ffea2fb2f48bb926'
393 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxxxx-xxxx298ff7d33f8ce6db57930837ffea2fb2f48bb926'
319
394
320 hashed path with largest untruncated eight dirs
395 hashed path with largest untruncated eight dirs
321 (directory 8 is dropped because it hits _maxshortdirslen)
396 (directory 8 is dropped because it hits _maxshortdirslen)
322 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
397 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
323 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxx-xxxxxxc8996ccd41b471f768057181a4d59d2febe7277d'
398 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxx-xxxxxxc8996ccd41b471f768057181a4d59d2febe7277d'
324
399
325 hashed path with smallest truncated eight dirs
400 hashed path with smallest truncated eight dirs
326 (directory 8 is dropped because it hits _maxshortdirslen)
401 (directory 8 is dropped because it hits _maxshortdirslen)
327 A = 'data/123456789/123456789/123456789/123456789/123456789/123456789/123456789/123456789/xxxxxxxxx-xxxxxxxxx-123456789-123456'
402 A = 'data/123456789/123456789/123456789/123456789/123456789/123456789/123456789/123456789/xxxxxxxxx-xxxxxxxxx-123456789-123456'
328 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxxxx-xxxx4fa04a839a6bda93e1c21c713f2edcbd16e8890d'
403 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxxxx-xxxx4fa04a839a6bda93e1c21c713f2edcbd16e8890d'
329
404
330 hashed path with largest non-dropped directory 8
405 hashed path with largest non-dropped directory 8
331 (just not hitting the _maxshortdirslen boundary)
406 (just not hitting the _maxshortdirslen boundary)
332 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
407 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
333 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxx4d43d1ccaa20efbfe99ec779dc063611536ff2c5'
408 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxx4d43d1ccaa20efbfe99ec779dc063611536ff2c5'
334
409
335 ...adding one truncated char to dir 1..7 won't drop dir 8
410 ...adding one truncated char to dir 1..7 won't drop dir 8
336 A = 'data/12345678x/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
411 A = 'data/12345678x/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
337 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxx0f9efce65189cc60fd90fe4ffd49d7b58bbe0f2e'
412 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxx0f9efce65189cc60fd90fe4ffd49d7b58bbe0f2e'
338
413
339 A = 'data/12345678/12345678x/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
414 A = 'data/12345678/12345678x/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
340 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxx945ca395708cafdd54a94501859beabd3e243921'
415 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxx945ca395708cafdd54a94501859beabd3e243921'
341
416
342 A = 'data/12345678/12345678/12345678x/12345678/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
417 A = 'data/12345678/12345678/12345678x/12345678/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
343 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxac62bf6898c4fd0502146074547c11caa751a327'
418 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxac62bf6898c4fd0502146074547c11caa751a327'
344
419
345 A = 'data/12345678/12345678/12345678/12345678x/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
420 A = 'data/12345678/12345678/12345678/12345678x/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
346 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxx2ae5a2baed7983fae8974d0ca06c6bf08b9aee92'
421 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxx2ae5a2baed7983fae8974d0ca06c6bf08b9aee92'
347
422
348 A = 'data/12345678/12345678/12345678/12345678/12345678x/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
423 A = 'data/12345678/12345678/12345678/12345678/12345678x/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
349 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxx214aba07b6687532a43d1e9eaf6e88cfca96b68c'
424 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxx214aba07b6687532a43d1e9eaf6e88cfca96b68c'
350
425
351 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678x/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
426 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678x/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
352 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxe7a022ae82f0f55cf4e0498e55ba59ea4ebb55bf'
427 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxe7a022ae82f0f55cf4e0498e55ba59ea4ebb55bf'
353
428
354 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678x/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
429 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678x/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
355 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxb51ce61164996a80f36ce3cfe64b62d519aedae3'
430 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxb51ce61164996a80f36ce3cfe64b62d519aedae3'
356
431
357 hashed path with shortest dropped directory 8
432 hashed path with shortest dropped directory 8
358 (just hitting the _maxshortdirslen boundary)
433 (just hitting the _maxshortdirslen boundary)
359 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/123456/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
434 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/123456/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
360 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxxxx-xxxx11fa9873cc6c3215eae864528b5530a04efc6cfe'
435 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxxxx-xxxx11fa9873cc6c3215eae864528b5530a04efc6cfe'
361
436
362 hashed path that drops dir 8 due to dot or space at end is
437 hashed path that drops dir 8 due to dot or space at end is
363 encoded, and thus causing to hit _maxshortdirslen
438 encoded, and thus causing to hit _maxshortdirslen
364 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/1234./-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
439 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/1234./-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
365 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/-xxxxxxxxx-xxx602df9b45bec564e2e1f0645d5140dddcc76ed58'
440 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/-xxxxxxxxx-xxx602df9b45bec564e2e1f0645d5140dddcc76ed58'
366
441
367 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/1234 /-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
442 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/1234 /-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
368 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/-xxxxxxxxx-xxxd99ff212bc84b4d1f70cd6b0071e3ef69d4e12ce'
443 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/-xxxxxxxxx-xxxd99ff212bc84b4d1f70cd6b0071e3ef69d4e12ce'
369
444
370 ... with dir 8 short enough for encoding
445 ... with dir 8 short enough for encoding
371 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12./xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
446 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12./xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
372 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12~2e/xx-xxxxx7baeb5ed7f14a586ee1cacecdbcbff70032d1b3c'
447 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12~2e/xx-xxxxx7baeb5ed7f14a586ee1cacecdbcbff70032d1b3c'
373
448
374 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12 /xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
449 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12 /xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
375 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12~20/xx-xxxxxcf79ca9795f77d7f75745da36807e5d772bd5182'
450 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12~20/xx-xxxxxcf79ca9795f77d7f75745da36807e5d772bd5182'
376
451
377 extensions are replicated on hashed paths (unbounded!)
452 extensions are replicated on hashed paths (unbounded!)
378 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.345'
453 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.345'
379 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxx50a65dfc4ab6bf5fb9ba949447ccaf456c1ebf30.345'
454 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxx50a65dfc4ab6bf5fb9ba949447ccaf456c1ebf30.345'
380
455
381 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456'
456 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456'
382 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxe5f03f29a0a5876660a28aefc43f978add5a7659.3456'
457 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxe5f03f29a0a5876660a28aefc43f978add5a7659.3456'
383
458
384 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.34567'
459 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.34567'
385 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xc2609a92347e5a14c29211c6cd634732d1f0c968.34567'
460 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xc2609a92347e5a14c29211c6cd634732d1f0c968.34567'
386
461
387 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.345678'
462 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.345678'
388 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-695e97d34c6cd8186afa3c74a56243bd645d50c3.345678'
463 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-695e97d34c6cd8186afa3c74a56243bd645d50c3.345678'
389
464
390 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789'
465 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789'
391 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/b067582449be78bc1266e9195785a5c6165380e6.3456789'
466 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/b067582449be78bc1266e9195785a5c6165380e6.3456789'
392
467
393 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-'
468 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-'
394 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/d3442b4cfe1fdbde1c4c60ad421e946344111961.3456789-'
469 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/d3442b4cfe1fdbde1c4c60ad421e946344111961.3456789-'
395
470
396 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-1'
471 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-1'
397 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/40a78aaf2114e1b82f91ac3ff234bf358d99dbba.3456789-1'
472 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/40a78aaf2114e1b82f91ac3ff234bf358d99dbba.3456789-1'
398
473
399 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-12'
474 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-12'
400 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/1e04221e6fbff8cfbeaf555d11550dc573e3326d.3456789-12'
475 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/1e04221e6fbff8cfbeaf555d11550dc573e3326d.3456789-12'
401
476
402 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-123'
477 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-123'
403 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/5e3b3973b3c9297b4577a4cf1d58162545a6b454.3456789-123'
478 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/5e3b3973b3c9297b4577a4cf1d58162545a6b454.3456789-123'
404
479
405 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-1234'
480 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-1234'
406 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/6ee6ef477c7ba44ff19c7d97fc4ac7fa4a8e4665.3456789-1234'
481 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/6ee6ef477c7ba44ff19c7d97fc4ac7fa4a8e4665.3456789-1234'
407
482
408 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-12345'
483 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-12345'
409 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/f08b927027344ec4a7f1994ecb0effe2b9cc1215.3456789-12345'
484 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/f08b927027344ec4a7f1994ecb0effe2b9cc1215.3456789-12345'
410
485
411 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-12345-ABCDEFGHIJKLMNOPRSTUVWXYZ-abcdefghjiklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPRSTUVWXYZ-1234567890-xxxxxxxxx-xxxxxxxxx-xxxxxxxx-xxxxxxxxx-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww'
486 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-12345-ABCDEFGHIJKLMNOPRSTUVWXYZ-abcdefghjiklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPRSTUVWXYZ-1234567890-xxxxxxxxx-xxxxxxxxx-xxxxxxxx-xxxxxxxxx-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww'
412 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/28de8651e30eeb95f4b97edb7d12b281d3fb3ce0.3456789-12345-abcdefghijklmnoprstuvwxyz-abcdefghjiklmnopqrstuvwxyz-abcdefghijklmnoprstuvwxyz-1234567890-xxxxxxxxx-xxxxxxxxx-xxxxxxxx-xxxxxxxxx-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww'
487 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/28de8651e30eeb95f4b97edb7d12b281d3fb3ce0.3456789-12345-abcdefghijklmnoprstuvwxyz-abcdefghjiklmnopqrstuvwxyz-abcdefghijklmnoprstuvwxyz-1234567890-xxxxxxxxx-xxxxxxxxx-xxxxxxxx-xxxxxxxxx-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww'
413
488
General Comments 0
You need to be logged in to leave comments. Login now