Merge branch 'vendor/FILE'
[dragonfly.git] / sys / net / i4b / driver / i4b_tel.c
1 /*
2  * Copyright (c) 1997, 2001 Hellmuth Michaelis. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23  * SUCH DAMAGE.
24  *
25  *---------------------------------------------------------------------------
26  *
27  *      i4b_tel.c - device driver for ISDN telephony
28  *      --------------------------------------------
29  *
30  * $FreeBSD: src/sys/i4b/driver/i4b_tel.c,v 1.10.2.4 2001/12/16 15:12:57 hm Exp $
31  * $DragonFly: src/sys/net/i4b/driver/i4b_tel.c,v 1.15 2006/12/22 23:44:55 swildner Exp $
32  *
33  *      last edit-date: [Sat Aug 11 18:07:05 2001]
34  *
35  *---------------------------------------------------------------------------*/
36
37 #include "use_i4btel.h"
38
39 #if NI4BTEL > 0
40
41 #undef I4BTELDEBUG
42
43 #include <sys/param.h>
44 #include <sys/systm.h>
45
46 #include <sys/poll.h>
47
48 #include <sys/conf.h>
49 #include <sys/uio.h>
50 #include <sys/kernel.h>
51 #include <sys/mbuf.h>
52 #include <sys/socket.h>
53 #include <net/if.h>
54 #include <sys/thread2.h>
55 #include <sys/tty.h>
56
57 #ifdef DEVFS
58 #include <sys/devfsext.h>
59 #endif
60
61 #include <net/i4b/include/machine/i4b_ioctl.h>
62 #include <net/i4b/include/machine/i4b_tel_ioctl.h>
63 #include <net/i4b/include/machine/i4b_debug.h>
64
65 #include "../include/i4b_global.h"
66 #include "../include/i4b_mbuf.h"
67 #include "../include/i4b_l3l4.h"
68 #include "../layer4/i4b_l4.h"
69
70 /* minor number: lower 6 bits = unit number */
71
72 #define UNITBITS        6
73 #define UNITMASK        0x3f
74 #define UNIT(n)         (minor(n) & UNITMASK)
75
76 /* minor number: upper 2 bits = function number */
77
78 #define FUNCMASK        0x03
79 #define FUNC(n)         (((minor(n)) >> UNITBITS) & FUNCMASK)
80
81 #define FUNCTEL         0       /* 0 = normal i4btel device     */
82 #define FUNCDIAL        1       /* 1 = i4bteld dialout device   */
83
84 #define NOFUNCS         2       /* number of device classes     */
85
86 typedef struct {
87
88         /* used only in func = FUNCTEL */
89
90         drvr_link_t             drvr_linktab;   /* driver linktab */
91         isdn_link_t             *isdn_linktab;  /* isdn linktab */
92         int                     audiofmt;       /* audio format conversion */
93         u_char                  *rcvttab;       /* conversion table on read */
94         u_char                  *wcvttab;       /* conversion table on write */
95         call_desc_t             *cdp;           /* call descriptor pointer */
96
97         /* used only in func = FUNCDIAL */
98
99         char                    result;         /* result code for dial dev */  
100
101         /* used in func = FUNCDIAL and func = FUNCTEL*/
102         
103         int                     devstate;       /* state of this unit   */
104 #define ST_IDLE         0x00            /* idle */
105 #define ST_CONNECTED    0x01            /* isdn connected state */
106 #define ST_ISOPEN       0x02            /* userland opened */
107 #define ST_RDWAITDATA   0x04            /* userland read waiting */
108 #define ST_WRWAITEMPTY  0x08            /* userland write waiting */
109 #define ST_TONE         0x10            /* tone generator */
110
111         struct selinfo          selp;           /* select / poll */
112
113         struct i4b_tel_tones    tones;
114         int                     toneidx;
115         int                     toneomega;
116         int                     tonefreq;
117
118 } tel_sc_t;
119
120 static tel_sc_t tel_sc[NI4BTEL][NOFUNCS];
121         
122 /* forward decl */
123
124 static void tel_rx_data_rdy(int unit);
125 static void tel_tx_queue_empty(int unit);
126 static void tel_init_linktab(int unit);
127 static void tel_connect(int unit, void *cdp);
128 static void tel_disconnect(int unit, void *cdp);
129 static void tel_tone(tel_sc_t *sc);
130
131 /* audio format conversion tables */
132 static unsigned char a2u_tab[];
133 static unsigned char u2a_tab[];
134 static unsigned char bitreverse[];
135 static u_char sinetab[];
136
137 #define PDEVSTATIC      static
138
139 PDEVSTATIC d_open_t     i4btelopen;
140 PDEVSTATIC d_close_t    i4btelclose;
141 PDEVSTATIC d_read_t     i4btelread;
142 PDEVSTATIC d_write_t    i4btelwrite;
143 PDEVSTATIC d_ioctl_t    i4btelioctl;
144
145 PDEVSTATIC d_poll_t i4btelpoll;
146 #define POLLFIELD i4btelpoll
147
148 #define CDEV_MAJOR 56
149
150 static struct dev_ops i4btel_ops = {
151         { "i4btel", CDEV_MAJOR, 0 },
152         .d_open =       i4btelopen,
153         .d_close =      i4btelclose,
154         .d_read =       i4btelread,
155         .d_write =      i4btelwrite,
156         .d_ioctl =      i4btelioctl,
157         .d_poll =       POLLFIELD,
158 };
159
160 PDEVSTATIC void i4btelinit(void *unused);
161 PDEVSTATIC void i4btelattach(void *);
162
163 PSEUDO_SET(i4btelattach, i4b_tel);
164
165 /*===========================================================================*
166  *                      DEVICE DRIVER ROUTINES
167  *===========================================================================*/
168
169 /*---------------------------------------------------------------------------*
170  *      initialization at kernel load time
171  *---------------------------------------------------------------------------*/
172 PDEVSTATIC void
173 i4btelinit(void *unused)
174 {
175         dev_ops_add(&i4btel_ops, 0, 0);
176 }
177
178 SYSINIT(i4bteldev, SI_SUB_DRIVERS,
179         SI_ORDER_MIDDLE+CDEV_MAJOR, &i4btelinit, NULL);
180
181 /*---------------------------------------------------------------------------*
182  *      interface attach routine
183  *---------------------------------------------------------------------------*/
184 PDEVSTATIC void
185 i4btelattach(void *dummy)
186 {
187         int i, j;
188
189         kprintf("i4btel: %d ISDN telephony interface device(s) attached\n", NI4BTEL);
190         
191         for(i=0; i < NI4BTEL; i++)
192         {
193                 for(j=0; j < NOFUNCS; j++)
194                 {
195                         tel_sc[i][j].devstate = ST_IDLE;
196                         tel_sc[i][j].audiofmt = CVT_NONE;
197                         tel_sc[i][j].rcvttab = 0;
198                         tel_sc[i][j].wcvttab = 0;
199                         tel_sc[i][j].result = 0;
200
201                         switch(j)
202                         {
203                                 case FUNCTEL:   /* normal i4btel device */
204                                         make_dev(&i4btel_ops, i,
205                                                 UID_ROOT, GID_WHEEL,
206                                                 0600, "i4btel%d", i);
207                                         break;
208                                 
209                                 case FUNCDIAL:  /* i4bteld dialout device */
210                                         make_dev(&i4btel_ops, i+(1<<UNITBITS),
211                                                 UID_ROOT, GID_WHEEL,
212                                                 0600, "i4bteld%d", i);
213                                         break;
214                         }
215                 }
216                 tel_init_linktab(i);            
217         }
218 }
219
220 /*---------------------------------------------------------------------------*
221  *      open tel device
222  *---------------------------------------------------------------------------*/
223 PDEVSTATIC int
224 i4btelopen(struct dev_open_args *ap)
225 {
226         cdev_t dev = ap->a_head.a_dev;
227         int unit = UNIT(dev);
228         int func = FUNC(dev);
229         
230         tel_sc_t *sc;
231         
232         if(unit >= NI4BTEL)
233                 return(ENXIO);
234
235         sc = &tel_sc[unit][func];               
236
237         if(sc->devstate & ST_ISOPEN)
238                 return(EBUSY);
239
240         sc->devstate |= ST_ISOPEN;              
241
242         if(func == FUNCDIAL)
243         {
244                 sc->result = 0;
245         }
246         
247         return(0);
248 }
249
250 /*---------------------------------------------------------------------------*
251  *      close tel device
252  *---------------------------------------------------------------------------*/
253 PDEVSTATIC int
254 i4btelclose(struct dev_close_args *ap)
255 {
256         cdev_t dev = ap->a_head.a_dev;
257         int unit = UNIT(dev);
258         int func = FUNC(dev);
259         tel_sc_t *sc;
260         int error = 0;
261         
262         if(unit > NI4BTEL)
263                 return(ENXIO);
264
265         sc = &tel_sc[unit][func];               
266
267         crit_enter();
268         sc->devstate &= ~ST_TONE;               
269
270         if((func == FUNCTEL) &&
271            (sc->isdn_linktab != NULL && sc->isdn_linktab->tx_queue != NULL))
272         {
273                 while(!(IF_QEMPTY(sc->isdn_linktab->tx_queue)))
274                 {
275                         sc->devstate |= ST_WRWAITEMPTY;
276         
277                         if((error = tsleep((caddr_t) &sc->isdn_linktab->tx_queue,
278                                         PCATCH, "wtcl", 0)) != 0)
279                         {
280                                 break;
281                         }
282                 }
283                 sc->devstate &= ~ST_WRWAITEMPTY;                
284         }
285
286         sc->devstate &= ~ST_ISOPEN;             
287         crit_exit();
288         wakeup((caddr_t) &sc->tones);
289
290         return(error);
291 }
292
293 /*---------------------------------------------------------------------------*
294  *      i4btelioctl - device driver ioctl routine
295  *---------------------------------------------------------------------------*/
296 PDEVSTATIC int
297 i4btelioctl(struct dev_ioctl_args *ap)
298 {
299         cdev_t dev = ap->a_head.a_dev;
300         int unit = UNIT(dev);
301         int func = FUNC(dev);
302         int error = 0;
303         struct mbuf *m;
304
305         tel_sc_t *sc = &tel_sc[unit][func];
306
307         if(func == FUNCTEL)
308         {
309                 switch(ap->a_cmd)
310                 {
311                         case I4B_TEL_GETAUDIOFMT:
312                                 *(int *)ap->a_data = sc->audiofmt;
313                                 break;
314                         
315                         case I4B_TEL_SETAUDIOFMT:
316                                 switch (*(int *)ap->a_data)
317                                 {
318                                         case CVT_NONE:
319                                                 sc->rcvttab = 0;
320                                                 sc->wcvttab = 0;
321                                                 break;
322                                         case CVT_ALAW2ULAW:
323                                                 /* ISDN: a-law */
324                                                 /* user: u-law */ 
325                                                 sc->rcvttab = a2u_tab;
326                                                 sc->wcvttab = u2a_tab;
327                                                 break;
328                                         case CVT_ULAW2ALAW:
329                                                 /* ISDN: u-law */
330                                                 /* user: a-law */ 
331                                                 sc->rcvttab = u2a_tab;
332                                                 sc->wcvttab = a2u_tab;
333                                                 break;
334                                         default:
335                                                 error = ENODEV;
336                                                 break;
337                                 }
338                                 if(error == 0)
339                                         sc->audiofmt = *(int *)ap->a_data;
340                                 break;
341         
342                         case I4B_TEL_EMPTYINPUTQUEUE:
343                                 crit_enter();
344                                 while((sc->devstate & ST_CONNECTED)     &&
345                                         (sc->devstate & ST_ISOPEN)      &&
346                                         !IF_QEMPTY(sc->isdn_linktab->rx_queue))
347                                 {
348                                         IF_DEQUEUE(sc->isdn_linktab->rx_queue, m);
349                                         if(m)
350                                                 i4b_Bfreembuf(m);
351                                 }
352                                 crit_exit();
353                                 break;
354
355                         case I4B_TEL_VR_REQ:
356                         {
357                                 msg_vr_req_t *mvr;
358
359                                 mvr = (msg_vr_req_t *)ap->a_data;
360
361                                 mvr->version = VERSION;
362                                 mvr->release = REL;
363                                 mvr->step = STEP;                       
364                                 break;
365                         }
366                         case I4B_TEL_TONES:
367                         {
368                                 struct i4b_tel_tones *tt;
369
370                                 tt = (struct i4b_tel_tones *)ap->a_data;
371                                 crit_enter();
372                                 while ((sc->devstate & ST_TONE) && 
373                                     sc->tones.duration[sc->toneidx] != 0) {
374                                         if((error = tsleep((caddr_t) &sc->tones,
375                                             PCATCH, "rtone", 0 )) != 0) {
376                                                 crit_exit();
377                                                 return(error);
378                                         }
379                                 } 
380                                 if(!(sc->devstate & ST_ISOPEN)) {
381                                         crit_exit();
382                                         return (EIO);
383                                 }
384                                 if(!(sc->devstate & ST_CONNECTED)) {
385                                         crit_exit();
386                                         return (EIO);
387                                 }
388
389                                 sc->tones = *tt;
390                                 sc->toneidx = 0;
391                                 sc->tonefreq = tt->frequency[0];
392                                 sc->devstate |= ST_TONE;
393                                 crit_exit();
394                                 tel_tone(sc);
395                                 break;
396                         }
397         
398                         default:
399                                 error = ENOTTY;
400                                 break;
401                 }
402         }
403         else if(func == FUNCDIAL)
404         {
405                 switch(ap->a_cmd)
406                 {
407                         default:
408                                 error = ENOTTY;
409                                 break;
410                 }
411         }               
412         return(error);
413 }
414
415 /*---------------------------------------------------------------------------*
416  *      read from tel device
417  *---------------------------------------------------------------------------*/
418 PDEVSTATIC int
419 i4btelread(struct dev_read_args *ap)
420 {
421         cdev_t dev = ap->a_head.a_dev;
422         struct uio *uio = ap->a_uio;
423         int unit = UNIT(dev);
424         int func = FUNC(dev);
425
426         struct mbuf *m;
427         int error = 0;
428
429         tel_sc_t *sc = &tel_sc[unit][func];
430         
431         if(!(sc->devstate & ST_ISOPEN))
432                 return(EIO);
433
434         if(func == FUNCTEL)
435         {
436                 crit_enter();
437
438                 while((sc->devstate & ST_ISOPEN)        &&
439                       (sc->devstate & ST_CONNECTED)     &&
440                       IF_QEMPTY(sc->isdn_linktab->rx_queue))            
441                 {
442                         sc->devstate |= ST_RDWAITDATA;
443
444                         NDBGL4(L4_TELDBG, "i4btel%d, queue empty!", unit);
445
446                         if((error = tsleep((caddr_t) &sc->isdn_linktab->rx_queue,
447                                                 PCATCH, "rtel", 0 )) != 0)
448                         {
449                                 sc->devstate &= ~ST_RDWAITDATA;
450                                 crit_exit();
451                                 return(error);
452                         }
453                 }
454         
455                 if(!(sc->devstate & ST_ISOPEN))
456                 {
457                         crit_exit();
458                         return(EIO);
459                 }
460         
461                 if(!(sc->devstate & ST_CONNECTED))
462                 {
463                         crit_exit();
464                         return(EIO);
465                 }
466                 
467         
468                 IF_DEQUEUE(sc->isdn_linktab->rx_queue, m);
469                 
470                 if(m && m->m_len > 0)
471                 {
472                         int i;
473
474                         for(i = 0; i < m->m_len; i++)
475                         {
476                                 /* always reverse bit order from line */
477                                 mtod(m,u_char *)[i] = bitreverse[mtod(m,u_char *)[i]];
478
479                                 /* convert if necessary */
480                                 if(sc->rcvttab)
481                                         mtod(m,u_char *)[i] = sc->rcvttab[mtod(m,u_char *)[i]];
482                         }
483                         error = uiomove(m->m_data, m->m_len, uio);
484
485                         NDBGL4(L4_TELDBG, "i4btel%d, mbuf (%d bytes), uiomove %d!", unit, m->m_len, error);
486                 }
487                 else
488                 {
489                         NDBGL4(L4_TELDBG, "i4btel%d, empty mbuf from queue!", unit);
490                         error = EIO;
491                 }
492                         
493                 if(m)
494                         i4b_Bfreembuf(m);
495         
496                 crit_exit();
497         }
498         else if(func == FUNCDIAL)
499         {
500                 crit_enter();
501                 while((sc->result == 0) && (sc->devstate & ST_ISOPEN))
502                 {
503                         sc->devstate |= ST_RDWAITDATA;
504         
505                         if((error = tsleep((caddr_t) &sc->result,
506                                                 PCATCH, "rtel1", 0 )) != 0)
507                         {
508                                 sc->devstate &= ~ST_RDWAITDATA;
509                                 crit_exit();
510                                 return(error);
511                         }
512                 }
513         
514                 if(!(sc->devstate & ST_ISOPEN))
515                 {
516                         crit_exit();
517                         return(EIO);
518                 }
519         
520                 if(sc->result != 0)
521                 {
522                         error = uiomove(&sc->result, 1, uio);
523                         sc->result = 0;
524                 }
525                 else
526                 {
527                         error = EIO;
528                 }
529
530                 crit_exit();
531         }
532         return(error);
533 }
534
535 /*---------------------------------------------------------------------------*
536  *      write to tel device
537  *---------------------------------------------------------------------------*/
538 PDEVSTATIC int
539 i4btelwrite(struct dev_write_args *ap)
540 {
541         cdev_t dev = ap->a_head.a_dev;
542         struct uio *uio = ap->a_uio;
543         int unit = UNIT(dev);
544         int func = FUNC(dev);
545         struct mbuf *m;
546         int error = 0;
547         tel_sc_t *sc = &tel_sc[unit][func];
548         
549         if(!(sc->devstate & ST_ISOPEN))
550         {
551                 return(EIO);
552         }
553
554         if(func == FUNCTEL)
555         {
556                 crit_enter();
557                 
558                 if(!(sc->devstate & ST_CONNECTED)) {
559                         crit_exit();
560                         return(EIO);
561                 }
562                         
563                 sc->devstate &= ~ST_TONE;               
564                 while((IF_QFULL(sc->isdn_linktab->tx_queue)) &&
565                       (sc->devstate & ST_ISOPEN))
566                 {
567                         sc->devstate |= ST_WRWAITEMPTY;
568
569                         if((error = tsleep((caddr_t) &sc->isdn_linktab->tx_queue,
570                                         PCATCH, "wtel", 0)) != 0)
571                         {
572                                 sc->devstate &= ~ST_WRWAITEMPTY;
573                                 crit_exit();
574                                 return(error);
575                         }
576                 }
577         
578                 if(!(sc->devstate & ST_ISOPEN))
579                 {
580                         crit_exit();
581                         return(EIO);
582                 }
583         
584                 if(!(sc->devstate & ST_CONNECTED))
585                 {
586                         crit_exit();
587                         return(EIO);
588                 }
589
590                 if((m = i4b_Bgetmbuf(BCH_MAX_DATALEN)) != NULL)
591                 {
592                         int i;
593                         
594                         m->m_len = min(BCH_MAX_DATALEN, uio->uio_resid);
595         
596                         error = uiomove(m->m_data, m->m_len, uio);
597         
598                         for(i = 0; i < m->m_len; i++)
599                         {
600                                 /* convert if necessary */
601                                 if(sc->wcvttab)
602                                         mtod(m,u_char *)[i] = sc->wcvttab[mtod(m,u_char *)[i]];
603
604                                 /* always reverse bitorder to line */
605                                 mtod(m,u_char *)[i] = bitreverse[mtod(m,u_char *)[i]];
606                         }
607
608                         if(IF_QFULL(sc->isdn_linktab->tx_queue))
609                                 m_freem(m);
610                         else
611                                 IF_ENQUEUE(sc->isdn_linktab->tx_queue, m);
612                         (*sc->isdn_linktab->bch_tx_start)(sc->isdn_linktab->unit, sc->isdn_linktab->channel);
613                 }
614         
615                 crit_exit();
616         }
617         else if(func == FUNCDIAL)
618         {
619 #define CMDBUFSIZ 80 
620                 char cmdbuf[CMDBUFSIZ];
621                 int len = min(CMDBUFSIZ-1, uio->uio_resid);
622         
623                 error = uiomove(cmdbuf, len, uio);
624
625                 if(cmdbuf[0] == CMD_DIAL)
626                 {
627                         i4b_l4_dialoutnumber(BDRV_TEL, unit, len-1, &cmdbuf[1]);
628                 }
629                 else if(cmdbuf[0] == CMD_HUP)
630                 {
631                         i4b_l4_drvrdisc(BDRV_TEL, unit);
632                 }
633                 else if(cmdbuf[0] == CMD_KEYP)
634                 {
635                         i4b_l4_keypad(BDRV_TEL, unit, len-1, &cmdbuf[1]);
636                 }
637         }
638         else
639         {
640                 error = EIO;
641         }               
642         
643         return(error);
644 }
645
646 /*---------------------------------------------------------------------------*
647  *      
648  *---------------------------------------------------------------------------*/
649 #define NTONESAMP 32
650 static void
651 tel_tone(tel_sc_t *sc)
652 {
653         struct mbuf *m;
654         u_char *p;
655         int i;
656
657         if((m = i4b_Bgetmbuf(NTONESAMP)) == NULL) {
658                 kprintf("no mbuf in tel_tone\n");
659                 return;
660         }
661         p = m->m_data;
662         m->m_len = 0;
663         for (i = 0; i < NTONESAMP && (sc->devstate & ST_TONE); i++) {
664
665                 if (sc->tones.duration[sc->toneidx] > 0) {
666                         if (--sc->tones.duration[sc->toneidx] == 0) {
667                                 sc->toneidx++;
668                                 if (sc->toneidx == I4B_TEL_MAXTONES) {
669                                         sc->devstate &= ~ST_TONE;
670                                         sc->toneomega = 0;
671                                         sc->tonefreq = 0;
672                                 } else if (sc->tones.frequency[sc->toneidx] == 0 &&
673                                            sc->tones.duration[sc->toneidx] == 0) {
674                                         sc->devstate &= ~ST_TONE;
675                                         sc->toneomega = 0;
676                                         sc->tonefreq = 0;
677                                 } else {
678                                         sc->tonefreq = sc->tones.frequency[sc->toneidx];
679                                 }
680                                 if (sc->tones.duration[sc->toneidx] == 0) {
681                                         wakeup((caddr_t) &sc->tones);
682                                 }
683                         }
684                 }
685
686                 sc->toneomega += sc->tonefreq;
687                 if (sc->toneomega >= 8000)
688                         sc->toneomega -= 8000;
689                 *p++ = bitreverse[sinetab[sc->toneomega]];
690                 m->m_len++;
691         }
692         IF_ENQUEUE(sc->isdn_linktab->tx_queue, m);
693         (*sc->isdn_linktab->bch_tx_start)(sc->isdn_linktab->unit, sc->isdn_linktab->channel);
694 }
695
696 /*---------------------------------------------------------------------------*
697  *      device driver poll
698  *---------------------------------------------------------------------------*/
699 PDEVSTATIC int
700 i4btelpoll(struct dev_poll_args *ap)
701 {
702         cdev_t dev = ap->a_head.a_dev;
703         int revents = 0;        /* Events we found */
704         int unit = UNIT(dev);
705         int func = FUNC(dev);   
706
707         tel_sc_t *sc = &tel_sc[unit][func];
708         
709         crit_enter();
710
711         if(!(sc->devstate & ST_ISOPEN))
712         {
713                 NDBGL4(L4_TELDBG, "i4btel%d, !ST_ISOPEN", unit);
714                 crit_exit();
715                 ap->a_events = 0;
716                 return(0);
717         }
718
719         if(func == FUNCTEL)
720         {
721                 /*
722                  * Writes are OK if we are connected and the
723                  * transmit queue can take them
724                  */
725                  
726                 if((ap->a_events & (POLLOUT|POLLWRNORM))        &&
727                         (sc->devstate & ST_CONNECTED)   &&
728                         (sc->isdn_linktab != NULL)      &&
729                         (!IF_QFULL(sc->isdn_linktab->tx_queue)))
730                 {
731                         NDBGL4(L4_TELDBG, "i4btel%d, POLLOUT", unit);
732                         revents |= (ap->a_events & (POLLOUT|POLLWRNORM));
733                 }
734                 
735                 /* ... while reads are OK if we have any data */
736         
737                 if((ap->a_events & (POLLIN|POLLRDNORM)) &&
738                         (sc->devstate & ST_CONNECTED)   &&
739                         (sc->isdn_linktab != NULL)      &&
740                         (!IF_QEMPTY(sc->isdn_linktab->rx_queue)))
741                 {
742                         NDBGL4(L4_TELDBG, "i4btel%d, POLLIN", unit);
743                         revents |= (ap->a_events & (POLLIN|POLLRDNORM));
744                 }
745                         
746                 if(revents == 0)
747                 {
748                         NDBGL4(L4_TELDBG, "i4btel%d, selrecord", unit);
749                         selrecord(curthread, &sc->selp);
750                 }
751         }
752         else if(func == FUNCDIAL)
753         {
754                 if(ap->a_events & (POLLOUT|POLLWRNORM))
755                 {
756                         NDBGL4(L4_TELDBG, "i4bteld%d,  POLLOUT", unit);
757                         revents |= (ap->a_events & (POLLOUT|POLLWRNORM));
758                 }
759
760                 if(ap->a_events & (POLLIN|POLLRDNORM))
761                 {
762                         NDBGL4(L4_TELDBG, "i4bteld%d,  POLLIN, result = %d", unit, sc->result);
763                         if(sc->result != 0)
764                                 revents |= (ap->a_events & (POLLIN|POLLRDNORM));
765                 }
766                         
767                 if(revents == 0)
768                 {
769                         NDBGL4(L4_TELDBG, "i4bteld%d,  selrecord", unit);
770                         selrecord(curthread, &sc->selp);
771                 }
772         }
773         crit_exit();
774         ap->a_events = revents;
775         return (0);
776 }
777
778 /*===========================================================================*
779  *                      ISDN INTERFACE ROUTINES
780  *===========================================================================*/
781
782 /*---------------------------------------------------------------------------*
783 *       this routine is called from L4 handler at connect time
784  *---------------------------------------------------------------------------*/
785 static void
786 tel_connect(int unit, void *cdp)
787 {
788         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
789
790         /* audio device */
791         
792         sc->cdp = (call_desc_t *)cdp;
793
794         sc->devstate |= ST_CONNECTED;
795
796         /* dialer device */
797         
798         sc = &tel_sc[unit][FUNCDIAL];
799
800         if(sc->devstate == ST_ISOPEN)
801         {
802                 sc->result = RSP_CONN;
803
804                 if(sc->devstate & ST_RDWAITDATA)
805                 {
806                         sc->devstate &= ~ST_RDWAITDATA;
807                         wakeup((caddr_t) &sc->result);
808                 }
809                 selwakeup(&sc->selp);
810         }
811 }
812
813 /*---------------------------------------------------------------------------*
814  *      this routine is called from L4 handler at disconnect time
815  *---------------------------------------------------------------------------*/
816 static void
817 tel_disconnect(int unit, void *cdp)
818 {
819 /*      call_desc_t *cd = (call_desc_t *)cdp; */
820
821         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
822         
823         /* audio device */
824         
825         sc->devstate &= ~ST_CONNECTED;
826
827         if(sc->devstate & ST_RDWAITDATA)
828         {
829                 sc->devstate &= ~ST_RDWAITDATA;
830                 wakeup((caddr_t) &sc->isdn_linktab->rx_queue);
831         }
832
833         if(sc->devstate & ST_WRWAITEMPTY)
834         {
835                 sc->devstate &= ~ST_WRWAITEMPTY;
836                 wakeup((caddr_t) &sc->isdn_linktab->tx_queue);
837         }
838
839         /* dialer device */
840         
841         sc = &tel_sc[unit][FUNCDIAL];
842
843         if(sc->devstate & ST_ISOPEN)
844         {
845                 sc->result = RSP_HUP;
846
847                 if(sc->devstate & ST_RDWAITDATA)
848                 {
849                         sc->devstate &= ~ST_RDWAITDATA;
850                         wakeup((caddr_t) &sc->result);
851                 }
852                 selwakeup(&sc->selp);
853
854                 if (sc->devstate & ST_TONE) {
855                         sc->devstate &= ~ST_TONE;
856                         wakeup((caddr_t) &sc->tones);
857                 }
858         }
859 }
860
861 /*---------------------------------------------------------------------------*
862  *      feedback from daemon in case of dial problems
863  *---------------------------------------------------------------------------*/
864 static void
865 tel_dialresponse(int unit, int status, cause_t cause)
866 {       
867         tel_sc_t *sc = &tel_sc[unit][FUNCDIAL];
868
869         NDBGL4(L4_TELDBG, "i4btel%d,  status=%d, cause=0x%4x", unit, status, cause);
870
871         if((sc->devstate == ST_ISOPEN) && status)
872         {       
873                 sc->result = RSP_NOA;
874
875                 if(sc->devstate & ST_RDWAITDATA)
876                 {
877                         sc->devstate &= ~ST_RDWAITDATA;
878                         wakeup((caddr_t) &sc->result);
879                 }
880                 selwakeup(&sc->selp);
881         }
882 }
883         
884 /*---------------------------------------------------------------------------*
885  *      interface up/down
886  *---------------------------------------------------------------------------*/
887 static void
888 tel_updown(int unit, int updown)
889 {
890 }
891         
892 /*---------------------------------------------------------------------------*
893  *      this routine is called from the HSCX interrupt handler
894  *      when a new frame (mbuf) has been received and was put on
895  *      the rx queue.
896  *---------------------------------------------------------------------------*/
897 static void
898 tel_rx_data_rdy(int unit)
899 {
900         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
901         
902         if(sc->devstate & ST_RDWAITDATA)
903         {
904                 sc->devstate &= ~ST_RDWAITDATA;
905                 wakeup((caddr_t) &sc->isdn_linktab->rx_queue);
906         }
907         selwakeup(&sc->selp);
908 }
909
910 /*---------------------------------------------------------------------------*
911  *      this routine is called from the HSCX interrupt handler
912  *      when the last frame has been sent out and there is no
913  *      further frame (mbuf) in the tx queue.
914  *---------------------------------------------------------------------------*/
915 static void
916 tel_tx_queue_empty(int unit)
917 {
918         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
919
920         if(sc->devstate & ST_WRWAITEMPTY)
921         {
922                 sc->devstate &= ~ST_WRWAITEMPTY;
923                 wakeup((caddr_t) &sc->isdn_linktab->tx_queue);
924         }
925         if(sc->devstate & ST_TONE) {
926                 tel_tone(sc);
927         } else {
928                 selwakeup(&sc->selp);
929         }
930 }
931
932 /*---------------------------------------------------------------------------*
933  *      this routine is called from the HSCX interrupt handler
934  *      each time a packet is received or transmitted.
935  *---------------------------------------------------------------------------*/
936 static void
937 tel_activity(int unit, int rxtx)
938 {
939         if(tel_sc[unit][FUNCTEL].cdp)
940                 tel_sc[unit][FUNCTEL].cdp->last_active_time = SECOND;
941 }
942
943 /*---------------------------------------------------------------------------*
944  *      return this drivers linktab address
945  *---------------------------------------------------------------------------*/
946 drvr_link_t *
947 tel_ret_linktab(int unit)
948 {
949         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
950         
951         tel_init_linktab(unit);
952         return(&sc->drvr_linktab);
953 }
954
955 /*---------------------------------------------------------------------------*
956  *      setup the isdn_linktab for this driver
957  *---------------------------------------------------------------------------*/
958 void
959 tel_set_linktab(int unit, isdn_link_t *ilt)
960 {
961         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
962         sc->isdn_linktab = ilt;
963 }
964
965 /*---------------------------------------------------------------------------*
966  *      initialize this drivers linktab
967  *---------------------------------------------------------------------------*/
968 static void
969 tel_init_linktab(int unit)
970 {
971         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
972         
973         sc->drvr_linktab.unit = unit;
974         sc->drvr_linktab.bch_rx_data_ready = tel_rx_data_rdy;
975         sc->drvr_linktab.bch_tx_queue_empty = tel_tx_queue_empty;
976         sc->drvr_linktab.bch_activity = tel_activity;   
977         sc->drvr_linktab.line_connected = tel_connect;
978         sc->drvr_linktab.line_disconnected = tel_disconnect;
979         sc->drvr_linktab.dial_response = tel_dialresponse;
980         sc->drvr_linktab.updown_ind = tel_updown;       
981 }
982
983 /*===========================================================================*
984  *      AUDIO FORMAT CONVERSION (produced by running g711conv)
985  *===========================================================================*/
986
987 /*---------------------------------------------------------------------------*
988  *      A-law to u-law conversion
989  *---------------------------------------------------------------------------*/
990 static unsigned char a2u_tab[256] = {
991 /* 00 */        0x2a, 0x2b, 0x28, 0x29, 0x2e, 0x2f, 0x2c, 0x2d, 
992 /* 08 */        0x22, 0x23, 0x20, 0x21, 0x26, 0x27, 0x24, 0x25, 
993 /* 10 */        0x39, 0x3a, 0x37, 0x38, 0x3d, 0x3e, 0x3b, 0x3c, 
994 /* 18 */        0x31, 0x32, 0x30, 0x30, 0x35, 0x36, 0x33, 0x34, 
995 /* 20 */        0x0a, 0x0b, 0x08, 0x09, 0x0e, 0x0f, 0x0c, 0x0d, 
996 /* 28 */        0x02, 0x03, 0x00, 0x01, 0x06, 0x07, 0x04, 0x05, 
997 /* 30 */        0x1a, 0x1b, 0x18, 0x19, 0x1e, 0x1f, 0x1c, 0x1d, 
998 /* 38 */        0x12, 0x13, 0x10, 0x11, 0x16, 0x17, 0x14, 0x15, 
999 /* 40 */        0x62, 0x63, 0x60, 0x61, 0x66, 0x67, 0x64, 0x65, 
1000 /* 48 */        0x5d, 0x5d, 0x5c, 0x5c, 0x5f, 0x5f, 0x5e, 0x5e, 
1001 /* 50 */        0x74, 0x76, 0x70, 0x72, 0x7c, 0x7e, 0x78, 0x7a, 
1002 /* 58 */        0x6a, 0x6b, 0x68, 0x69, 0x6e, 0x6f, 0x6c, 0x6d, 
1003 /* 60 */        0x48, 0x49, 0x46, 0x47, 0x4c, 0x4d, 0x4a, 0x4b, 
1004 /* 68 */        0x40, 0x41, 0x3f, 0x3f, 0x44, 0x45, 0x42, 0x43, 
1005 /* 70 */        0x56, 0x57, 0x54, 0x55, 0x5a, 0x5b, 0x58, 0x59, 
1006 /* 78 */        0x4f, 0x4f, 0x4e, 0x4e, 0x52, 0x53, 0x50, 0x51, 
1007 /* 80 */        0xaa, 0xab, 0xa8, 0xa9, 0xae, 0xaf, 0xac, 0xad, 
1008 /* 88 */        0xa2, 0xa3, 0xa0, 0xa1, 0xa6, 0xa7, 0xa4, 0xa5, 
1009 /* 90 */        0xb9, 0xba, 0xb7, 0xb8, 0xbd, 0xbe, 0xbb, 0xbc, 
1010 /* 98 */        0xb1, 0xb2, 0xb0, 0xb0, 0xb5, 0xb6, 0xb3, 0xb4, 
1011 /* a0 */        0x8a, 0x8b, 0x88, 0x89, 0x8e, 0x8f, 0x8c, 0x8d, 
1012 /* a8 */        0x82, 0x83, 0x80, 0x81, 0x86, 0x87, 0x84, 0x85, 
1013 /* b0 */        0x9a, 0x9b, 0x98, 0x99, 0x9e, 0x9f, 0x9c, 0x9d, 
1014 /* b8 */        0x92, 0x93, 0x90, 0x91, 0x96, 0x97, 0x94, 0x95, 
1015 /* c0 */        0xe2, 0xe3, 0xe0, 0xe1, 0xe6, 0xe7, 0xe4, 0xe5, 
1016 /* c8 */        0xdd, 0xdd, 0xdc, 0xdc, 0xdf, 0xdf, 0xde, 0xde, 
1017 /* d0 */        0xf4, 0xf6, 0xf0, 0xf2, 0xfc, 0xfe, 0xf8, 0xfa, 
1018 /* d8 */        0xea, 0xeb, 0xe8, 0xe9, 0xee, 0xef, 0xec, 0xed, 
1019 /* e0 */        0xc8, 0xc9, 0xc6, 0xc7, 0xcc, 0xcd, 0xca, 0xcb, 
1020 /* e8 */        0xc0, 0xc1, 0xbf, 0xbf, 0xc4, 0xc5, 0xc2, 0xc3, 
1021 /* f0 */        0xd6, 0xd7, 0xd4, 0xd5, 0xda, 0xdb, 0xd8, 0xd9, 
1022 /* f8 */        0xcf, 0xcf, 0xce, 0xce, 0xd2, 0xd3, 0xd0, 0xd1
1023 };
1024
1025 /*---------------------------------------------------------------------------*
1026  *      u-law to A-law conversion
1027  *---------------------------------------------------------------------------*/
1028 static unsigned char u2a_tab[256] = {
1029 /* 00 */        0x2a, 0x2b, 0x28, 0x29, 0x2e, 0x2f, 0x2c, 0x2d, 
1030 /* 08 */        0x22, 0x23, 0x20, 0x21, 0x26, 0x27, 0x24, 0x25, 
1031 /* 10 */        0x3a, 0x3b, 0x38, 0x39, 0x3e, 0x3f, 0x3c, 0x3d, 
1032 /* 18 */        0x32, 0x33, 0x30, 0x31, 0x36, 0x37, 0x34, 0x35, 
1033 /* 20 */        0x0a, 0x0b, 0x08, 0x09, 0x0e, 0x0f, 0x0c, 0x0d, 
1034 /* 28 */        0x02, 0x03, 0x00, 0x01, 0x06, 0x07, 0x04, 0x05, 
1035 /* 30 */        0x1b, 0x18, 0x19, 0x1e, 0x1f, 0x1c, 0x1d, 0x12, 
1036 /* 38 */        0x13, 0x10, 0x11, 0x16, 0x17, 0x14, 0x15, 0x6a, 
1037 /* 40 */        0x68, 0x69, 0x6e, 0x6f, 0x6c, 0x6d, 0x62, 0x63, 
1038 /* 48 */        0x60, 0x61, 0x66, 0x67, 0x64, 0x65, 0x7a, 0x78, 
1039 /* 50 */        0x7e, 0x7f, 0x7c, 0x7d, 0x72, 0x73, 0x70, 0x71, 
1040 /* 58 */        0x76, 0x77, 0x74, 0x75, 0x4b, 0x49, 0x4f, 0x4d, 
1041 /* 60 */        0x42, 0x43, 0x40, 0x41, 0x46, 0x47, 0x44, 0x45, 
1042 /* 68 */        0x5a, 0x5b, 0x58, 0x59, 0x5e, 0x5f, 0x5c, 0x5d, 
1043 /* 70 */        0x52, 0x52, 0x53, 0x53, 0x50, 0x50, 0x51, 0x51, 
1044 /* 78 */        0x56, 0x56, 0x57, 0x57, 0x54, 0x54, 0x55, 0x55, 
1045 /* 80 */        0xaa, 0xab, 0xa8, 0xa9, 0xae, 0xaf, 0xac, 0xad, 
1046 /* 88 */        0xa2, 0xa3, 0xa0, 0xa1, 0xa6, 0xa7, 0xa4, 0xa5, 
1047 /* 90 */        0xba, 0xbb, 0xb8, 0xb9, 0xbe, 0xbf, 0xbc, 0xbd, 
1048 /* 98 */        0xb2, 0xb3, 0xb0, 0xb1, 0xb6, 0xb7, 0xb4, 0xb5, 
1049 /* a0 */        0x8a, 0x8b, 0x88, 0x89, 0x8e, 0x8f, 0x8c, 0x8d, 
1050 /* a8 */        0x82, 0x83, 0x80, 0x81, 0x86, 0x87, 0x84, 0x85, 
1051 /* b0 */        0x9b, 0x98, 0x99, 0x9e, 0x9f, 0x9c, 0x9d, 0x92, 
1052 /* b8 */        0x93, 0x90, 0x91, 0x96, 0x97, 0x94, 0x95, 0xea, 
1053 /* c0 */        0xe8, 0xe9, 0xee, 0xef, 0xec, 0xed, 0xe2, 0xe3, 
1054 /* c8 */        0xe0, 0xe1, 0xe6, 0xe7, 0xe4, 0xe5, 0xfa, 0xf8, 
1055 /* d0 */        0xfe, 0xff, 0xfc, 0xfd, 0xf2, 0xf3, 0xf0, 0xf1, 
1056 /* d8 */        0xf6, 0xf7, 0xf4, 0xf5, 0xcb, 0xc9, 0xcf, 0xcd, 
1057 /* e0 */        0xc2, 0xc3, 0xc0, 0xc1, 0xc6, 0xc7, 0xc4, 0xc5, 
1058 /* e8 */        0xda, 0xdb, 0xd8, 0xd9, 0xde, 0xdf, 0xdc, 0xdd, 
1059 /* f0 */        0xd2, 0xd2, 0xd3, 0xd3, 0xd0, 0xd0, 0xd1, 0xd1, 
1060 /* f8 */        0xd6, 0xd6, 0xd7, 0xd7, 0xd4, 0xd4, 0xd5, 0xd5
1061 };
1062   
1063 /*---------------------------------------------------------------------------*
1064  *      reverse bits in a byte
1065  *---------------------------------------------------------------------------*/
1066 static unsigned char bitreverse[256] = {
1067 /* 00 */        0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, 
1068 /* 08 */        0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, 
1069 /* 10 */        0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, 
1070 /* 18 */        0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, 
1071 /* 20 */        0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, 
1072 /* 28 */        0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, 
1073 /* 30 */        0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, 
1074 /* 38 */        0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, 
1075 /* 40 */        0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, 
1076 /* 48 */        0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, 
1077 /* 50 */        0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, 
1078 /* 58 */        0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, 
1079 /* 60 */        0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, 
1080 /* 68 */        0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, 
1081 /* 70 */        0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, 
1082 /* 78 */        0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, 
1083 /* 80 */        0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, 
1084 /* 88 */        0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, 
1085 /* 90 */        0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, 
1086 /* 98 */        0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, 
1087 /* a0 */        0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, 
1088 /* a8 */        0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, 
1089 /* b0 */        0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, 
1090 /* b8 */        0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, 
1091 /* c0 */        0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, 
1092 /* c8 */        0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, 
1093 /* d0 */        0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, 
1094 /* d8 */        0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, 
1095 /* e0 */        0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, 
1096 /* e8 */        0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, 
1097 /* f0 */        0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, 
1098 /* f8 */        0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
1099 };
1100
1101 static u_char sinetab[8000] = { 213, 213, 213, 213, 213, 213, 213, 212,
1102 212, 212, 212, 212, 212, 215, 215, 215, 215, 215, 215, 214, 214,
1103 214, 214, 214, 214, 209, 209, 209, 209, 209, 209, 209, 208, 208,
1104 208, 208, 208, 208, 211, 211, 211, 211, 211, 211, 210, 210, 210,
1105 210, 210, 210, 221, 221, 221, 221, 221, 221, 220, 220, 220, 220,
1106 220, 220, 220, 223, 223, 223, 223, 223, 223, 222, 222, 222, 222,
1107 222, 222, 217, 217, 217, 217, 217, 217, 216, 216, 216, 216, 216,
1108 216, 216, 219, 219, 219, 219, 219, 219, 218, 218, 218, 218, 218,
1109 218, 197, 197, 197, 197, 197, 197, 196, 196, 196, 196, 196, 196,
1110 196, 199, 199, 199, 199, 199, 199, 198, 198, 198, 198, 198, 198,
1111 193, 193, 193, 193, 193, 193, 192, 192, 192, 192, 192, 192, 192,
1112 195, 195, 195, 195, 195, 195, 194, 194, 194, 194, 194, 194, 205,
1113 205, 205, 205, 205, 205, 204, 204, 204, 204, 204, 204, 204, 207,
1114 207, 207, 207, 207, 207, 206, 206, 206, 206, 206, 206, 201, 201,
1115 201, 201, 201, 201, 200, 200, 200, 200, 200, 200, 200, 203, 203,
1116 203, 203, 203, 203, 202, 202, 202, 202, 202, 202, 245, 245, 245,
1117 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 244, 244, 244,
1118 244, 244, 244, 244, 244, 244, 244, 244, 244, 247, 247, 247, 247,
1119 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 246, 246, 246,
1120 246, 246, 246, 246, 246, 246, 246, 246, 246, 241, 241, 241, 241,
1121 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, 240, 240, 240,
1122 240, 240, 240, 240, 240, 240, 240, 240, 243, 243, 243, 243, 243,
1123 243, 243, 243, 243, 243, 243, 243, 243, 242, 242, 242, 242, 242,
1124 242, 242, 242, 242, 242, 242, 242, 242, 253, 253, 253, 253, 253,
1125 253, 253, 253, 253, 253, 253, 253, 253, 252, 252, 252, 252, 252,
1126 252, 252, 252, 252, 252, 252, 252, 255, 255, 255, 255, 255, 255,
1127 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254,
1128 254, 254, 254, 254, 254, 254, 254, 249, 249, 249, 249, 249, 249,
1129 249, 249, 249, 249, 249, 249, 249, 248, 248, 248, 248, 248, 248,
1130 248, 248, 248, 248, 248, 248, 248, 251, 251, 251, 251, 251, 251,
1131 251, 251, 251, 251, 251, 251, 251, 250, 250, 250, 250, 250, 250,
1132 250, 250, 250, 250, 250, 250, 250, 229, 229, 229, 229, 229, 229,
1133 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
1134 229, 229, 229, 229, 229, 229, 229, 228, 228, 228, 228, 228, 228,
1135 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
1136 228, 228, 228, 228, 228, 228, 228, 228, 231, 231, 231, 231, 231,
1137 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
1138 231, 231, 231, 231, 231, 231, 231, 231, 231, 230, 230, 230, 230,
1139 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1140 230, 230, 230, 230, 230, 230, 230, 230, 230, 225, 225, 225, 225,
1141 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
1142 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 224, 224,
1143 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
1144 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 227,
1145 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1146 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1147 227, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1148 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1149 226, 226, 226, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1150 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1151 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 236, 236,
1152 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1153 236, 236, 236, 236, 236, 236, 236, 236, 239, 239, 239, 239, 239,
1154 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1155 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 238, 238,
1156 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
1157 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
1158 238, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1159 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1160 233, 233, 233, 233, 233, 232, 232, 232, 232, 232, 232, 232, 232,
1161 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1162 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 235, 235, 235,
1163 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
1164 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
1165 235, 235, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1166 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1167 234, 234, 234, 234, 234, 234, 234, 149, 149, 149, 149, 149, 149,
1168 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1169 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1170 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1171 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1172 149, 149, 149, 149, 149, 149, 149, 148, 148, 148, 148, 148, 148,
1173 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1174 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1175 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1176 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1177 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 151, 151, 151,
1178 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1179 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1180 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1181 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1182 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1183 151, 151, 151, 151, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1184 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1185 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1186 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1187 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1188 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1189 150, 150, 150, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1190 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1191 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1192 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1193 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1194 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1195 145, 145, 145, 145, 145, 145, 145, 145, 144, 144, 144, 144, 144,
1196 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1197 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1198 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1199 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1200 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1201 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1202 144, 144, 144, 144, 144, 144, 144, 144, 144, 147, 147, 147, 147,
1203 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1204 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1205 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1206 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1207 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1208 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1209 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1210 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 146, 146, 146,
1211 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1212 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1213 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1214 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1215 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1216 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1217 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1218 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1219 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1220 146, 146, 146, 146, 146, 146, 157, 157, 157, 157, 157, 157, 157,
1221 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1222 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1223 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1224 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1225 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1226 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1227 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1228 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1229 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1230 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1231 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1232 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1233 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1234 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1235 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1236 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1237 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1238 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1239 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1240 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1241 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1242 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1243 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1244 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1245 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1246 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1247 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1248 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1249 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1250 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1251 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1252 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1253 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1254 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1255 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1256 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1257 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1258 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1259 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1260 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1261 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1262 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1263 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1264 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1265 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1266 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1267 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1268 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1269 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1270 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1271 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1272 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1273 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1274 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1275 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1276 156, 156, 156, 156, 156, 156, 156, 157, 157, 157, 157, 157, 157,
1277 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1278 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1279 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1280 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1281 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1282 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1283 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1284 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1285 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1286 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1287 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1288 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1289 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1290 157, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1291 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1292 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1293 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1294 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1295 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1296 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1297 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1298 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1299 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 147, 147, 147,
1300 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1301 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1302 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1303 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1304 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1305 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1306 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1307 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 144, 144,
1308 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1309 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1310 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1311 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1312 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1313 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1314 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 145,
1315 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1316 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1317 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1318 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1319 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1320 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1321 145, 145, 145, 145, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1322 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1323 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1324 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1325 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1326 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1327 150, 150, 150, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1328 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1329 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1330 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1331 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1332 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 148, 148, 148,
1333 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1334 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1335 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1336 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1337 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1338 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1339 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1340 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1341 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1342 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1343 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1344 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1345 234, 234, 234, 234, 234, 235, 235, 235, 235, 235, 235, 235, 235,
1346 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
1347 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 232, 232, 232,
1348 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1349 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1350 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1351 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1352 233, 233, 233, 233, 233, 233, 238, 238, 238, 238, 238, 238, 238,
1353 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
1354 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 239, 239, 239,
1355 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1356 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 236,
1357 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1358 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1359 236, 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1360 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1361 237, 237, 237, 237, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1362 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1363 226, 226, 226, 226, 226, 226, 227, 227, 227, 227, 227, 227, 227,
1364 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1365 227, 227, 227, 227, 227, 227, 227, 227, 224, 224, 224, 224, 224,
1366 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
1367 224, 224, 224, 224, 224, 224, 224, 224, 224, 225, 225, 225, 225,
1368 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
1369 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 230, 230,
1370 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1371 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 231, 231,
1372 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
1373 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 228,
1374 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
1375 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
1376 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
1377 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
1378 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250,
1379 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251,
1380 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
1381 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
1382 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
1383 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
1384 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 253,
1385 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 242,
1386 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 243,
1387 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 240,
1388 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 241,
1389 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 246, 246,
1390 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 247, 247,
1391 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 244, 244,
1392 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 245, 245, 245,
1393 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 202, 202, 202,
1394 202, 202, 202, 203, 203, 203, 203, 203, 203, 200, 200, 200, 200,
1395 200, 200, 200, 201, 201, 201, 201, 201, 201, 206, 206, 206, 206,
1396 206, 206, 207, 207, 207, 207, 207, 207, 204, 204, 204, 204, 204,
1397 204, 204, 205, 205, 205, 205, 205, 205, 194, 194, 194, 194, 194,
1398 194, 195, 195, 195, 195, 195, 195, 192, 192, 192, 192, 192, 192,
1399 192, 193, 193, 193, 193, 193, 193, 198, 198, 198, 198, 198, 198,
1400 199, 199, 199, 199, 199, 199, 196, 196, 196, 196, 196, 196, 196,
1401 197, 197, 197, 197, 197, 197, 218, 218, 218, 218, 218, 218, 219,
1402 219, 219, 219, 219, 219, 216, 216, 216, 216, 216, 216, 216, 217,
1403 217, 217, 217, 217, 217, 222, 222, 222, 222, 222, 222, 223, 223,
1404 223, 223, 223, 223, 220, 220, 220, 220, 220, 220, 220, 221, 221,
1405 221, 221, 221, 221, 210, 210, 210, 210, 210, 210, 211, 211, 211,
1406 211, 211, 211, 208, 208, 208, 208, 208, 208, 209, 209, 209, 209,
1407 209, 209, 209, 214, 214, 214, 214, 214, 214, 215, 215, 215, 215,
1408 215, 215, 212, 212, 212, 212, 212, 212, 213, 213, 213, 213, 213,
1409 213, 213, 90, 90, 90, 85, 85, 85, 85, 85, 85, 84, 84, 84, 84, 84,
1410 84, 87, 87, 87, 87, 87, 87, 86, 86, 86, 86, 86, 86, 81, 81, 81,
1411 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 83, 83, 83, 83, 83, 83,
1412 82, 82, 82, 82, 82, 82, 93, 93, 93, 93, 93, 93, 93, 92, 92, 92,
1413 92, 92, 92, 95, 95, 95, 95, 95, 95, 94, 94, 94, 94, 94, 94, 89,
1414 89, 89, 89, 89, 89, 88, 88, 88, 88, 88, 88, 88, 91, 91, 91, 91,
1415 91, 91, 90, 90, 90, 90, 90, 90, 69, 69, 69, 69, 69, 69, 68, 68,
1416 68, 68, 68, 68, 68, 71, 71, 71, 71, 71, 71, 70, 70, 70, 70, 70,
1417 70, 65, 65, 65, 65, 65, 65, 64, 64, 64, 64, 64, 64, 64, 67, 67,
1418 67, 67, 67, 67, 66, 66, 66, 66, 66, 66, 77, 77, 77, 77, 77, 77,
1419 76, 76, 76, 76, 76, 76, 76, 79, 79, 79, 79, 79, 79, 78, 78, 78,
1420 78, 78, 78, 73, 73, 73, 73, 73, 73, 73, 72, 72, 72, 72, 72, 72,
1421 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 74, 117, 117, 117, 117,
1422 117, 117, 117, 117, 117, 117, 117, 117, 117, 116, 116, 116, 116,
1423 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119,
1424 119, 119, 119, 119, 119, 119, 119, 119, 118, 118, 118, 118, 118,
1425 118, 118, 118, 118, 118, 118, 118, 118, 113, 113, 113, 113, 113,
1426 113, 113, 113, 113, 113, 113, 113, 113, 112, 112, 112, 112, 112,
1427 112, 112, 112, 112, 112, 112, 112, 115, 115, 115, 115, 115, 115,
1428 115, 115, 115, 115, 115, 115, 115, 114, 114, 114, 114, 114, 114,
1429 114, 114, 114, 114, 114, 114, 114, 125, 125, 125, 125, 125, 125,
1430 125, 125, 125, 125, 125, 125, 125, 124, 124, 124, 124, 124, 124,
1431 124, 124, 124, 124, 124, 124, 124, 127, 127, 127, 127, 127, 127,
1432 127, 127, 127, 127, 127, 127, 126, 126, 126, 126, 126, 126, 126,
1433 126, 126, 126, 126, 126, 126, 121, 121, 121, 121, 121, 121, 121,
1434 121, 121, 121, 121, 121, 121, 120, 120, 120, 120, 120, 120, 120,
1435 120, 120, 120, 120, 120, 120, 123, 123, 123, 123, 123, 123, 123,
1436 123, 123, 123, 123, 123, 123, 122, 122, 122, 122, 122, 122, 122,
1437 122, 122, 122, 122, 122, 122, 101, 101, 101, 101, 101, 101, 101,
1438 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
1439 101, 101, 101, 101, 101, 101, 101, 100, 100, 100, 100, 100, 100,
1440 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1441 100, 100, 100, 100, 100, 100, 100, 103, 103, 103, 103, 103, 103,
1442 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1443 103, 103, 103, 103, 103, 103, 103, 103, 102, 102, 102, 102, 102,
1444 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
1445 102, 102, 102, 102, 102, 102, 102, 102, 102, 97, 97, 97, 97, 97,
1446 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
1447 97, 97, 97, 97, 97, 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
1448 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
1449 96, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1450 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 98, 98, 98,
1451 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1452 98, 98, 98, 98, 98, 98, 98, 98, 98, 109, 109, 109, 109, 109, 109,
1453 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1454 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 108, 108, 108,
1455 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1456 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 111,
1457 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1458 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1459 111, 111, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1460 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1461 110, 110, 110, 110, 110, 110, 105, 105, 105, 105, 105, 105, 105,
1462 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
1463 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104,
1464 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1465 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1466 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
1467 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
1468 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106,
1469 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1470 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 21,
1471 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1472 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1473 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1474 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1475 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1476 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1477 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1478 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1479 20, 20, 20, 20, 20, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1480 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1481 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1482 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1483 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 22, 22, 22,
1484 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1485 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1486 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1487 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1488 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 17, 17, 17, 17, 17, 17,
1489 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1490 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1491 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1492 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1493 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16,
1494 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1495 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1496 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1497 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1498 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1499 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 19, 19, 19, 19, 19, 19,
1500 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1501 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1502 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1503 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1504 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1505 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1506 19, 19, 19, 19, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1507 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1508 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1509 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1510 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1511 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1512 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1513 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1514 18, 18, 18, 18, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1515 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1516 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1517 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1518 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1519 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1520 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1521 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1522 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1523 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1524 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1525 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 28, 28, 28, 28, 28,
1526 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1527 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1528 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1529 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1530 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1531 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1532 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1533 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1534 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1535 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1536 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1537 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1538 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1539 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1540 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1541 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1542 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1543 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1544 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1545 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1546 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1547 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1548 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1549 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1550 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1551 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1552 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1553 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1554 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1555 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1556 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1557 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1558 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1559 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1560 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1561 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1562 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1563 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1564 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1565 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1566 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1567 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1568 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1569 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 18, 18, 18, 18, 18,
1570 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1571 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1572 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1573 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1574 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1575 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1576 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1577 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19,
1578 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1579 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1580 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1581 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1582 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1583 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1584 19, 19, 19, 19, 19, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1585 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1586 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1587 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1588 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1589 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1590 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1591 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1592 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1593 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1594 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1595 17, 17, 17, 17, 17, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1596 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1597 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1598 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1599 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1600 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1601 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1602 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1603 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1604 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 20, 20, 20, 20, 20, 20,
1605 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1606 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1607 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1608 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21,
1609 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1610 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1611 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1612 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1613 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1614 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1615 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 107,
1616 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
1617 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104,
1618 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1619 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1620 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
1621 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
1622 105, 105, 105, 105, 105, 105, 110, 110, 110, 110, 110, 110, 110,
1623 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1624 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 111, 111,
1625 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1626 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1627 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1628 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1629 108, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1630 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1631 109, 109, 109, 109, 109, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1632 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1633 98, 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1634 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 96, 96,
1635 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
1636 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, 97, 97, 97, 97, 97, 97,
1637 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
1638 97, 97, 97, 97, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
1639 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
1640 102, 102, 102, 102, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1641 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1642 103, 103, 103, 103, 103, 100, 100, 100, 100, 100, 100, 100, 100,
1643 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1644 100, 100, 100, 100, 100, 101, 101, 101, 101, 101, 101, 101, 101,
1645 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
1646 101, 101, 101, 101, 101, 101, 122, 122, 122, 122, 122, 122, 122,
1647 122, 122, 122, 122, 122, 122, 123, 123, 123, 123, 123, 123, 123,
1648 123, 123, 123, 123, 123, 123, 120, 120, 120, 120, 120, 120, 120,
1649 120, 120, 120, 120, 120, 120, 121, 121, 121, 121, 121, 121, 121,
1650 121, 121, 121, 121, 121, 121, 126, 126, 126, 126, 126, 126, 126,
1651 126, 126, 126, 126, 126, 126, 127, 127, 127, 127, 127, 127, 127,
1652 127, 127, 127, 127, 127, 124, 124, 124, 124, 124, 124, 124, 124,
1653 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 125, 125, 125,
1654 125, 125, 125, 125, 125, 114, 114, 114, 114, 114, 114, 114, 114,
1655 114, 114, 114, 114, 114, 115, 115, 115, 115, 115, 115, 115, 115,
1656 115, 115, 115, 115, 115, 112, 112, 112, 112, 112, 112, 112, 112,
1657 112, 112, 112, 112, 113, 113, 113, 113, 113, 113, 113, 113, 113,
1658 113, 113, 113, 113, 118, 118, 118, 118, 118, 118, 118, 118, 118,
1659 118, 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, 119, 119,
1660 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
1661 116, 116, 116, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
1662 117, 117, 117, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 72,
1663 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73, 78, 78, 78, 78,
1664 78, 78, 79, 79, 79, 79, 79, 79, 76, 76, 76, 76, 76, 76, 76, 77,
1665 77, 77, 77, 77, 77, 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67,
1666 67, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 70, 70,
1667 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 68, 68, 68, 68, 68, 68,
1668 68, 69, 69, 69, 69, 69, 69, 90, 90, 90, 90, 90, 90, 91, 91, 91,
1669 91, 91, 91, 88, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89,
1670 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, 95, 95, 92, 92, 92, 92,
1671 92, 92, 93, 93, 93, 93, 93, 93, 93, 82, 82, 82, 82, 82, 82, 83,
1672 83, 83, 83, 83, 83, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81,
1673 81, 81, 86, 86, 86, 86, 86, 86, 87, 87, 87, 87, 87, 87, 84, 84,
1674 84, 84, 84, 84, 85, 85, 85, 85, 85, 85, 90, 90, 90 };
1675
1676 /*===========================================================================*/
1677
1678 #endif /* NI4BTEL > 0 */