powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Какой самый лучший и точный декомпилятор?
25 сообщений из 32, страница 1 из 2
Какой самый лучший и точный декомпилятор?
    #36572610
Ренальд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Какой на ваш взгляд самый лучший и точный декомпилятор классов?
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36572641
Alexey Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренальд,

fernflower
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36572670
banderus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренальд,

JD
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36572905
Ренальд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
banderus

JD
Он с искючениями неможет работать
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36572907
Ренальд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
banderus

JD
Он с искючениями неможет работать
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36572916
Ренальд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
banderus
JD
А так он отличный. А как ты компилируешь код?(т.е. как заполняешь форму компиляции)
там пять textbox'ов. Что пишеь в первый и вотрой? И обязательно заполнять пятый и четвёртый?
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36572942
Ренальд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
banderus,

И ещё вопрос. Что значит эта ошибка?Вот скрин.

http://i1.imageban.ru/thumbs/2010.04.11/78fec82187aa8822201e10daa72fef19.jpg
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36572944
Ренальд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey KuznetsovРенальд,

fernflower
Как только появится офлайн версия оповести пожалуста.

И ещё извеняюсь за дублёры посты
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36573162
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже у создателя там какие-то трудности.

Stiver
Возникли сложности с моим работодателем. Локальная версия уже используется внутри фирмы и похоже нет особого желания отдавать ее наружу. А открыто продавливать я пока не хочу, так что посмотрим, как пойдет... Online-версия в любом случае никуда не денется. Сейчас я переписываю ядро и правлю баги, которые мне присылают.
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36573220
Koolkhel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как бы написано, что хочет microedition, т.е. ему нужно classpath j2me, а не j2se. и вообще я не уверен что они прям совсем бинарно совместимы.
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36573252
Ренальд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Koolkhelкак бы написано, что хочет microedition, т.е. ему нужно classpath j2me, а не j2se. и вообще я не уверен что они прям совсем бинарно совместимы.
Я ничего не создавал. Я просто зашел на fernflower и декомпилировал первый попавшийся класс, а потом решил откомпилировать и он мне выдал эту ошибку. Это значит что декомпилятор fernflower не подходит или это у меня на компе чего то нахватает?На сколько я знаю j2me среда разработки.(или я ошибаюсь)Следовательно j2se тоже, но как то они по разному работают. А ещё знаю что подойдёт любой блокнот. В чём разница между j2me и j2se?
У меня есть следующие декомпиляторы
jd gui 0.3.2

Cavaj Java Decompiler

DJ Java Decompiler 3.10
И вот ещё вопрос
что это такое DCompiler.jar и jode-1.1.2-pre1.jar ? Для чего они и куда их положить?
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36573578
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РенальдЯ просто зашел на fernflower и декомпилировал [/b]первый попавшийся класс, а потом решил откомпилировать и он мне выдал эту ошибку. Это значит что декомпилятор fernflower не подходит или это у меня на компе чего то нахватает?компиляция - процесс с потерей данных, потому декомпиляция это сродни "угадай". Декомпилированные классы могут не компилироваться или компилиться с ошибками. Это нормально.

Хотя конечно хочется чтобы точность была повыше
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36574022
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoDAДекомпилированные классы могут не компилироваться или компилиться с ошибками. Это нормально.
Не согласен. Декомпилляцию (принципиально) можно сделать всегда.
Другое дело что внешний вид исходного кода будет непрезентабелен
для чтения человеком.
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36574169
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"mayton" <nospam@sql.ru>;
> Декомпилляцию (принципиально) можно сделать всегда.


тынц не приведу, так как утерян давно, но ваше утверждение не верно.

Скажи Microsoft'у "Прощай"!

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36574184
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно это глубокий софизм, но исходний бинарник
который невозможно декомпилировать, невозможно и
выполнить.

Тыщу раз ИМХО.
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36574212
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"mayton" <nospam@sql.ru>;
> Автор: mayton
> Возможно это глубокий софизм, но исходний бинарник
> который невозможно декомпилировать, невозможно и
> выполнить.
>
> Тыщу раз ИМХО.
> Тема Ответить Сообщение
>



это тоже неверно. ребята из питера (тынц был на их блог) давали пример, в котором руками собирали байт-код, принципиально невозможный с точки зрения компилятора, но тем не менее вполне работающий.

хотя если придраться к словам и считать декомпиляцию - процессом, обратным компиляции в том смысле, что декомпилировать классы, собранные руками, мы не будем, а только те, которые были компилированы, то да.. декомпилировать можно всегда.

Скажи Microsoft'у "Прощай"!

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36574244
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я мысль понял. Используя недокументированные последовательности инструкций можно сымитировать бинарник, который успешно проходит класслоадер, валидацию и исполняется, но при этом ему не соответствует ни один исходник из бесконечного множества исходников JAVA. Но думаю, что декомпилировать его в инструкции JVM ассемблера вполне возможно. И это будет подтверждение моей правоты. А искать глубинный смысл в нём - это уже совсем другая проблема.
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36574768
Ренальд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VoDA,

Но ведь люди как то находят код и компилируют. Чтож теперь мне делать то?
Я в программировании пишу только на бэйсике.
Объясняю почему мне нужно знать яву. Недавно скачал игру не телефон Анархия. Без лиценции. Там написали что эта версия оригинальная, а я поверил. Отправил смс и сконцами. Теперь хочу хакнуть или убрать режим демо. При декомпиляции вижу где идёт проверка демо времени и условие.
Если время вышло то False(кукиш). Испровляю кукиш на TRUE а вот компилировать неполучается
Помогите найти самый точный и проверенный декомпилятор или объясните как декомпилируются классы а потом компилируются.
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36574772
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey KuznetsovРенальд,

fernflower
Попробовал. Не очень. Еще не разобрался но кажется он игнорирует константы. Он сохраняет их декларации в виде static final переменных но в исходном коде они автоматически заменяются на числа. Это создаёт трудности при разборе смысла исходного кода.

Хотя... может быть так и должно быть..
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36574783
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренальд Объясняю почему мне нужно знать яву.
.....
Теперь хочу хакнуть или убрать режим демо.
Аццкий сотона!

Замечательная мотивация. Ну что-же успехов. Не забывай, чтобы собрать
Java игру под мобилку нужно поставить дополнительные навороты в свою JDK.

Пиши если что...
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36574880
Koolkhel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скажем так, я юзал dj java decompiler и что мне надо -- работало. сразу вроде не компилировалось, но мне и не было нужно -- я свои исходники восстанавливал.

а так -- сообщение об ошибке есть, значит есть куда копать ))
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36575411
Ренальд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
нужно поставить дополнительные навороты в свою JDK
А какие именно понадобятся и для чего каждая.Всё на сан находится?
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36575416
Ренальд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Koolkhelя свои исходники восстанавливал.
Да ты прав. Для востановления своих исходников подойдёт любой декомпилятор который похвалили. Мне же всё интересно как компилируются классы.Например на первом этапе все символы кодируются в такуюто кодировку. На втором в такуюто. И т.д.

Вот ещё вопрос. Скачал прогу JavaBite v.1.001 и немогу понять для чего она? Что мне делать с тем что она мне показывает?
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36575587
Ренальд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Koolkhel,

Вот что я придумал.
Я тут декомпилировал с помощью Cavaj Java Decompiler и с помощью jd-gui 0.3.2. Из jd-gui 0.3.2 взял все исключения и заминил в файле который декомпилировал на Cavaj Java Decompiler. И уже в DJ Java Decompiler 3.10 открыл для компиляции и вот он что мне выдал. Ошибок нету, но потом выскочило окно с информацией:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
C:\DOCUME~ 1 \ 8780 ~ 1 \ 0016 ~ 1 \DemoUtils.java: 2 :  package  javax.microedition.io does not exist
 import  javax.microedition.io.ConnectionNotFoundException;
                            ^
C:\DOCUME~ 1 \ 8780 ~ 1 \ 0016 ~ 1 \DemoUtils.java: 3 :  package  javax.microedition.lcdui does not exist
 import  javax.microedition.lcdui.*;
^
C:\DOCUME~ 1 \ 8780 ~ 1 \ 0016 ~ 1 \DemoUtils.java: 4 :  package  javax.microedition.midlet does not exist
 import  javax.microedition.midlet.MIDlet;
                                ^
C:\DOCUME~ 1 \ 8780 ~ 1 \ 0016 ~ 1 \DemoUtils.java: 5 :  package  javax.microedition.rms does not exist
 import  javax.microedition.rms.RecordStore;
                             ^
C:\DOCUME~ 1 \ 8780 ~ 1 \ 0016 ~ 1 \DemoUtils.java: 55 : cannot find symbol
symbol  :  class  Graphics
location:  class  DemoUtils
     public   static  Graphics grActive;
                  ^
C:\DOCUME~ 1 \ 8780 ~ 1 \ 0016 ~ 1 \DemoUtils.java: 56 : cannot find symbol
symbol  :  class  Image
location:  class  DemoUtils
     public   static  Image images[] =  new  Image[ 100 ];
                  ^
C:\DOCUME~ 1 \ 8780 ~ 1 \ 0016 ~ 1 \DemoUtils.java: 79 : cannot find symbol
symbol  :  class  Image
location:  class  DemoUtils
     private   static   final  Image _FontImage[] =  new  Image[ 1 ];
                         ^
C:\DOCUME~ 1 \ 8780 ~ 1 \ 0016 ~ 1 \DemoUtils.java: 405 : cannot find symbol
symbol  :  class  Image
location:  class  DemoUtils
     private   static   final  Image loadImage(DataInputStream dis)
                         ^
C:\DOCUME~ 1 \ 8780 ~ 1 \ 0016 ~ 1 \DemoUtils.java: 661 : cannot find symbol
symbol  :  class  Graphics
location:  class  DemoUtils
     public   static   void  drawBackGround(Graphics gr)
                                      ^
C:\DOCUME~ 1 \ 8780 ~ 1 \ 0016 ~ 1 \DemoUtils.java: 56 : cannot find symbol
symbol  :  class  Image
location:  class  DemoUtils
     public   static  Image images[] =  new  Image[ 100 ];
                                       ^
C:\DOCUME~ 1 \ 8780 ~ 1 \ 0016 ~ 1 \DemoUtils.java: 79 : cannot find symbol
symbol  :  class  Image
location:  class  DemoUtils
     private   static   final  Image _FontImage[] =  new  Image[ 1 ];
                                                  ^
C:\DOCUME~ 1 \ 8780 ~ 1 \ 0016 ~ 1 \DemoUtils.java: 102 : cannot find symbol
symbol  : variable DemoScreen
location:  class  DemoUtils
         while (DemoScreen._iTaskId !=  0 ) 
              ^
C:\DOCUME~ 1 \ 8780 ~ 1 \ 0016 ~ 1 \DemoUtils.java: 106 : cannot find symbol
symbol  : variable DemoScreen
location:  class  DemoUtils
        DemoScreen._iTaskId = a_idTask;
        ^
C:\DOCUME~ 1 \ 8780 ~ 1 \ 0016 ~ 1 \DemoUtils.java: 107 : cannot find symbol
symbol  : variable DemoScreen
location:  class  DemoUtils
        ( new  Thread(DemoScreen._instance)).start();
                    ^
C:\DOCUME~ 1 \ 8780 ~ 1 \ 0016 ~ 1 \DemoUtils.java: 112 :  package  AppD does not exist
         return   new  DataInputStream(AppD._instance.getClass().getResourceAsStream(a_sName));
                                       ^
C:\DOCUME~ 1 \ 8780 ~ 1 \ 0016 ~ 1 \DemoUtils.java: 366 : cannot find symbol
symbol  : variable Image
location:  class  DemoUtils
                images[a_iIndex] = Image.createImage("/i" + a_iIndex);
                                   ^
C:\DOCUME~ 1 \ 8780 ~ 1 \ 0016 ~ 1 \DemoUtils.java: 422 : cannot find symbol
symbol  : variable Image
location:  class  DemoUtils
         return  Image.createImage(baos.toByteArray(),  0 , baos.size());
               ^
А самого файла class нету. Что он мне показал? И если это ошибки то почему он мне их показал в отдельном окне?
...
Рейтинг: 0 / 0
Какой самый лучший и точный декомпилятор?
    #36575595
Ренальд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Koolkhel,

Вот файл от Cavaj Java Decompiler
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.
508.
509.
510.
511.
512.
513.
514.
515.
516.
517.
518.
519.
520.
521.
522.
523.
524.
525.
526.
527.
528.
529.
530.
531.
532.
533.
534.
535.
536.
537.
538.
539.
540.
541.
542.
543.
544.
545.
546.
547.
548.
549.
550.
551.
552.
553.
554.
555.
556.
557.
558.
559.
560.
561.
562.
563.
564.
565.
566.
567.
568.
569.
570.
571.
572.
573.
574.
575.
576.
577.
578.
579.
580.
581.
582.
583.
584.
585.
586.
587.
588.
589.
590.
591.
592.
593.
594.
595.
596.
597.
598.
599.
600.
601.
602.
603.
604.
605.
606.
607.
608.
609.
610.
611.
612.
613.
614.
615.
616.
617.
618.
619.
620.
621.
622.
623.
624.
625.
626.
627.
628.
629.
630.
631.
632.
633.
634.
635.
636.
637.
638.
639.
640.
641.
642.
643.
644.
645.
646.
647.
648.
649.
650.
651.
652.
653.
654.
655.
656.
657.
658.
659.
660.
661.
662.
663.
664.
665.
666.
667.
668.
669.
670.
671.
672.
673.
674.
675.
676.
677.
678.
679.
680.
681.
682.
683.
684.
685.
686.
687.
688.
689.
690.
691.
692.
693.
694.
695.
696.
697.
698.
699.
700.
701.
702.
703.
704.
705.
706.
707.
708.
709.
710.
711.
712.
713.
714.
715.
716.
717.
718.
719.
720.
721.
722.
723.
724.
725.
726.
727.
728.
729.
730.
731.
732.
733.
734.
735.
736.
737.
738.
739.
740.
741.
742.
 import  java.io.*;
 import  javax.microedition.io.ConnectionNotFoundException;
 import  javax.microedition.lcdui.*;
 import  javax.microedition.midlet.MIDlet;
 import  javax.microedition.rms.RecordStore;

 public   class  DemoUtils
{

     public   static   int  W;
     public   static   int  H;
     public   static   int  W2;
     public   static   int  H2;
     public   static   final   int  ACT_UP =  1 ;
     public   static   final   int  ACT_DOWN =  6 ;
     public   static   final   int  ACT_LEFT =  2 ;
     public   static   final   int  ACT_RIGHT =  5 ;
     public   static   final   int  ACT_FIRE =  8 ;
     public   static   final   int  ACT_SEND =  20 ;
     public   static   final   int  ACT_MOREGAMES =  21 ;
     public   static   final   int  AA_TOPLEFT =  0 ;
     public   static   final   int  AA_LEFT =  4 ;
     public   static   final   int  AA_BOTTOMLEFT =  8 ;
     public   static   final   int  AA_TOP =  1 ;
     public   static   final   int  AA_CENTER =  5 ;
     public   static   final   int  AA_BOTTOM =  9 ;
     public   static   final   int  AA_TOPRIGHT =  2 ;
     public   static   final   int  AA_RIGHT =  6 ;
     public   static   final   int  AA_BOTTOMRIGHT =  10 ;
     public   static   final   int  ANC_TOPLEFT =  20 ;
     public   static   final   int  ANC_TOP =  17 ;
     public   static   final   int  ANC_TOPRIGHT =  24 ;
     public   static   final   int  ANC_LEFT =  6 ;
     public   static   final   int  ANC_CENTER =  3 ;
     public   static   final   int  ANC_RIGHT =  10 ;
     public   static   final   int  ANC_BOTTOMLEFT =  36 ;
     public   static   final   int  ANC_BOTTOM =  33 ;
     public   static   final   int  ANC_BOTTOMRIGHT =  40 ;
     public   static   boolean  _bRun = true;
     public   static   boolean  _bDemoRun = true;
     public   static   int  _iDemoTime =  10 ;
     public   static   boolean  _bViewInfo = false;
     public   static   int  _iSoft2 =  7 ;
     public   static   int  _iSended =  0 ;
     public   static  String _sSMSNumber;
     public   static  String _sSMSText;
     public   static  String _sSiteURL;
     public   static  String _sPaymentText;
     public   static  String _sNoSMS;
     public   static   long  _iTimeStart;
     public   static   long  _iTimeCurrent;
     public   static   int  _iTimer;
     public   static   boolean  _bExpired = false;
     public   static   int  _action;
     public   static  Graphics grActive;
     public   static  Image images[] =  new  Image[ 100 ];
     public   static   short  _TextIndexes[];
     public   static   byte  _Texts[];
     public   static   final   int  CHAR_SPACE = - 1 ;
     public   static   final   int  CHAR_CR = - 2 ;
     public   static   final   int  CHAR_TAB = - 3 ;
     public   static   final   int  CHAR_USER_0 = - 4 ;
     public   static   final   int  CHAR_USER_1 = - 5 ;
     public   static   final   int  CHAR_USER_2 = - 6 ;
     public   static   final   int  CHAR_USER_3 = - 7 ;
     public   static   final   int  CHAR_USER_4 = - 8 ;
     public   static   final   int  CHAR_USER_5 = - 9 ;
     public   static   final   int  CHAR_USER_6 = - 10 ;
     public   static   final   int  CHAR_USER_7 = - 11 ;
     public   static   final   int  CHAR_USER_8 = - 12 ;
     public   static   final   int  CHAR_USER_9 = - 13 ;
     public   static   final   int  CHAR_LAST = - 13 ;
     private   static   final   byte  _FontX[][] =  new   byte [ 1 ][];
     private   static   final   byte  _FontY[][] =  new   byte [ 1 ][];
     private   static   final   byte  _FontW[][] =  new   byte [ 1 ][];
     private   static   final   byte  _FontH[] =  new   byte [ 1 ];
     private   static   final   byte  _FontSpace[] =  new   byte [ 1 ];
     private   static   final   byte  _FontInterChar[] =  new   byte [ 1 ];
     private   static   final  Image _FontImage[] =  new  Image[ 1 ];
     private   static   final   int  __anchorShift[] = {
         31 ,  1 ,  0 
    };
     public   static   int  iFont;
     public   static   int  iNumItems;
     public   static   int  iNumFitting;
     public   static   byte  wrap_arrText[];
     public   static   int  wrap_iStartIndex;
     public   static   int  wrap_iEndIndex;
     private   static   final   int  wrap_arrBreaks[] =  new   int [ 100 ];
     private   static   final   int  wrap_arrPicLine[] =  new   int [ 10 ];
     private   static   int  wrap_Number =  0 ;
     private   static   int  wrap_Code =  0 ;
     private   static   int  wrap_iPicCount;
     private   static   int  menuViewWidth;

     public  DemoUtils()
    {
    }

     public   static   void  createTask( int  a_idTask)
    {
         while (DemoScreen._iTaskId !=  0 ) 
        {
            Thread.yield();
        }
        DemoScreen._iTaskId = a_idTask;
        ( new  Thread(DemoScreen._instance)).start();
    }

     public   static   final  DataInputStream getFile(String a_sName)
    {
         return   new  DataInputStream(AppD._instance.getClass().getResourceAsStream(a_sName));
    }

     public   static   final   byte [] readByteArray(DataInputStream a_dis,  int  a_iSize)
         throws  Exception
    {
         byte  result[] =  new   byte [a_iSize];
        a_dis.read(result);
         return  result;
    }

     public   static   final   short [] readByteArrayAsShort(DataInputStream a_dis,  int  a_iSize)
         throws  Exception
    {
         short  result[] =  new   short [a_iSize];
         for ( int  i =  0 ; i < a_iSize; i++)
        {
            result[i] = ( short )a_dis.readUnsignedByte();
        }

         return  result;
    }

     public   static   final   short [] readShortArray(DataInputStream a_dis,  int  a_iSize)
         throws  Exception
    {
         short  result[] =  new   short [a_iSize];
         for ( int  i =  0 ; i < a_iSize; i++)
        {
            result[i] = a_dis.readShort();
        }

         return  result;
    }

     public   static   final   boolean [] readBoolArray(DataInputStream a_dis,  int  a_iSize)
         throws  Exception
    {
         boolean  result[] =  new   boolean [a_iSize];
         for ( int  i =  0 ; i < a_iSize; i++)
        {
            result[i] = a_dis.readBoolean();
        }

         return  result;
    }

     public   static   final   void  loadTexts(DataInputStream f)
         throws  Exception
    {
        _TextIndexes = readShortArray(f, f.readUnsignedShort());
        _Texts = readByteArray(f, f.readUnsignedShort());
    }

     public   static   final   int  textLength( int  a_iTextId)
    {
         return  _TextIndexes[a_iTextId +  1 ] - _TextIndexes[a_iTextId];
    }

     public   static   final   void  loadFont(DataInputStream f,  int  a_iFontId)
         throws  Exception
    {
         if (_FontImage[a_iFontId] ==  null )
        {
             int  num = f.readUnsignedByte();
            _FontX[a_iFontId] = readByteArray(f, num);
            _FontY[a_iFontId] = readByteArray(f, num);
            _FontW[a_iFontId] = readByteArray(f, num);
            _FontH[a_iFontId] = f.readByte();
            _FontSpace[a_iFontId] = f.readByte();
            _FontInterChar[a_iFontId] = ( byte )( 1  - f.readByte());
            _FontImage[a_iFontId] = loadImage(f);
        }
    }

     public   static   final   void  unloadFont( int  a_iFontId)
    {
        _FontX[a_iFontId] =  null ;
        _FontY[a_iFontId] =  null ;
        _FontW[a_iFontId] =  null ;
        _FontImage[a_iFontId] =  null ;
        System.gc();
    }

     public   static   final   int  charWidthAdvance( int  a_iFntId,  int  a_iCharId)
    {
         if (a_iCharId <= - 13 )
        {
            a_iCharId &= 0xff;
        }
         return  (a_iCharId >=  0  ? _FontW[a_iFntId][a_iCharId] : _FontSpace[a_iFntId]) + _FontInterChar[a_iFntId];
    }

     private   static   final   int  drawChar( int  a_iFntId,  int  a_iCharId,  int  a_iX,  int  a_iY)
    {
         if (a_iCharId <= - 13 )
        {
            a_iCharId &= 0xff;
        }
         if (a_iCharId >=  0 )
        {
            grActive.drawRegion(_FontImage[a_iFntId], _FontX[a_iFntId][a_iCharId], _FontY[a_iFntId][a_iCharId], _FontW[a_iFntId][a_iCharId], _FontH[a_iFntId],  0 , a_iX, a_iY,  20 );
        }
         return  charWidthAdvance(a_iFntId, a_iCharId);
    }

     public   static   final   int  textWidthAdvance( int  a_iFntId,  int  a_iTextId)
    {
         return  textWidthAdvance(a_iFntId, _Texts, _TextIndexes[a_iTextId], _TextIndexes[a_iTextId +  1 ]);
    }

     public   static   final   int  textWidthAdvance( int  a_iFntId,  byte  a_iText[],  int  a_iIndexFrom,  int  a_iIndexTo)
    {
         int  result =  0 ;
         for ( int  i = a_iIndexFrom; i < a_iIndexTo; i++)
        {
            result += charWidthAdvance(a_iFntId, a_iText[i]);
        }

         return  result;
    }

     public   static   final   int  textWidthTotal( int  a_iFntId,  byte  aText[],  int  a_iIndexFrom,  int  a_iIndexTo)
    {
         return  textWidthAdvance(a_iFntId, aText, a_iIndexFrom, a_iIndexTo) - _FontInterChar[a_iFntId];
    }

     public   static   final   int  textWidthTotal( int  a_iFntId,  int  a_iTextId)
    {
         return  textWidthTotal(a_iFntId, _Texts, _TextIndexes[a_iTextId], _TextIndexes[a_iTextId +  1 ]);
    }

     public   static   final   int  textHeight( int  a_iFntId)
    {
         return  _FontH[a_iFntId];
    }

     public   static   final   void  drawText( int  a_iFntId,  int  a_iTextId,  int  a_iX,  int  a_iY,  int  a_iAkimAnchor)
    {
        drawText(a_iFntId, _Texts, _TextIndexes[a_iTextId], _TextIndexes[a_iTextId +  1 ], a_iX, a_iY, a_iAkimAnchor);
    }

     public   static   final   void  drawText( int  a_iFntId,  byte  a_Text[],  int  a_iIndexFrom,  int  a_iIndexTo,  int  a_iX,  int  a_iY,  int  a_iAkimAnchor)
    {
         if ((a_iAkimAnchor &  3 ) !=  0 )
        {
            a_iX += __anchorOffset(a_iAkimAnchor &  3 , textWidthTotal(a_iFntId, a_Text, a_iIndexFrom, a_iIndexTo));
        }
         if (a_iAkimAnchor >  3 )
        {
            a_iY += __anchorOffset(a_iAkimAnchor >>>  2 , textHeight(a_iFntId));
        }
         for ( int  i = a_iIndexFrom; i < a_iIndexTo; i++)
        {
            a_iX += drawChar(a_iFntId, a_Text[i], a_iX, a_iY);
        }

    }

     public   static   final   void  drawNumber( int  a_iFontId,  int  aNumber,  int  a_iX,  int  a_iY,  int  a_iAkimAnchor)
    {
         byte  b[] =  new   byte [ 10 ];
        drawText(a_iFontId, b,  0 , copyNumber(b, aNumber), a_iX, a_iY, a_iAkimAnchor);
    }

     public   static   final   int  __anchorOffset( int  a_iAnchor,  int  a_iSize)
    {
         return  -(a_iSize >>> __anchorShift[a_iAnchor]);
    }

     public   static   final   int  copyNumber( byte  aText[],  int  a_iNumber)
    {
         int  charnum =  0 ;
         int  n = a_iNumber;
         do 
        {
            charnum++;
        }  while ((n /=  10 ) !=  0 );
         int  i = charnum;
        n = a_iNumber;
         do 
        {
            aText[--i] = ( byte )(n %  10 );
            n /=  10 ;
        }  while (i >  0 );
         return  charnum;
    }

     public   static   final   void  wrapText()
    {
         int  linew =  0 ;
         int  spacew =  0 ;
         int  lastspace = - 1 ;
        iNumItems =  0 ;
        wrap_iPicCount =  0 ;
        menuViewWidth = W;
         for ( int  i = wrap_arrBreaks[ 0 ] = wrap_iStartIndex; i < wrap_iEndIndex; i++)
        {
             byte  b;
             switch (b = wrap_arrText[i])
            {
             case  - 6 : 
             case  - 5 : 
                wrap_arrPicLine[wrap_iPicCount++] = iNumItems +  1 ;
                // fall through

             case  - 2 : 
                wrap_arrBreaks[++iNumItems] = i +  1 ;
                 if (wrap_Number ==  0 )
                {
                    wrap_Number = wrap_arrBreaks[iNumItems];
                }  else 
                 if (wrap_Number !=  0  && wrap_Code ==  0  && wrap_arrText[i -  1 ] != - 2 )
                {
                    wrap_Code = wrap_arrBreaks[iNumItems];
                }
                lastspace = - 1 ;
                linew =  0 ;
                spacew =  0 ;
                 break ;

             case  - 1 : 
                lastspace = i;
                linew += charWidthAdvance(iFont, b);
                spacew = linew;
                 break ;

             case  - 4 : 
             case  - 3 : 
             default :
                 if ((linew += charWidthAdvance(iFont, b)) > menuViewWidth && lastspace >=  0 )
                {
                    wrap_arrBreaks[++iNumItems] = lastspace +  1 ;
                    lastspace = - 1 ;
                    linew -= spacew;
                }
                 break ;
            }
        }

        wrap_arrBreaks[++iNumItems] = wrap_iEndIndex +  1 ;
    }

     public   static   final   int  getNumFitting( int  a_iY1,  int  a_iY2,  int  a_iHeight)
    {
         return  (a_iY2 - a_iY1 -  6 ) / a_iHeight;
    }

     public   static   final   void  loadImage( int  a_iIndex)
    {
         try 
        {
             if (images[a_iIndex] ==  null )
            {
                images[a_iIndex] = Image.createImage("/i" + a_iIndex);
            }
        }
         catch (Exception e)
        {
            e.printStackTrace();
        }
    }

     public   static   final   void  loadImage(DataInputStream dis,  int  a_iIndex)
    {
         try 
        {
            images[a_iIndex] = loadImage(dis);
        }
         catch (Exception e)
        {
            e.printStackTrace();
        }
    }

     private   static   final   void  readChunk(DataInputStream dis, DataOutputStream dos,  int  a_iChunkName)
         throws  Exception
    {
         int  size = dis.readShort();
         if (size == - 1 )
        {
             return ;
        }  else 
        {
             byte  b[] =  new   byte [size +  4 ];
            dis.read(b);
            dos.writeInt(size);
            dos.writeInt(a_iChunkName);
            dos.write(b);
             return ;
        }
    }

     private   static   final  Image loadImage(DataInputStream dis)
         throws  Exception
    {
        ByteArrayOutputStream baos =  new  ByteArrayOutputStream();
        DataOutputStream dos =  new  DataOutputStream(baos);
        dos.writeInt(0x89504e47);
        dos.writeInt(0xd0a1a0a);
        readChunk(dis, dos, 0x49484452);
        readChunk(dis, dos, 0x504c5445);
        readChunk(dis, dos, 0x74524e53);
        readChunk(dis, dos, 0x49444154);
        dos.writeInt( 0 );
        dos.writeInt(0x49454e44);
        dos.writeInt(0xae426082);
        dis =  null ;
        dos =  null ;
        System.gc();
         return  Image.createImage(baos.toByteArray(),  0 , baos.size());
    }

     public   static   final   void  unloadImage( int  a_iIndex)
    {
        images[a_iIndex] =  null ;
        System.gc();
    }

     public   static   final   int  getAction( int  a_iKeyCode)
    {
         switch (a_iKeyCode)
        {
         case  - 6 : 
             return   20 ;

         case  - 7 : 
             return   21 ;

         case  - 5 : 
             return   0 ;
        }
         return  DemoScreen._instance.getGameAction(a_iKeyCode);
        Exception e;
        e;
        e.printStackTrace();
         return   0 ;
    }

     public   static   void  onAction()
    {
         switch (_action)
        {
         default :
             break ;

         case   20 : // '\024'
             if (_iSended ==  0 )
            {
                pressSendSMS();
            }  else 
            {
                _bRun = false;
                saveRS();
                AppD._instance.notifyDestroyed();
            }
             break ;

         case   21 : // '\025'
            pressMoreGames();
             break ;
        }
        _action =  0 ;
    }

     public   static   final  DataInputStream storeGet(String a_sName)
    {
         byte  a[];
        RecordStore rs = RecordStore.openRecordStore(a_sName, true);
        a = rs.getRecord( 1 );
        rs.closeRecordStore();
         return   new  DataInputStream( new  ByteArrayInputStream(a));
        Exception e;
        e;
         return   null ;
    }

     public   static   void  storeSet(String a_sName, ByteArrayOutputStream aBaos)
    {
         try 
        {
            storeDelete(a_sName);
            RecordStore rs = RecordStore.openRecordStore(a_sName, true);
            rs.addRecord(aBaos.toByteArray(),  0 , aBaos.size());
            rs.closeRecordStore();
        }
         catch (Exception e) { }
    }

     public   static   void  storeDelete(String a_sName)
    {
         try 
        {
            RecordStore.deleteRecordStore(a_sName);
        }
         catch (Exception e) { }
    }

     public   static   void  loadRes()
    {
        getJADProperies();
        DataInputStream dis = getFile( new  String(DemoConst.FILE_RES));
         try 
        {
            loadFont(dis,  0 );
        }
         catch (Exception e)
        {
            e.printStackTrace();
        }
         try 
        {
            loadTexts(dis);
        }
         catch (Exception e)
        {
            e.printStackTrace();
        }
         try 
        {
            _iDemoTime = dis.readShort();
            System.out.println(_iDemoTime);
        }
         catch (Exception e)
        {
            e.printStackTrace();
        }
    }

     public   static   void  readRS()
    {
        DataInputStream dis_rs =  null ;
         try 
        {
            dis_rs = storeGet("");
        }
         catch (Exception e)
        {
            System.out.println("Error getting data.");
            e.printStackTrace();
        }
         byte  iTimer =  0 ;
         try 
        {
            iTimer = dis_rs.readByte();
             boolean  bExpired = dis_rs.readBoolean();
            _bExpired = bExpired;
        }
         catch (Exception e)
        {
            System.out.println("Error reading data.");
            e.printStackTrace();
        }
         if (_bExpired)
        {
            _iDemoTime =  0 ;
        }  else 
         if (iTimer !=  0 )
        {
            _iDemoTime = iTimer;
        }
    }

     public   static   void  saveRS()
    {
        ByteArrayOutputStream baos =  new  ByteArrayOutputStream();
        DataOutputStream dos =  new  DataOutputStream(baos);
        System.out.println("Writing data.");
         try 
        {
            dos.writeByte(_iDemoTime - _iTimer);
            dos.writeBoolean(_bExpired);
            storeSet("", baos);
        }
         catch (IOException e)
        {
            System.out.println("Error writing data.");
            e.printStackTrace();
        }
    }

     public   static   void  getJADProperies()
    {
        _sSiteURL = AppD._instance.getAppProperty("SiteURL");
        _sSMSNumber = AppD._instance.getAppProperty("Short-Number");
        _sSMSText = AppD._instance.getAppProperty("Code");
        _sPaymentText = AppD._instance.getAppProperty("Payment-Text");
        _sNoSMS = AppD._instance.getAppProperty("noSMS");
    }

     public   static   void  pressSendSMS()
    {
         if (Integer.parseInt(_sNoSMS) ==  0 )
        {
            _iSended = DemoSendSMS.Send(_sSMSNumber, _sSMSText);
             if (_iSended ==  1 )
            {
                prepareText( 2 );
            }  else 
             if (_iSended == - 1 )
            {
                prepareText( 1 );
            }
        }  else 
         if (Integer.parseInt(_sNoSMS) ==  1 )
        {
            _iSended = - 2 ;
            prepareText( 3 );
        }
    }

     public   static   void  pressMoreGames()
    {
         try 
        {
            AppD._instance.platformRequest(_sSiteURL);
        }
         catch (ConnectionNotFoundException e)
        {
            e.printStackTrace();
        }
    }

     public   static   boolean  checkTime()
    {
        _iTimeCurrent = System.currentTimeMillis();
        _iTimer = ( int )((_iTimeCurrent - _iTimeStart) / 1000L);
         if (_iTimer >  10000 )
        {
            saveRS();
        }
         if (_iTimer > _iDemoTime)
        {
            _bExpired = true;
             return  true;
        }  else 
        {
            _bExpired = false;
             return  false;
        }
    }

     public   static   void  drawBackGround(Graphics gr)
    {
        gr.setClip( 0 ,  0 , W, H);
        gr.setColor( 0 );
        gr.fillRect( 0 ,  0 , W, H);
         if (_iSended ==  0 )
        {
            drawText( 0 ,  4 ,  2 , H - textHeight( 0 ),  0 );
        }  else 
        {
            drawText( 0 ,  5 ,  2 , H - textHeight( 0 ),  0 );
        }
         if (_sSiteURL.length() >  2 )
        {
            drawText( 0 , _iSoft2, W - ( 2  + textWidthAdvance( 0 , _iSoft2)), H - textHeight( 0 ),  0 );
        }
    }

     public   static   void  prepareText( int  a_idText)
    {
        wrap_arrText = _Texts;
        wrap_iStartIndex = _TextIndexes[a_idText];
        wrap_iEndIndex = _TextIndexes[a_idText +  1 ];
        wrap_Code =  0 ;
        wrap_Number =  0 ;
        wrapText();
    }

     public   static   void  drawText()
    {
        iNumFitting = getNumFitting( 1 , H -  1 ,  12 );
         int  iNumOnscreen = Math.min(iNumItems, iNumFitting);
         int  y =  0 ;
         for ( int  i =  0 ; i < iNumOnscreen; i++)
        {
            y =  5  + (i % iNumFitting) * textHeight( 0 );
            drawText(iFont, _Texts, wrap_arrBreaks[i], wrap_arrBreaks[i +  1 ] -  1 , W2 -  2 , y,  1 );
             if (_iSended != - 1  && _iSended != - 2 )
            {
                 continue ;
            }
             if (wrap_arrBreaks[i] == wrap_Code)
            {
                 int  iCode =  0 ;
                 try 
                {
                    iCode = Integer.parseInt(_sSMSText);
                }
                 catch (Exception e)
                {
                    e.printStackTrace();
                }
                drawNumber(iFont, iCode, W2 -  2 , y,  1 );
                 continue ;
            }
             if (wrap_arrBreaks[i] != wrap_Number)
            {
                 continue ;
            }
             int  iNumber =  0 ;
             try 
            {
                iNumber = Integer.parseInt(_sSMSNumber);
            }
             catch (Exception e)
            {
                e.printStackTrace();
            }
            drawNumber(iFont, iNumber, W2 -  2 , y,  1 );
        }

         if (_iSended !=  0  && _iSended !=  1 )
        {
            grActive.setColor(0xffffff);
            Font fnt = Font.getDefaultFont();
            grActive.setFont(fnt);
            grActive.drawString(_sPaymentText, W2 -  2 , y +  16 ,  17 );
        }
    }

     static  
    {
        W = DemoScreen.W;
        H = DemoScreen.H;
        W2 = DemoScreen.W2;
        H2 = DemoScreen.H2;
        menuViewWidth = W;
    }
}
Вот файл от jd-gui 0.3.2
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.
508.
509.
510.
511.
512.
513.
514.
515.
516.
517.
518.
519.
520.
521.
522.
523.
524.
525.
526.
527.
528.
529.
530.
531.
532.
533.
534.
535.
536.
537.
538.
539.
540.
541.
542.
543.
544.
545.
546.
547.
548.
549.
550.
551.
552.
553.
554.
555.
556.
557.
558.
559.
560.
561.
562.
563.
564.
565.
566.
567.
568.
569.
570.
571.
572.
573.
574.
575.
576.
577.
578.
579.
580.
581.
582.
583.
584.
585.
586.
587.
588.
589.
590.
591.
592.
593.
594.
595.
596.
597.
598.
599.
600.
601.
602.
603.
604.
605.
606.
607.
608.
609.
610.
611.
612.
613.
614.
615.
616.
617.
618.
619.
620.
621.
622.
623.
624.
625.
626.
627.
628.
629.
630.
631.
632.
633.
634.
635.
636.
637.
638.
639.
640.
641.
642.
643.
644.
645.
646.
647.
648.
649.
650.
651.
652.
653.
654.
655.
656.
657.
658.
659.
660.
661.
662.
663.
664.
665.
666.
667.
668.
669.
670.
671.
672.
673.
674.
675.
676.
677.
678.
679.
680.
681.
682.
683.
684.
685.
686.
687.
688.
689.
690.
691.
692.
693.
694.
695.
696.
697.
698.
699.
700.
701.
702.
703.
704.
705.
706.
707.
708.
709.
710.
711.
712.
713.
714.
715.
716.
717.
718.
719.
720.
721.
722.
723.
 import  java.io.ByteArrayInputStream;
 import  java.io.ByteArrayOutputStream;
 import  java.io.DataInputStream;
 import  java.io.DataOutputStream;
 import  java.io.IOException;
 import  java.io.OutputStream;
 import  java.io.PrintStream;
 import  javax.microedition.io.ConnectionNotFoundException;
 import  javax.microedition.lcdui.Canvas;
 import  javax.microedition.lcdui.Font;
 import  javax.microedition.lcdui.Graphics;
 import  javax.microedition.lcdui.Image;
 import  javax.microedition.midlet.MIDlet;
 import  javax.microedition.rms.RecordStore;

 public   class  DemoUtils
{
   public   static   int  W = DemoScreen.W;
   public   static   int  H = DemoScreen.H;
   public   static   int  W2 = DemoScreen.W2;
   public   static   int  H2 = DemoScreen.H2;
   public   static   final   int  ACT_UP =  1 ;
   public   static   final   int  ACT_DOWN =  6 ;
   public   static   final   int  ACT_LEFT =  2 ;
   public   static   final   int  ACT_RIGHT =  5 ;
   public   static   final   int  ACT_FIRE =  8 ;
   public   static   final   int  ACT_SEND =  20 ;
   public   static   final   int  ACT_MOREGAMES =  21 ;
   public   static   final   int  AA_TOPLEFT =  0 ;
   public   static   final   int  AA_LEFT =  4 ;
   public   static   final   int  AA_BOTTOMLEFT =  8 ;
   public   static   final   int  AA_TOP =  1 ;
   public   static   final   int  AA_CENTER =  5 ;
   public   static   final   int  AA_BOTTOM =  9 ;
   public   static   final   int  AA_TOPRIGHT =  2 ;
   public   static   final   int  AA_RIGHT =  6 ;
   public   static   final   int  AA_BOTTOMRIGHT =  10 ;
   public   static   final   int  ANC_TOPLEFT =  20 ;
   public   static   final   int  ANC_TOP =  17 ;
   public   static   final   int  ANC_TOPRIGHT =  24 ;
   public   static   final   int  ANC_LEFT =  6 ;
   public   static   final   int  ANC_CENTER =  3 ;
   public   static   final   int  ANC_RIGHT =  10 ;
   public   static   final   int  ANC_BOTTOMLEFT =  36 ;
   public   static   final   int  ANC_BOTTOM =  33 ;
   public   static   final   int  ANC_BOTTOMRIGHT =  40 ;
   public   static   boolean  _bRun = true;
   public   static   boolean  _bDemoRun = true;
   public   static   int  _iDemoTime =  10 ;
   public   static   boolean  _bViewInfo = false;
   public   static   int  _iSoft2 =  7 ;
   public   static   int  _iSended =  0 ;
   public   static  String _sSMSNumber;
   public   static  String _sSMSText;
   public   static  String _sSiteURL;
   public   static  String _sPaymentText;
   public   static  String _sNoSMS;
   public   static   long  _iTimeStart;
   public   static   long  _iTimeCurrent;
   public   static   int  _iTimer;
   public   static   boolean  _bExpired = false;
   public   static   int  _action;
   public   static  Graphics grActive;
   public   static  Image[] images =  new  Image[ 100 ];
   public   static   short [] _TextIndexes;
   public   static   byte [] _Texts;
   public   static   final   int  CHAR_SPACE = - 1 ;
   public   static   final   int  CHAR_CR = - 2 ;
   public   static   final   int  CHAR_TAB = - 3 ;
   public   static   final   int  CHAR_USER_0 = - 4 ;
   public   static   final   int  CHAR_USER_1 = - 5 ;
   public   static   final   int  CHAR_USER_2 = - 6 ;
   public   static   final   int  CHAR_USER_3 = - 7 ;
   public   static   final   int  CHAR_USER_4 = - 8 ;
   public   static   final   int  CHAR_USER_5 = - 9 ;
   public   static   final   int  CHAR_USER_6 = - 10 ;
   public   static   final   int  CHAR_USER_7 = - 11 ;
   public   static   final   int  CHAR_USER_8 = - 12 ;
   public   static   final   int  CHAR_USER_9 = - 13 ;
   public   static   final   int  CHAR_LAST = - 13 ;
   private   static   final   byte [][] _FontX =  new   byte [ 1 ][];
   private   static   final   byte [][] _FontY =  new   byte [ 1 ][];
   private   static   final   byte [][] _FontW =  new   byte [ 1 ][];
   private   static   final   byte [] _FontH =  new   byte [ 1 ];
   private   static   final   byte [] _FontSpace =  new   byte [ 1 ];
   private   static   final   byte [] _FontInterChar =  new   byte [ 1 ];
   private   static   final  Image[] _FontImage =  new  Image[ 1 ];

   private   static   final   int [] __anchorShift = {  31 ,  1 ,  0  };
   public   static   int  iFont;
   public   static   int  iNumItems;
   public   static   int  iNumFitting;
   public   static   byte [] wrap_arrText;
   public   static   int  wrap_iStartIndex;
   public   static   int  wrap_iEndIndex;
   private   static   final   int [] wrap_arrBreaks =  new   int [ 100 ];
   private   static   final   int [] wrap_arrPicLine =  new   int [ 10 ];
   private   static   int  wrap_Number =  0 ;
   private   static   int  wrap_Code =  0 ;
   private   static   int  wrap_iPicCount;
   private   static   int  menuViewWidth = W;

   public   static   void  createTask( int  a_idTask)
  {
     while  (DemoScreen._iTaskId !=  0 )
      Thread.yield();
    DemoScreen._iTaskId = a_idTask;
     new  Thread(DemoScreen._instance).start();
  }

   public   static   final  DataInputStream getFile(String a_sName)
  {
     return   new  DataInputStream(AppD._instance.getClass().getResourceAsStream(a_sName));
  }

   public   static   final   byte [] readByteArray(DataInputStream a_dis,  int  a_iSize)  throws  Exception
  {
     byte [] result =  new   byte [a_iSize];
    a_dis.read(result);
     return  result;
  }

   public   static   final   short [] readByteArrayAsShort(DataInputStream a_dis,  int  a_iSize)  throws  Exception
  {
     short [] result =  new   short [a_iSize];
     for  ( int  i =  0 ; i < a_iSize; ++i)
      result[i] = ( short )a_dis.readUnsignedByte();
     return  result;
  }

   public   static   final   short [] readShortArray(DataInputStream a_dis,  int  a_iSize)  throws  Exception
  {
     short [] result =  new   short [a_iSize];
     for  ( int  i =  0 ; i < a_iSize; ++i)
      result[i] = a_dis.readShort();
     return  result;
  }

   public   static   final   boolean [] readBoolArray(DataInputStream a_dis,  int  a_iSize)  throws  Exception
  {
     boolean [] result =  new   boolean [a_iSize];
     for  ( int  i =  0 ; i < a_iSize; ++i)
      result[i] = a_dis.readBoolean();
     return  result;
  }

   public   static   final   void  loadTexts(DataInputStream f)
     throws  Exception
  {
    _TextIndexes = readShortArray(f, f.readUnsignedShort());
    _Texts = readByteArray(f, f.readUnsignedShort());
  }

   public   static   final   int  textLength( int  a_iTextId)
  {
     return  _TextIndexes[(a_iTextId +  1 )] - _TextIndexes[a_iTextId];
  }

   public   static   final   void  loadFont(DataInputStream f,  int  a_iFontId)
     throws  Exception
  {
     if  (_FontImage[a_iFontId] !=  null )
       return ;
     int  num = f.readUnsignedByte();

    _FontX[a_iFontId] = readByteArray(f, num);
    _FontY[a_iFontId] = readByteArray(f, num);
    _FontW[a_iFontId] = readByteArray(f, num);
    _FontH[a_iFontId] = f.readByte();
    _FontSpace[a_iFontId] = f.readByte();
    _FontInterChar[a_iFontId] = ( byte )( 1  - f.readByte());
    _FontImage[a_iFontId] = loadImage(f);
  }

   public   static   final   void  unloadFont( int  a_iFontId)
  {
    _FontX[a_iFontId] =  null ;
    _FontY[a_iFontId] =  null ;
    _FontW[a_iFontId] =  null ;
    _FontImage[a_iFontId] =  null ;
    System.gc();
  }

   public   static   final   int  charWidthAdvance( int  a_iFntId,  int  a_iCharId)
  {
     if  (a_iCharId <= - 13 ) a_iCharId &=  255 ;

     return  ((a_iCharId <  0 ) ? _FontSpace[a_iFntId] : _FontW[a_iFntId][a_iCharId]) + _FontInterChar[a_iFntId];
  }

   private   static   final   int  drawChar( int  a_iFntId,  int  a_iCharId,  int  a_iX,  int  a_iY)
  {
     if  (a_iCharId <= - 13 ) a_iCharId &=  255 ;

     if  (a_iCharId >=  0 )
    {
      grActive.drawRegion(_FontImage[a_iFntId], _FontX[a_iFntId][a_iCharId], _FontY[a_iFntId][a_iCharId], _FontW[a_iFntId][a_iCharId], _FontH[a_iFntId],  0 , a_iX, a_iY,  20 );
    }

     return  charWidthAdvance(a_iFntId, a_iCharId);
  }

   public   static   final   int  textWidthAdvance( int  a_iFntId,  int  a_iTextId)
  {
     return  textWidthAdvance(a_iFntId, _Texts, _TextIndexes[a_iTextId], _TextIndexes[(a_iTextId +  1 )]);
  }

   public   static   final   int  textWidthAdvance( int  a_iFntId,  byte [] a_iText,  int  a_iIndexFrom,  int  a_iIndexTo)
  {
     int  result =  0 ;

     for  ( int  i = a_iIndexFrom; i < a_iIndexTo; ++i)
      result += charWidthAdvance(a_iFntId, a_iText[i]);
     return  result;
  }

   public   static   final   int  textWidthTotal( int  a_iFntId,  byte [] aText,  int  a_iIndexFrom,  int  a_iIndexTo)
  {
     return  textWidthAdvance(a_iFntId, aText, a_iIndexFrom, a_iIndexTo) - _FontInterChar[a_iFntId];
  }

   public   static   final   int  textWidthTotal( int  a_iFntId,  int  a_iTextId)
  {
     return  textWidthTotal(a_iFntId, _Texts, _TextIndexes[a_iTextId], _TextIndexes[(a_iTextId +  1 )]);
  }

   public   static   final   int  textHeight( int  a_iFntId)
  {
     return  _FontH[a_iFntId];
  }

   public   static   final   void  drawText( int  a_iFntId,  int  a_iTextId,  int  a_iX,  int  a_iY,  int  a_iAkimAnchor)
  {
    drawText(a_iFntId, _Texts, _TextIndexes[a_iTextId], _TextIndexes[(a_iTextId +  1 )], a_iX, a_iY, a_iAkimAnchor);
  }

   public   static   final   void  drawText( int  a_iFntId,  byte [] a_Text,  int  a_iIndexFrom,  int  a_iIndexTo,  int  a_iX,  int  a_iY,  int  a_iAkimAnchor)
  {
     if  ((a_iAkimAnchor & 0x3) !=  0 )
      a_iX += __anchorOffset(a_iAkimAnchor & 0x3, textWidthTotal(a_iFntId, a_Text, a_iIndexFrom, a_iIndexTo));
     if  (a_iAkimAnchor >  3 )
      a_iY += __anchorOffset(a_iAkimAnchor >>>  2 , textHeight(a_iFntId));
     for  ( int  i = a_iIndexFrom; i < a_iIndexTo; ++i)
      a_iX += drawChar(a_iFntId, a_Text[i], a_iX, a_iY);
  }

   public   static   final   void  drawNumber( int  a_iFontId,  int  aNumber,  int  a_iX,  int  a_iY,  int  a_iAkimAnchor)
  {
     byte [] b =  new   byte [ 10 ];
    drawText(a_iFontId, b,  0 , copyNumber(b, aNumber), a_iX, a_iY, a_iAkimAnchor);
  }

   public   static   final   int  __anchorOffset( int  a_iAnchor,  int  a_iSize)
  {
     return  -(a_iSize >>> __anchorShift[a_iAnchor]);
  }

   public   static   final   int  copyNumber( byte [] aText,  int  a_iNumber)
  {
     int  charnum =  0 ;
     int  n = a_iNumber;
     do 
    {
      ++charnum;
    }
     while  (n /=  10  !=  0 );

     int  i = charnum;
    n = a_iNumber;
     do 
    {
      aText[(--i)] = ( byte )(n %  10 );
      n /=  10 ;
    }
     while  (i >  0 );
     return  charnum;
  }

   public   static   final   void  wrapText()
  {
     int  linew =  0 ;  int  spacew =  0 ;
     int  lastspace = - 1 ;
    iNumItems =  0 ;
    wrap_iPicCount =  0 ;
    menuViewWidth = W;

     for  ( int  i = wrap_arrBreaks[ 0 ] = wrap_iStartIndex; i < wrap_iEndIndex; ++i)
    {
       byte  b;
       switch  (b = wrap_arrText[i])
      {
       case  - 6 :
       case  - 5 :
        wrap_arrPicLine[(wrap_iPicCount++)] = (iNumItems +  1 );
       case  - 2 :
        wrap_arrBreaks[(++iNumItems)] = (i +  1 );
         if  (wrap_Number ==  0 )
        {
          wrap_Number = wrap_arrBreaks[iNumItems];
        }
         else   if  ((wrap_Number !=  0 ) && (wrap_Code ==  0 ) && (wrap_arrText[(i -  1 )] != - 2 ))
        {
          wrap_Code = wrap_arrBreaks[iNumItems];
        }
        lastspace = - 1 ;
        linew =  0 ;
        spacew =  0 ;
         break ;
       case  - 1 :
        lastspace = i;
        linew += charWidthAdvance(iFont, b);
        spacew = linew;
         break ;
       case  - 4 :
       case  - 3 :
       default :
         if  ((linew += charWidthAdvance(iFont, b) <= menuViewWidth) || (lastspace <  0 ))
           continue ;
        wrap_arrBreaks[(++iNumItems)] = (lastspace +  1 );
        lastspace = - 1 ;
        linew -= spacew;
      }
    }

    wrap_arrBreaks[(++iNumItems)] = (wrap_iEndIndex +  1 );
  }

   public   static   final   int  getNumFitting( int  a_iY1,  int  a_iY2,  int  a_iHeight)
  {
     return  (a_iY2 - a_iY1 -  6 ) / a_iHeight;
  }

   public   static   final   void  loadImage( int  a_iIndex)
  {
     try 
    {
       if  (images[a_iIndex] ==  null )
      {
        images[a_iIndex] = Image.createImage("/i" + a_iIndex);
      }

    }
     catch  (Exception e)
    {
      e.printStackTrace();
    }
  }

   public   static   final   void  loadImage(DataInputStream dis,  int  a_iIndex)
  {
     try 
    {
      images[a_iIndex] = loadImage(dis);
    }
     catch  (Exception e)
    {
      e.printStackTrace();
    }
  }

   private   static   final   void  readChunk(DataInputStream dis, DataOutputStream dos,  int  a_iChunkName)
     throws  Exception
  {
     int  size = dis.readShort();
     if  (size == - 1 )  return ;
     byte [] b =  new   byte [size +  4 ];
    dis.read(b);
    dos.writeInt(size);
    dos.writeInt(a_iChunkName);
    dos.write(b);
  }

   private   static   final  Image loadImage(DataInputStream dis)  throws  Exception
  {
    ByteArrayOutputStream baos =  new  ByteArrayOutputStream();
    DataOutputStream dos =  new  DataOutputStream(baos);

    dos.writeInt(- 1991225785 );
    dos.writeInt( 218765834 );

    readChunk(dis, dos,  1229472850 );

    readChunk(dis, dos,  1347179589 );

    readChunk(dis, dos,  1951551059 );

    readChunk(dis, dos,  1229209940 );

    dos.writeInt( 0 );
    dos.writeInt( 1229278788 );
    dos.writeInt(- 1371381630 );

    dis =  null ;
    dos =  null ;

    System.gc();
     return  Image.createImage(baos.toByteArray(),  0 , baos.size());
  }

   public   static   final   void  unloadImage( int  a_iIndex)
  {
    images[a_iIndex] =  null ;

    System.gc();
  }

   public   static   final   int  getAction( int  a_iKeyCode)
  {
     switch  (a_iKeyCode)
    {
     case  - 6 :
       return   20 ;
     case  - 7 :
       return   21 ;
     case  - 5 :
       return   0 ;
    }
     try 
    {
       return  DemoScreen._instance.getGameAction(a_iKeyCode);
    }
     catch  (Exception e)
    {
      e.printStackTrace();
    } return   0 ;
  }

   public   static   void  onAction()
  {
     switch  (_action)
    {
     case   20 :
       if  (_iSended ==  0 )
      {
        pressSendSMS();
      }
       else 
      {
        _bRun = false;
        saveRS();
        AppD._instance.notifyDestroyed();
      }

       break ;
     case   21 :
      pressMoreGames();
    }

    _action =  0 ;
  }

   public   static   final  DataInputStream storeGet(String a_sName)
  {
     try 
    {
      RecordStore rs = RecordStore.openRecordStore(a_sName, true);
       byte [] a = rs.getRecord( 1 );
      rs.closeRecordStore();
       return   new  DataInputStream( new  ByteArrayInputStream(a));
    }
     catch  (Exception e)
    {
    }

     return   null ;
  }

   public   static   void  storeSet(String a_sName, ByteArrayOutputStream aBaos)
  {
     try 
    {
      storeDelete(a_sName);
      RecordStore rs = RecordStore.openRecordStore(a_sName, true);
      rs.addRecord(aBaos.toByteArray(),  0 , aBaos.size());
      rs.closeRecordStore();
    }
     catch  (Exception e)
    {
    }
  }

   public   static   void  storeDelete(String a_sName)
  {
     try 
    {
      RecordStore.deleteRecordStore(a_sName);
    }
     catch  (Exception e)
    {
    }
  }

   public   static   void  loadRes()
  {
    getJADProperies();

    DataInputStream dis = getFile( new  String(DemoConst.FILE_RES));
     try 
    {
      loadFont(dis,  0 );
    }
     catch  (Exception e)
    {
      e.printStackTrace();
    }

     try 
    {
      loadTexts(dis);
    }
     catch  (Exception e)
    {
      e.printStackTrace();
    }

     try 
    {
      _iDemoTime = dis.readShort();
      System.out.println(_iDemoTime);
    }
     catch  (Exception e)
    {
      e.printStackTrace();
    }
  }

   public   static   void  readRS()
  {
    DataInputStream dis_rs =  null ;
     try 
    {
      dis_rs = storeGet("");
    }
     catch  (Exception e)
    {
      System.out.println("Error getting data.");
      e.printStackTrace();
    }

     byte  iTimer =  0 ;
     try 
    {
      iTimer = dis_rs.readByte();
       boolean  bExpired = dis_rs.readBoolean();
      _bExpired = bExpired;
    }
     catch  (Exception e)
    {
      System.out.println("Error reading data.");
      e.printStackTrace();
    }

     if  (_bExpired)
    {
      _iDemoTime =  0 ;
    }
     else 
    {
       if  (iTimer ==  0 )
         return ;
      _iDemoTime = iTimer;
    }
  }

   public   static   void  saveRS()
  {
    ByteArrayOutputStream baos =  new  ByteArrayOutputStream();
    DataOutputStream dos =  new  DataOutputStream(baos);

    System.out.println("Writing data.");
     try 
    {
      dos.writeByte(_iDemoTime - _iTimer);
      dos.writeBoolean(_bExpired);
      storeSet("", baos);
    }
     catch  (IOException e)
    {
      System.out.println("Error writing data.");
      e.printStackTrace();
    }
  }

   public   static   void  getJADProperies()
  {
    _sSiteURL = AppD._instance.getAppProperty("SiteURL");
    _sSMSNumber = AppD._instance.getAppProperty("Short-Number");
    _sSMSText = AppD._instance.getAppProperty("Code");
    _sPaymentText = AppD._instance.getAppProperty("Payment-Text");
    _sNoSMS = AppD._instance.getAppProperty("noSMS");
  }

   public   static   void  pressSendSMS()
  {
     if  (Integer.parseInt(_sNoSMS) ==  0 )
    {
      _iSended = DemoSendSMS.Send(_sSMSNumber, _sSMSText);
       if  (_iSended ==  1 )
      {
        prepareText( 2 );
      }  else  {
         if  (_iSended != - 1 )
           return ;
        prepareText( 1 );
      }
    }  else  {
       if  (Integer.parseInt(_sNoSMS) !=  1 )
         return ;
      _iSended = - 2 ;
      prepareText( 3 );
    }
  }

   public   static   void  pressMoreGames()
  {
     try 
    {
      AppD._instance.platformRequest(_sSiteURL);
    }
     catch  (ConnectionNotFoundException e)
    {
      e.printStackTrace();
    }
  }

   public   static   boolean  checkTime()
  {
    _iTimeCurrent = System.currentTimeMillis();

    _iTimer = ( int )((_iTimeCurrent - _iTimeStart) / 1000L);
     if  (_iTimer >  10000 )
    {
      saveRS();
    }
     if  (_iTimer > _iDemoTime)
    {
      _bExpired = true;
       return  true;
    }

    _bExpired = false;
     return  false;
  }

   public   static   void  drawBackGround(Graphics gr)
  {
    gr.setClip( 0 ,  0 , W, H);
    gr.setColor( 0 );
    gr.fillRect( 0 ,  0 , W, H);
     if  (_iSended ==  0 )
    {
      drawText( 0 ,  4 ,  2 , H - textHeight( 0 ),  0 );
    }
     else 
    {
      drawText( 0 ,  5 ,  2 , H - textHeight( 0 ),  0 );
    }

     if  (_sSiteURL.length() <=  2 )
       return ;
    drawText( 0 , _iSoft2, W - ( 2  + textWidthAdvance( 0 , _iSoft2)), H - textHeight( 0 ),  0 );
  }

   public   static   void  prepareText( int  a_idText)
  {
    wrap_arrText = _Texts;
    wrap_iStartIndex = _TextIndexes[a_idText];
    wrap_iEndIndex = _TextIndexes[(a_idText +  1 )];
    wrap_Code =  0 ;
    wrap_Number =  0 ;
    wrapText();
  }

   public   static   void  drawText()
  {
    iNumFitting = getNumFitting( 1 , H -  1 ,  12 );

     int  iNumOnscreen = Math.min(iNumItems, iNumFitting);

     int  y =  0 ;
     for  ( int  i =  0 ; i < iNumOnscreen; ++i)
    {
      y =  5  + i % iNumFitting * textHeight( 0 );
      drawText(iFont, _Texts, wrap_arrBreaks[i], wrap_arrBreaks[(i +  1 )] -  1 , W2 -  2 , y,  1 );

       if  ((_iSended != - 1 ) && (_iSended != - 2 ))
         continue ;
       if  (wrap_arrBreaks[i] == wrap_Code)
      {
         int  iCode =  0 ;
         try 
        {
          iCode = Integer.parseInt(_sSMSText);
        }
         catch  (Exception e)
        {
          e.printStackTrace();
        }
        drawNumber(iFont, iCode, W2 -  2 , y,  1 );
      }  else  {
         if  (wrap_arrBreaks[i] != wrap_Number)
           continue ;
         int  iNumber =  0 ;
         try 
        {
          iNumber = Integer.parseInt(_sSMSNumber);
        }
         catch  (Exception e)
        {
          e.printStackTrace();
        }
        drawNumber(iFont, iNumber, W2 -  2 , y,  1 );
      }

    }

     if  ((_iSended ==  0 ) || (_iSended ==  1 ))
       return ;
    grActive.setColor( 16777215 );
    Font fnt = Font.getDefaultFont();
    grActive.setFont(fnt);
    grActive.drawString(_sPaymentText, W2 -  2 , y +  16 ,  17 );
  }
}
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Какой самый лучший и точный декомпилятор?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]