From b3eba955205db2b26db8791e876e40d885dc9c67 Mon Sep 17 00:00:00 2001 From: Peter Harpending Date: Sun, 30 Jul 2023 22:58:55 -0600 Subject: [PATCH] starting jr controller api idiom --- jrx/bg-test-inline.js | 1 - jrx/names.txt | 4096 +++++++++++++++++++++++++++++++++++++++++ jrx/popup.html | 38 +- jrx/src/b_lib.ts | 270 +++ jrx/src/background.ts | 122 +- jrx/src/c_lib.ts | 118 ++ jrx/src/content.ts | 65 +- jrx/src/jr_ipc.ts | 12 - jrx/src/popup.ts | 79 +- jrx/tsconfig.json | 1 + 10 files changed, 4628 insertions(+), 174 deletions(-) delete mode 100644 jrx/bg-test-inline.js create mode 100644 jrx/names.txt create mode 100644 jrx/src/b_lib.ts create mode 100644 jrx/src/c_lib.ts delete mode 100644 jrx/src/jr_ipc.ts diff --git a/jrx/bg-test-inline.js b/jrx/bg-test-inline.js deleted file mode 100644 index 5ffe6c8..0000000 --- a/jrx/bg-test-inline.js +++ /dev/null @@ -1 +0,0 @@ -console.log('bg-test-inline.js line 1!'); diff --git a/jrx/names.txt b/jrx/names.txt new file mode 100644 index 0000000..fbbea31 --- /dev/null +++ b/jrx/names.txt @@ -0,0 +1,4096 @@ +AARON +ABBEY +ABBIE +ABBY +ABIGAIL +ADA +ADAH +ADALINE +ADAM +ADDIE +ADELA +ADELAIDA +ADELAIDE +ADELE +ADELIA +ADELINA +ADELINE +ADELL +ADELLA +ADELLE +ADENA +ADINA +ADRIA +ADRIAN +ADRIANA +ADRIANE +ADRIANNA +ADRIANNE +ADRIEN +ADRIENE +ADRIENNE +AFTON +AGATHA +AGNES +AGNUS +AGRIPINA +AGUEDA +AGUSTINA +AI +AIDA +AIDE +AIKO +AILEEN +AILENE +AIMEE +AISHA +AJA +AKIKO +AKILAH +ALAINA +ALANA +ALANE +ALANNA +ALAYNA +ALBA +ALBERT +ALBERTA +ALBERTHA +ALBERTINA +ALBERTINE +ALBINA +ALDA +ALEASE +ALECIA +ALEEN +ALEIDA +ALEISHA +ALEJANDRA +ALEJANDRINA +ALENA +ALENE +ALESHA +ALESHIA +ALESIA +ALESSANDRA +ALETA +ALETHA +ALETHEA +ALETHIA +ALEX +ALEXA +ALEXANDER +ALEXANDRA +ALEXANDRIA +ALEXIA +ALEXIS +ALFREDA +ALFREDIA +ALI +ALIA +ALICA +ALICE +ALICIA +ALIDA +ALINA +ALINE +ALISA +ALISE +ALISHA +ALISHIA +ALISIA +ALISON +ALISSA +ALITA +ALIX +ALIZA +ALLA +ALLEEN +ALLEGRA +ALLEN +ALLENA +ALLENE +ALLIE +ALLINE +ALLISON +ALLYSON +ALMA +ALMEDA +ALMETA +ALPHA +ALTA +ALTAGRACIA +ALTHA +ALTHEA +ALVA +ALVERA +ALVERTA +ALVINA +ALYCE +ALYCIA +ALYSA +ALYSE +ALYSHA +ALYSIA +ALYSON +ALYSSA +AMADA +AMAL +AMALIA +AMANDA +AMBER +AMBERLY +AMEE +AMELIA +AMERICA +AMI +AMIE +AMIEE +AMINA +AMIRA +AMMIE +AMPARO +AMY +AN +ANA +ANABEL +ANALISA +ANAMARIA +ANASTACIA +ANASTASIA +ANDERA +ANDRA +ANDRE +ANDREA +ANDREE +ANDREW +ANDRIA +ANETTE +ANGEL +ANGELA +ANGELE +ANGELENA +ANGELES +ANGELIA +ANGELIC +ANGELICA +ANGELIKA +ANGELINA +ANGELINE +ANGELIQUE +ANGELITA +ANGELLA +ANGELO +ANGELYN +ANGIE +ANGLA +ANGLE +ANGLEA +ANH +ANIKA +ANISA +ANISHA +ANISSA +ANITA +ANITRA +ANJA +ANJANETTE +ANJELICA +ANN +ANNA +ANNABEL +ANNABELL +ANNABELLE +ANNALEE +ANNALISA +ANNAMAE +ANNAMARIA +ANNAMARIE +ANNE +ANNELIESE +ANNEMARIE +ANNETT +ANNETTA +ANNETTE +ANNICE +ANNIE +ANNIKA +ANNIS +ANNITA +ANNMARIE +ANTHONY +ANTIONETTE +ANTOINETTE +ANTONETTA +ANTONETTE +ANTONIA +ANTONIETTA +ANTONINA +ANTONIO +ANYA +APOLONIA +APRIL +APRYL +ARA +ARACELI +ARACELIS +ARACELY +ARCELIA +ARDATH +ARDELL +ARDELLA +ARDELLE +ARDIS +ARDITH +ARETHA +ARGELIA +ARGENTINA +ARIANA +ARIANE +ARIANNA +ARIANNE +ARICA +ARIE +ARIEL +ARIELLE +ARLA +ARLEAN +ARLEEN +ARLENA +ARLENE +ARLETHA +ARLETTA +ARLETTE +ARLINDA +ARLINE +ARLYNE +ARMANDA +ARMANDINA +ARMIDA +ARMINDA +ARNETTA +ARNETTE +ARNITA +ARTHUR +ARTIE +ARVILLA +ASHA +ASHANTI +ASHELY +ASHLEA +ASHLEE +ASHLEIGH +ASHLEY +ASHLI +ASHLIE +ASHLY +ASHLYN +ASHTON +ASIA +ASLEY +ASSUNTA +ASTRID +ASUNCION +ATHENA +AUBREY +AUDIE +AUDRA +AUDREA +AUDREY +AUDRY +AUGUSTA +AUGUSTINA +AUGUSTINE +AUNDREA +AURA +AUREA +AURELIA +AURORA +AURORE +AUTUMN +AVA +AVELINA +AVERY +AVIS +AWILDA +AYAKO +AYANA +AYANNA +AYESHA +AZALEE +AZUCENA +AZZIE +BABARA +BABETTE +BAILEY +BAMBI +BAO +BARB +BARBAR +BARBARA +BARBERA +BARBIE +BARBRA +BARRIE +BASILIA +BEA +BEATA +BEATRICE +BEATRIS +BEATRIZ +BEAULAH +BEBE +BECKI +BECKIE +BECKY +BEE +BELEN +BELIA +BELINDA +BELKIS +BELL +BELLA +BELLE +BELVA +BENITA +BENNIE +BERENICE +BERNA +BERNADETTE +BERNADINE +BERNARDA +BERNARDINA +BERNARDINE +BERNEICE +BERNETTA +BERNICE +BERNIE +BERNIECE +BERNITA +BERRY +BERTA +BERTHA +BERTIE +BERYL +BESS +BESSIE +BETH +BETHANIE +BETHANN +BETHANY +BETHEL +BETSEY +BETSY +BETTE +BETTIE +BETTINA +BETTY +BETTYANN +BETTYE +BEULAH +BEV +BEVERLEE +BEVERLEY +BEVERLY +BIANCA +BIBI +BILLI +BILLIE +BILLY +BILLYE +BIRDIE +BIRGIT +BLAIR +BLANCA +BLANCH +BLANCHE +BLONDELL +BLOSSOM +BLYTHE +BOBBI +BOBBIE +BOBBY +BOBBYE +BOBETTE +BOK +BONG +BONITA +BONNIE +BONNY +BRANDA +BRANDE +BRANDEE +BRANDI +BRANDIE +BRANDON +BRANDY +BREANA +BREANN +BREANNA +BREANNE +BREE +BRENDA +BRENNA +BRETT +BRIAN +BRIANA +BRIANNA +BRIANNE +BRIDGET +BRIDGETT +BRIDGETTE +BRIGETTE +BRIGID +BRIGIDA +BRIGITTE +BRINDA +BRITANY +BRITNEY +BRITNI +BRITT +BRITTA +BRITTANEY +BRITTANI +BRITTANIE +BRITTANY +BRITTNEY +BRITTNI +BRITTNY +BRONWYN +BROOK +BROOKE +BRUNA +BRUNILDA +BRYNN +BUFFY +BULAH +BUNNY +CAITLIN +CAITLYN +CALANDRA +CALLIE +CAMELIA +CAMELLIA +CAMERON +CAMI +CAMIE +CAMILLA +CAMILLE +CAMMIE +CAMMY +CANDACE +CANDANCE +CANDELARIA +CANDI +CANDICE +CANDIDA +CANDIE +CANDIS +CANDY +CANDYCE +CAPRICE +CARA +CAREN +CAREY +CARI +CARIDAD +CARIE +CARIN +CARINA +CARISA +CARISSA +CARITA +CARL +CARLA +CARLEE +CARLEEN +CARLENE +CARLETTA +CARLEY +CARLI +CARLIE +CARLINE +CARLOS +CARLOTA +CARLOTTA +CARLY +CARLYN +CARMA +CARMAN +CARMEL +CARMELA +CARMELIA +CARMELINA +CARMELITA +CARMELLA +CARMEN +CARMINA +CARMON +CAROL +CAROLA +CAROLANN +CAROLE +CAROLEE +CAROLIN +CAROLINA +CAROLINE +CAROLYN +CAROLYNE +CAROLYNN +CARON +CAROYLN +CARRI +CARRIE +CARROL +CARROLL +CARRY +CARY +CARYL +CARYLON +CARYN +CASANDRA +CASEY +CASIE +CASIMIRA +CASSANDRA +CASSAUNDRA +CASSI +CASSIDY +CASSIE +CASSONDRA +CASSY +CATALINA +CATARINA +CATERINA +CATHARINE +CATHERIN +CATHERINE +CATHERN +CATHERYN +CATHEY +CATHI +CATHIE +CATHLEEN +CATHRINE +CATHRYN +CATHY +CATINA +CATRINA +CECELIA +CECIL +CECILA +CECILE +CECILIA +CECILLE +CECILY +CELENA +CELESTA +CELESTE +CELESTINA +CELESTINE +CELIA +CELINA +CELINDA +CELINE +CELSA +CEOLA +CHAE +CHAN +CHANA +CHANDA +CHANDRA +CHANEL +CHANELL +CHANELLE +CHANG +CHANTAL +CHANTAY +CHANTE +CHANTEL +CHANTELL +CHANTELLE +CHARA +CHARIS +CHARISE +CHARISSA +CHARISSE +CHARITA +CHARITY +CHARLA +CHARLEEN +CHARLENA +CHARLENE +CHARLES +CHARLESETTA +CHARLETTE +CHARLIE +CHARLINE +CHARLOTT +CHARLOTTE +CHARLSIE +CHARLYN +CHARMAIN +CHARMAINE +CHAROLETTE +CHASITY +CHASTITY +CHAU +CHAYA +CHELSEA +CHELSEY +CHELSIE +CHER +CHERE +CHEREE +CHERELLE +CHERI +CHERIE +CHERILYN +CHERISE +CHERISH +CHERLY +CHERLYN +CHERRI +CHERRIE +CHERRY +CHERRYL +CHERY +CHERYL +CHERYLE +CHERYLL +CHEYENNE +CHI +CHIA +CHIEKO +CHIN +CHINA +CHING +CHIQUITA +CHLOE +CHONG +CHRIS +CHRISSY +CHRISTA +CHRISTAL +CHRISTEEN +CHRISTEL +CHRISTEN +CHRISTENA +CHRISTENE +CHRISTI +CHRISTIA +CHRISTIAN +CHRISTIANA +CHRISTIANE +CHRISTIE +CHRISTIN +CHRISTINA +CHRISTINE +CHRISTINIA +CHRISTOPHER +CHRISTY +CHRYSTAL +CHU +CHUN +CHUNG +CIARA +CICELY +CIERA +CIERRA +CINDA +CINDERELLA +CINDI +CINDY +CINTHIA +CIRA +CLAIR +CLAIRE +CLARA +CLARE +CLARENCE +CLARETHA +CLARETTA +CLARIBEL +CLARICE +CLARINDA +CLARINE +CLARIS +CLARISA +CLARISSA +CLARITA +CLASSIE +CLAUDE +CLAUDETTE +CLAUDIA +CLAUDIE +CLAUDINE +CLELIA +CLEMENCIA +CLEMENTINA +CLEMENTINE +CLEMMIE +CLEO +CLEOPATRA +CLEORA +CLEOTILDE +CLETA +CLORA +CLORINDA +CLOTILDE +CLYDE +CODY +COLBY +COLEEN +COLENE +COLETTA +COLETTE +COLLEEN +COLLEN +COLLETTE +CONCEPCION +CONCEPTION +CONCETTA +CONCHA +CONCHITA +CONNIE +CONSTANCE +CONSUELA +CONSUELO +CONTESSA +CORA +CORAL +CORALEE +CORALIE +CORAZON +CORDELIA +CORDIA +CORDIE +COREEN +CORENE +CORETTA +COREY +CORI +CORIE +CORINA +CORINE +CORINNA +CORINNE +CORLISS +CORNELIA +CORRIE +CORRINA +CORRINE +CORRINNE +CORTNEY +CORY +COURTNEY +CREOLA +CRIS +CRISELDA +CRISSY +CRISTA +CRISTAL +CRISTEN +CRISTI +CRISTIE +CRISTIN +CRISTINA +CRISTINE +CRISTY +CRUZ +CRYSTA +CRYSTAL +CRYSTLE +CUC +CURTIS +CYNDI +CYNDY +CYNTHIA +CYTHIA +DACIA +DAGMAR +DAHLIA +DAINA +DAISEY +DAISY +DAKOTA +DALE +DALENE +DALIA +DALILA +DALLAS +DAMARIS +DAN +DANA +DANAE +DANELLE +DANETTE +DANI +DANIA +DANICA +DANIEL +DANIELA +DANIELE +DANIELL +DANIELLA +DANIELLE +DANIKA +DANILLE +DANITA +DANN +DANNA +DANNETTE +DANNIE +DANNIELLE +DANUTA +DANYEL +DANYELL +DANYELLE +DAPHINE +DAPHNE +DARA +DARBY +DARCEL +DARCEY +DARCI +DARCIE +DARCY +DARIA +DARLA +DARLEEN +DARLENA +DARLENE +DARLINE +DARNELL +DARYL +DAVID +DAVIDA +DAVINA +DAWN +DAWNA +DAWNE +DAYLE +DAYNA +DAYSI +DEADRA +DEAN +DEANA +DEANDRA +DEANDREA +DEANE +DEANN +DEANNA +DEANNE +DEB +DEBBI +DEBBIE +DEBBRA +DEBBY +DEBERA +DEBI +DEBORA +DEBORAH +DEBRA +DEBRAH +DEBROAH +DEDE +DEDRA +DEE +DEEANN +DEEANNA +DEEDEE +DEEDRA +DEENA +DEIDRA +DEIDRE +DEIRDRE +DEJA +DELAINE +DELANA +DELCIE +DELENA +DELFINA +DELIA +DELICIA +DELILA +DELILAH +DELINDA +DELISA +DELL +DELLA +DELMA +DELMY +DELOIS +DELOISE +DELORA +DELORAS +DELORES +DELORIS +DELORSE +DELPHA +DELPHIA +DELPHINE +DELSIE +DELTA +DEMETRA +DEMETRIA +DEMETRICE +DEMETRIUS +DENA +DENAE +DENEEN +DENESE +DENICE +DENISE +DENISHA +DENISSE +DENITA +DENNA +DENNIS +DENNISE +DEON +DEONNA +DESIRAE +DESIRE +DESIREE +DESPINA +DESSIE +DESTINY +DETRA +DEVIN +DEVON +DEVONA +DEVORA +DEVORAH +DIA +DIAMOND +DIAN +DIANA +DIANE +DIANN +DIANNA +DIANNE +DIEDRA +DIEDRE +DIERDRE +DIGNA +DIMPLE +DINA +DINAH +DINORAH +DION +DIONE +DIONNA +DIONNE +DIXIE +DODIE +DOLLIE +DOLLY +DOLORES +DOLORIS +DOMENICA +DOMINGA +DOMINICA +DOMINIQUE +DOMINQUE +DOMITILA +DOMONIQUE +DONA +DONALD +DONELLA +DONETTA +DONETTE +DONG +DONITA +DONNA +DONNETTA +DONNETTE +DONNIE +DONYA +DORA +DORATHY +DORCAS +DOREEN +DORENE +DORETHA +DORETTA +DORI +DORIA +DORIAN +DORIE +DORINDA +DORINE +DORIS +DORLA +DOROTHA +DOROTHEA +DOROTHY +DORRIS +DORTHA +DORTHEA +DORTHEY +DORTHY +DOT +DOTTIE +DOTTY +DOVIE +DREAMA +DREMA +DREW +DRUCILLA +DRUSILLA +DULCE +DULCIE +DUNG +DUSTI +DUSTY +DWANA +DYAN +EARLEAN +EARLEEN +EARLENE +EARLIE +EARLINE +EARNESTINE +EARTHA +EASTER +EBONI +EBONIE +EBONY +ECHO +EDA +EDDA +EDDIE +EDELMIRA +EDEN +EDIE +EDITH +EDNA +EDRIS +EDWARD +EDWINA +EDYTH +EDYTHE +EFFIE +EHTEL +EILEEN +EILENE +ELA +ELADIA +ELAINA +ELAINE +ELANA +ELANE +ELANOR +ELAYNE +ELBA +ELDA +ELDORA +ELEANOR +ELEANORA +ELEANORE +ELEASE +ELENA +ELENE +ELENI +ELENOR +ELENORA +ELENORE +ELEONOR +ELEONORA +ELEONORE +ELFREDA +ELFRIEDA +ELFRIEDE +ELIA +ELIANA +ELICIA +ELIDA +ELIN +ELINA +ELINOR +ELINORE +ELISA +ELISABETH +ELISE +ELISHA +ELISSA +ELIZ +ELIZA +ELIZABET +ELIZABETH +ELIZBETH +ELIZEBETH +ELKE +ELLA +ELLAMAE +ELLEN +ELLIE +ELLY +ELLYN +ELMA +ELMER +ELMIRA +ELNA +ELNORA +ELODIA +ELOIS +ELOISA +ELOISE +ELOUISE +ELSA +ELSE +ELSIE +ELSY +ELVA +ELVERA +ELVIA +ELVIE +ELVINA +ELVIRA +ELWANDA +ELYSE +ELZA +EMA +EMELDA +EMELIA +EMELINA +EMELINE +EMELY +EMERALD +EMERITA +EMIKO +EMILEE +EMILIA +EMILIE +EMILY +EMMA +EMMALINE +EMMIE +EMMY +EMOGENE +ENA +ENEDINA +ENEIDA +ENID +ENOLA +ENRIQUETA +EPIFANIA +ERA +ERIC +ERICA +ERICKA +ERIKA +ERIN +ERINN +ERLENE +ERLINDA +ERLINE +ERMA +ERMELINDA +ERMINIA +ERNA +ERNESTINA +ERNESTINE +ERYN +ESMERALDA +ESPERANZA +ESSIE +ESTA +ESTEFANA +ESTELA +ESTELL +ESTELLA +ESTELLE +ESTER +ESTHER +ESTRELLA +ETHA +ETHEL +ETHELENE +ETHELYN +ETHYL +ETTA +EUFEMIA +EUGENA +EUGENE +EUGENIA +EUGENIE +EULA +EULAH +EULALIA +EUN +EUNA +EUNICE +EURA +EUSEBIA +EUSTOLIA +EVA +EVALYN +EVAN +EVANGELINA +EVANGELINE +EVE +EVELIA +EVELIN +EVELINA +EVELINE +EVELYN +EVELYNE +EVETTE +EVIA +EVIE +EVITA +EVON +EVONNE +EWA +EXIE +FABIOLA +FAE +FAIRY +FAITH +FALLON +FANNIE +FANNY +FARAH +FARRAH +FATIMA +FATIMAH +FAUSTINA +FAWN +FAY +FAYE +FE +FELECIA +FELICA +FELICE +FELICIA +FELICIDAD +FELICITA +FELICITAS +FELIPA +FELISA +FELISHA +FERN +FERNANDA +FERNANDE +FERNE +FIDELA +FIDELIA +FILOMENA +FIONA +FLAVIA +FLETA +FLO +FLOR +FLORA +FLORANCE +FLORENCE +FLORENCIA +FLORENE +FLORENTINA +FLORETTA +FLORIA +FLORIDA +FLORINDA +FLORINE +FLORRIE +FLOSSIE +FLOY +FONDA +FRAN +FRANCE +FRANCENE +FRANCES +FRANCESCA +FRANCHESCA +FRANCIE +FRANCINA +FRANCINE +FRANCIS +FRANCISCA +FRANCISCO +FRANCOISE +FRANK +FRANKIE +FRED +FREDA +FREDDA +FREDDIE +FREDERICA +FREDERICKA +FREDIA +FREDRICKA +FREEDA +FREIDA +FRIDA +FRIEDA +FUMIKO +GABRIEL +GABRIELA +GABRIELE +GABRIELLA +GABRIELLE +GAIL +GALA +GALE +GALINA +GARNET +GARNETT +GARY +GAY +GAYE +GAYLA +GAYLE +GAYLENE +GAYNELL +GAYNELLE +GEARLDINE +GEMMA +GENA +GENE +GENESIS +GENEVA +GENEVIE +GENEVIEVE +GENEVIVE +GENIA +GENIE +GENNA +GENNIE +GENNY +GENOVEVA +GEORGANN +GEORGE +GEORGEANN +GEORGEANNA +GEORGENE +GEORGETTA +GEORGETTE +GEORGIA +GEORGIANA +GEORGIANN +GEORGIANNA +GEORGIANNE +GEORGIE +GEORGINA +GEORGINE +GERALD +GERALDINE +GERALYN +GERDA +GERI +GERMAINE +GERRI +GERRY +GERTHA +GERTIE +GERTRUD +GERTRUDE +GERTUDE +GIA +GIANNA +GIDGET +GIGI +GILDA +GILLIAN +GINA +GINETTE +GINGER +GINNY +GIOVANNA +GISELA +GISELE +GISELLE +GITA +GIUSEPPINA +GLADIS +GLADY +GLADYS +GLAYDS +GLENDA +GLENDORA +GLENN +GLENNA +GLENNIE +GLENNIS +GLINDA +GLORIA +GLORY +GLYNDA +GLYNIS +GOLDA +GOLDEN +GOLDIE +GRACE +GRACIA +GRACIE +GRACIELA +GRAYCE +GRAZYNA +GREGORIA +GREGORY +GRETA +GRETCHEN +GRETTA +GRICELDA +GRISEL +GRISELDA +GUADALUPE +GUDRUN +GUILLERMINA +GUSSIE +GWEN +GWENDA +GWENDOLYN +GWENN +GWYN +GWYNETH +HA +HAE +HAILEY +HALEY +HALINA +HALLEY +HALLIE +HAN +HANA +HANG +HANH +HANNA +HANNAH +HANNELORE +HARMONY +HAROLD +HARRIET +HARRIETT +HARRIETTE +HASSIE +HATTIE +HAYDEE +HAYLEY +HAZEL +HEATHER +HEDWIG +HEDY +HEE +HEIDE +HEIDI +HEIKE +HELAINE +HELEN +HELENA +HELENE +HELGA +HELLEN +HENRIETTA +HENRIETTE +HENRY +HERLINDA +HERMA +HERMELINDA +HERMILA +HERMINA +HERMINE +HERMINIA +HERTA +HERTHA +HESTER +HETTIE +HIEDI +HIEN +HILARIA +HILARY +HILDA +HILDE +HILDEGARD +HILDEGARDE +HILDRED +HILLARY +HILMA +HIROKO +HISAKO +HOA +HOLLEY +HOLLI +HOLLIE +HOLLIS +HOLLY +HONEY +HONG +HOPE +HORTENCIA +HORTENSE +HORTENSIA +HSIU +HUE +HUI +HULDA +HUONG +HYACINTH +HYE +HYO +HYON +HYUN +IDA +IDALIA +IDELL +IDELLA +IESHA +IGNACIA +ILA +ILANA +ILDA +ILEANA +ILEEN +ILENE +ILIANA +ILLA +ILONA +ILSE +ILUMINADA +IMA +IMELDA +IMOGENE +IN +INA +INDIA +INDIRA +INELL +INES +INEZ +INGA +INGE +INGEBORG +INGER +INGRID +INOCENCIA +IOLA +IONA +IONE +IRA +IRAIDA +IRENA +IRENE +IRINA +IRIS +IRISH +IRMA +IRMGARD +ISA +ISABEL +ISABELL +ISABELLA +ISABELLE +ISADORA +ISAURA +ISELA +ISIDRA +ISIS +ISOBEL +IVA +IVANA +IVELISSE +IVETTE +IVEY +IVONNE +IVORY +IVY +IZETTA +IZOLA +JA +JACALYN +JACELYN +JACINDA +JACINTA +JACK +JACKELINE +JACKELYN +JACKI +JACKIE +JACKLYN +JACKQUELINE +JACLYN +JACQUALINE +JACQUE +JACQUELIN +JACQUELINE +JACQUELYN +JACQUELYNE +JACQUELYNN +JACQUETTA +JACQUI +JACQUIE +JACQUILINE +JACQULINE +JACQULYN +JADA +JADE +JADWIGA +JAE +JAIME +JAIMEE +JAIMIE +JALEESA +JALISA +JAME +JAMEE +JAMES +JAMEY +JAMI +JAMIE +JAMIKA +JAMILA +JAMMIE +JAN +JANA +JANAE +JANAY +JANE +JANEAN +JANEE +JANEEN +JANEL +JANELL +JANELLA +JANELLE +JANENE +JANESSA +JANET +JANETH +JANETT +JANETTA +JANETTE +JANEY +JANI +JANICE +JANIE +JANIECE +JANINA +JANINE +JANIS +JANISE +JANITA +JANN +JANNA +JANNET +JANNETTE +JANNIE +JANUARY +JANYCE +JAQUELINE +JASMIN +JASMINE +JASON +JAUNITA +JAY +JAYE +JAYME +JAYMIE +JAYNA +JAYNE +JAZMIN +JAZMINE +JEAN +JEANA +JEANE +JEANELLE +JEANENE +JEANETT +JEANETTA +JEANETTE +JEANICE +JEANIE +JEANINE +JEANMARIE +JEANNA +JEANNE +JEANNETTE +JEANNIE +JEANNINE +JEFFIE +JEFFREY +JEN +JENA +JENAE +JENE +JENEE +JENELL +JENELLE +JENETTE +JENI +JENICE +JENIFER +JENIFFER +JENINE +JENISE +JENNA +JENNEFER +JENNELL +JENNETTE +JENNI +JENNIE +JENNIFER +JENNIFFER +JENNINE +JENNY +JERALDINE +JEREMY +JERI +JERICA +JERILYN +JERLENE +JERRI +JERRICA +JERRIE +JERRY +JESENIA +JESICA +JESSE +JESSENIA +JESSI +JESSIA +JESSICA +JESSIE +JESSIKA +JESTINE +JESUS +JESUSA +JESUSITA +JETTA +JETTIE +JEWEL +JEWELL +JI +JILL +JILLIAN +JIMMIE +JIMMY +JIN +JINA +JO +JOAN +JOANA +JOANE +JOANIE +JOANN +JOANNA +JOANNE +JOANNIE +JOAQUINA +JOCELYN +JODEE +JODI +JODIE +JODY +JOE +JOEANN +JOEL +JOELLA +JOELLE +JOELLEN +JOETTA +JOETTE +JOEY +JOHANA +JOHANNA +JOHANNE +JOHN +JOHNA +JOHNETTA +JOHNETTE +JOHNIE +JOHNNA +JOHNNIE +JOHNNY +JOHNSIE +JOI +JOLANDA +JOLEEN +JOLENE +JOLIE +JOLINE +JOLYN +JOLYNN +JON +JONA +JONE +JONELL +JONELLE +JONI +JONIE +JONNA +JONNIE +JORDAN +JOSE +JOSEFA +JOSEFINA +JOSEFINE +JOSELYN +JOSEPH +JOSEPHINA +JOSEPHINE +JOSETTE +JOSHUA +JOSIE +JOSLYN +JOSPHINE +JOVAN +JOVITA +JOY +JOYA +JOYCE +JOYCELYN +JOYE +JUAN +JUANA +JUANITA +JUDE +JUDI +JUDIE +JUDITH +JUDY +JULE +JULEE +JULENE +JULI +JULIA +JULIAN +JULIANA +JULIANE +JULIANN +JULIANNA +JULIANNE +JULIE +JULIEANN +JULIENNE +JULIET +JULIETA +JULIETTA +JULIETTE +JULISSA +JUNE +JUNG +JUNIE +JUNITA +JUNKO +JUSTA +JUSTIN +JUSTINA +JUSTINE +JUTTA +KA +KACEY +KACI +KACIE +KACY +KAI +KAILA +KAITLIN +KAITLYN +KALA +KALEIGH +KALEY +KALI +KALLIE +KALYN +KAM +KAMALA +KAMI +KAMILAH +KANDACE +KANDI +KANDICE +KANDIS +KANDRA +KANDY +KANISHA +KARA +KARAN +KAREEN +KAREN +KARENA +KAREY +KARI +KARIE +KARIMA +KARIN +KARINA +KARINE +KARISA +KARISSA +KARL +KARLA +KARLEEN +KARLENE +KARLY +KARLYN +KARMA +KARMEN +KAROL +KAROLINE +KAROLYN +KARON +KARREN +KARRI +KARRIE +KARY +KARYL +KARYN +KASANDRA +KASEY +KASHA +KASI +KASIE +KASSANDRA +KASSIE +KATE +KATELIN +KATELYN +KATELYNN +KATERINE +KATHALEEN +KATHARINA +KATHARINE +KATHARYN +KATHE +KATHELEEN +KATHERIN +KATHERINE +KATHERN +KATHERYN +KATHEY +KATHI +KATHIE +KATHLEEN +KATHLENE +KATHLINE +KATHLYN +KATHRIN +KATHRINE +KATHRYN +KATHRYNE +KATHY +KATHYRN +KATI +KATIA +KATIE +KATINA +KATLYN +KATRICE +KATRINA +KATTIE +KATY +KAY +KAYCE +KAYCEE +KAYE +KAYLA +KAYLEE +KAYLEEN +KAYLEIGH +KAYLENE +KAZUKO +KECIA +KEELEY +KEELY +KEENA +KEESHA +KEIKO +KEILA +KEISHA +KEITH +KEITHA +KELI +KELLE +KELLEE +KELLEY +KELLI +KELLIE +KELLY +KELLYE +KELSEY +KELSI +KELSIE +KEMBERLY +KENA +KENDA +KENDAL +KENDALL +KENDRA +KENIA +KENISHA +KENNA +KENNETH +KENYA +KENYATTA +KENYETTA +KERA +KEREN +KERI +KERRI +KERRIE +KERRY +KERSTIN +KESHA +KESHIA +KETURAH +KEVIN +KHADIJAH +KHALILAH +KIA +KIANA +KIARA +KIERA +KIERSTEN +KIESHA +KILEY +KIM +KIMBER +KIMBERELY +KIMBERLEE +KIMBERLEY +KIMBERLI +KIMBERLIE +KIMBERLY +KIMBERY +KIMI +KIMIKO +KINA +KINDRA +KIRA +KIRBY +KIRSTEN +KIRSTIE +KIRSTIN +KISHA +KIT +KITTIE +KITTY +KIYOKO +KIZZIE +KIZZY +KLARA +KORI +KORTNEY +KOURTNEY +KRIS +KRISSY +KRISTA +KRISTAL +KRISTAN +KRISTEEN +KRISTEL +KRISTEN +KRISTI +KRISTIAN +KRISTIE +KRISTIN +KRISTINA +KRISTINE +KRISTY +KRISTYN +KRYSTA +KRYSTAL +KRYSTEN +KRYSTIN +KRYSTINA +KRYSTLE +KRYSTYNA +KUM +KYLA +KYLE +KYLEE +KYLIE +KYM +KYMBERLY +KYOKO +KYONG +KYRA +KYUNG +LACEY +LACHELLE +LACI +LACIE +LACY +LADAWN +LADONNA +LADY +LAEL +LAHOMA +LAI +LAILA +LAINE +LAJUANA +LAKEESHA +LAKEISHA +LAKENDRA +LAKENYA +LAKESHA +LAKESHIA +LAKIA +LAKIESHA +LAKISHA +LAKITA +LALA +LAN +LANA +LANE +LANELL +LANELLE +LANETTE +LANG +LANI +LANIE +LANITA +LANNIE +LANORA +LAQUANDA +LAQUITA +LARA +LARAE +LARAINE +LARHONDA +LARISA +LARISSA +LARITA +LARONDA +LARRY +LARUE +LASANDRA +LASHANDA +LASHAUN +LASHAUNDA +LASHAWN +LASHAWNA +LASHAWNDA +LASHON +LASHONDA +LASHUNDA +LASONYA +LATANYA +LATARSHA +LATASHA +LATASHIA +LATESHA +LATIA +LATICIA +LATINA +LATISHA +LATONIA +LATONYA +LATORIA +LATOSHA +LATOYA +LATOYIA +LATRICE +LATRICIA +LATRINA +LATRISHA +LAUNA +LAURA +LAURALEE +LAURAN +LAURE +LAUREEN +LAUREL +LAUREN +LAURENCE +LAURENE +LAURETTA +LAURETTE +LAURI +LAURICE +LAURIE +LAURINDA +LAURINE +LAURYN +LAVADA +LAVELLE +LAVENIA +LAVERA +LAVERN +LAVERNA +LAVERNE +LAVETA +LAVETTE +LAVINA +LAVINIA +LAVON +LAVONA +LAVONDA +LAVONIA +LAVONNA +LAVONNE +LAWANA +LAWANDA +LAWANNA +LAWRENCE +LAYLA +LAYNE +LE +LEA +LEAH +LEAN +LEANA +LEANDRA +LEANN +LEANNA +LEANNE +LEANORA +LEATHA +LEATRICE +LECIA +LEDA +LEE +LEEANN +LEEANNA +LEEANNE +LEENA +LEESA +LEIA +LEIDA +LEIGH +LEIGHA +LEIGHANN +LEILA +LEILANI +LEISA +LEISHA +LEKISHA +LELA +LELAH +LELIA +LENA +LENNA +LENNIE +LENORA +LENORE +LEO +LEOLA +LEOMA +LEON +LEONA +LEONARDA +LEONE +LEONIA +LEONIE +LEONILA +LEONOR +LEONORA +LEONORE +LEONTINE +LEORA +LEOTA +LERA +LESA +LESIA +LESLEE +LESLEY +LESLI +LESLIE +LESSIE +LETA +LETHA +LETICIA +LETISHA +LETITIA +LETTIE +LETTY +LEXIE +LEZLIE +LI +LIA +LIANA +LIANE +LIANNE +LIBBIE +LIBBY +LIBERTY +LIBRADA +LIDA +LIDIA +LIEN +LIESELOTTE +LIGIA +LILA +LILI +LILIA +LILIAN +LILIANA +LILLA +LILLI +LILLIA +LILLIAM +LILLIAN +LILLIANA +LILLIE +LILLY +LILY +LIN +LINA +LINDA +LINDSAY +LINDSEY +LINDSY +LINDY +LINETTE +LING +LINH +LINN +LINNEA +LINNIE +LINSEY +LISA +LISABETH +LISANDRA +LISBETH +LISE +LISETTE +LISHA +LISSA +LISSETTE +LITA +LIVIA +LIZ +LIZA +LIZABETH +LIZBETH +LIZETH +LIZETTE +LIZZETTE +LIZZIE +LOAN +LOGAN +LOIDA +LOIS +LOISE +LOLA +LOLITA +LOMA +LONA +LONDA +LONI +LONNA +LONNIE +LORA +LORAINE +LORALEE +LORE +LOREE +LOREEN +LORELEI +LOREN +LORENA +LORENE +LORENZA +LORETA +LORETTA +LORETTE +LORI +LORIA +LORIANN +LORIE +LORINA +LORINDA +LORINE +LORIS +LORITA +LORNA +LORRAINE +LORRETTA +LORRI +LORRIANE +LORRIE +LORY +LOTTIE +LOU +LOUANN +LOUANNE +LOUELLA +LOUETTA +LOUIE +LOUIS +LOUISA +LOUISE +LOURDES +LOUVENIA +LOVELLA +LOVIE +LOYCE +LU +LUANA +LUANN +LUANNA +LUANNE +LUBA +LUCI +LUCIA +LUCIANA +LUCIE +LUCIENNE +LUCILA +LUCILE +LUCILLA +LUCILLE +LUCINA +LUCINDA +LUCRECIA +LUCRETIA +LUCY +LUDIE +LUDIVINA +LUE +LUELLA +LUETTA +LUIS +LUISA +LUISE +LULA +LULU +LUNA +LUPE +LUPITA +LURA +LURLENE +LURLINE +LUVENIA +LUZ +LYDA +LYDIA +LYLA +LYN +LYNDA +LYNDIA +LYNDSAY +LYNDSEY +LYNELL +LYNELLE +LYNETTA +LYNETTE +LYNN +LYNNA +LYNNE +LYNNETTE +LYNSEY +MA +MABEL +MABELLE +MABLE +MACHELLE +MACIE +MACKENZIE +MACY +MADALINE +MADALYN +MADELAINE +MADELEINE +MADELENE +MADELINE +MADELYN +MADGE +MADIE +MADISON +MADLYN +MADONNA +MAE +MAEGAN +MAFALDA +MAGALI +MAGALY +MAGAN +MAGARET +MAGDA +MAGDALEN +MAGDALENA +MAGDALENE +MAGEN +MAGGIE +MAGNOLIA +MAI +MAIA +MAIDA +MAILE +MAIRA +MAIRE +MAISHA +MAISIE +MAJORIE +MALIA +MALIKA +MALINDA +MALISA +MALISSA +MALKA +MALLIE +MALLORY +MALORIE +MALVINA +MAMIE +MAMMIE +MAN +MANA +MANDA +MANDI +MANDIE +MANDY +MANIE +MANUELA +MANY +MAO +MAPLE +MARA +MARAGARET +MARAGRET +MARANDA +MARCELA +MARCELENE +MARCELINA +MARCELINE +MARCELLA +MARCELLE +MARCENE +MARCHELLE +MARCI +MARCIA +MARCIE +MARCY +MARDELL +MAREN +MARG +MARGARET +MARGARETA +MARGARETE +MARGARETT +MARGARETTA +MARGARETTE +MARGARITA +MARGARITE +MARGART +MARGE +MARGENE +MARGERET +MARGERT +MARGERY +MARGET +MARGHERITA +MARGIE +MARGIT +MARGO +MARGORIE +MARGOT +MARGRET +MARGRETT +MARGUERITA +MARGUERITE +MARGURITE +MARHTA +MARI +MARIA +MARIAH +MARIAM +MARIAN +MARIANA +MARIANELA +MARIANN +MARIANNA +MARIANNE +MARIBEL +MARIBETH +MARICA +MARICELA +MARICRUZ +MARIE +MARIEL +MARIELA +MARIELLA +MARIELLE +MARIETTA +MARIETTE +MARIKO +MARILEE +MARILOU +MARILU +MARILYN +MARILYNN +MARIN +MARINA +MARINDA +MARINE +MARIO +MARION +MARIS +MARISA +MARISELA +MARISHA +MARISOL +MARISSA +MARITA +MARITZA +MARIVEL +MARJORIE +MARJORY +MARK +MARKETTA +MARKITA +MARLA +MARLANA +MARLEEN +MARLEN +MARLENA +MARLENE +MARLIN +MARLINE +MARLO +MARLYN +MARLYS +MARNA +MARNI +MARNIE +MARQUERITE +MARQUETTA +MARQUITA +MARQUITTA +MARRY +MARSHA +MARTA +MARTH +MARTHA +MARTI +MARTIN +MARTINA +MARTINE +MARTY +MARVA +MARVEL +MARVELLA +MARVIS +MARX +MARY +MARYA +MARYALICE +MARYAM +MARYANN +MARYANNA +MARYANNE +MARYBELLE +MARYBETH +MARYELLEN +MARYJANE +MARYJO +MARYLAND +MARYLEE +MARYLIN +MARYLOU +MARYLOUISE +MARYLYN +MARYLYNN +MARYROSE +MASAKO +MATHA +MATHILDA +MATHILDE +MATILDA +MATILDE +MATTHEW +MATTIE +MAUD +MAUDE +MAUDIE +MAURA +MAUREEN +MAURICE +MAURINE +MAVIS +MAXIE +MAXIMA +MAXIMINA +MAXINE +MAY +MAYA +MAYBELL +MAYBELLE +MAYE +MAYME +MAYOLA +MAYRA +MAZIE +MCKENZIE +MEAGAN +MEAGHAN +MECHELLE +MEDA +MEE +MEG +MEGAN +MEGGAN +MEGHAN +MEGHANN +MEI +MELAINE +MELANI +MELANIA +MELANIE +MELANY +MELBA +MELDA +MELIA +MELIDA +MELINA +MELINDA +MELISA +MELISSA +MELISSIA +MELITA +MELLIE +MELLISA +MELLISSA +MELODEE +MELODI +MELODIE +MELODY +MELONIE +MELONY +MELVA +MELVIN +MELVINA +MELYNDA +MENDY +MERCEDES +MERCEDEZ +MERCY +MEREDITH +MERI +MERIDETH +MERIDITH +MERILYN +MERLE +MERLENE +MERLYN +MERNA +MERRI +MERRIE +MERRILEE +MERRILL +MERRY +MERYL +META +MI +MIA +MICA +MICAELA +MICAH +MICHAEL +MICHAELA +MICHAELE +MICHAL +MICHEAL +MICHEL +MICHELE +MICHELINA +MICHELINE +MICHELL +MICHELLE +MICHIKO +MICKEY +MICKI +MICKIE +MIESHA +MIGDALIA +MIGNON +MIGUELINA +MIKA +MIKAELA +MIKE +MIKI +MIKKI +MILA +MILAGRO +MILAGROS +MILDA +MILDRED +MILISSA +MILLICENT +MILLIE +MILLY +MIMI +MIN +MINA +MINDA +MINDI +MINDY +MINERVA +MING +MINH +MINNA +MINNIE +MIRA +MIRANDA +MIREILLE +MIRELLA +MIREYA +MIRIAM +MIRIAN +MIRNA +MIRTA +MIRTHA +MISHA +MISS +MISSY +MISTI +MISTY +MITCHELL +MITSUKO +MITTIE +MITZI +MITZIE +MIYOKO +MODESTA +MOIRA +MOLLIE +MOLLY +MONA +MONET +MONICA +MONIKA +MONIQUE +MONNIE +MONSERRATE +MOON +MORA +MORGAN +MORIAH +MOZELL +MOZELLA +MOZELLE +MUI +MUOI +MURIEL +MY +MYONG +MYRA +MYRIAM +MYRL +MYRLE +MYRNA +MYRTICE +MYRTIE +MYRTIS +MYRTLE +MYUNG +NA +NADA +NADENE +NADIA +NADINE +NAKESHA +NAKIA +NAKISHA +NAKITA +NAM +NAN +NANA +NANCEE +NANCEY +NANCI +NANCIE +NANCY +NANETTE +NANNETTE +NANNIE +NAOMA +NAOMI +NARCISA +NATACHA +NATALIA +NATALIE +NATALYA +NATASHA +NATASHIA +NATHALIE +NATISHA +NATIVIDAD +NATOSHA +NEDA +NEDRA +NELDA +NELIA +NELIDA +NELL +NELLA +NELLE +NELLIE +NELLY +NENA +NENITA +NEOMA +NEOMI +NEREIDA +NERISSA +NERY +NETA +NETTIE +NEVA +NEVADA +NGA +NGAN +NGOC +NGUYET +NIA +NICHELLE +NICHOL +NICHOLE +NICKI +NICKIE +NICKOLE +NICKY +NICOL +NICOLA +NICOLASA +NICOLE +NICOLETTE +NICOLLE +NIDA +NIDIA +NIESHA +NIEVES +NIKI +NIKIA +NIKITA +NIKKI +NIKOLE +NILA +NILDA +NILSA +NINA +NINFA +NISHA +NITA +NOBUKO +NOEL +NOELIA +NOELLA +NOELLE +NOEMI +NOHEMI +NOLA +NOMA +NONA +NORA +NORAH +NOREEN +NORENE +NORIKO +NORINE +NORMA +NORMAN +NOVA +NOVELLA +NU +NUBIA +NUMBERS +NYDIA +NYLA +OBDULIA +OCIE +OCTAVIA +ODA +ODELIA +ODELL +ODESSA +ODETTE +ODILIA +OFELIA +OK +OLA +OLENE +OLETA +OLGA +OLIMPIA +OLINDA +OLIVA +OLIVE +OLIVIA +OLLIE +OLYMPIA +OMA +OMEGA +ONA +ONEIDA +ONIE +ONITA +OPAL +OPHELIA +ORA +ORALEE +ORALIA +ORETHA +ORPHA +OSSIE +OTHA +OTILIA +OUIDA +OZELLA +OZIE +PA +PAGE +PAIGE +PALMA +PALMIRA +PAM +PAMALA +PAMELA +PAMELIA +PAMELLA +PAMULA +PANDORA +PANSY +PAOLA +PARIS +PARTHENIA +PARTICIA +PASTY +PAT +PATIENCE +PATRIA +PATRICA +PATRICE +PATRICIA +PATRICK +PATRINA +PATSY +PATTI +PATTIE +PATTY +PAUL +PAULA +PAULENE +PAULETTA +PAULETTE +PAULINA +PAULINE +PAULITA +PAZ +PEARL +PEARLE +PEARLENE +PEARLIE +PEARLINE +PEARLY +PEG +PEGGIE +PEGGY +PENELOPE +PENNEY +PENNI +PENNIE +PENNY +PERLA +PERRY +PETER +PETRA +PETRINA +PETRONILA +PHEBE +PHILLIS +PHILOMENA +PHOEBE +PHUNG +PHUONG +PHYLICIA +PHYLIS +PHYLISS +PHYLLIS +PIA +PIEDAD +PILAR +PING +PINKIE +PIPER +POK +POLLY +PORSCHE +PORSHA +PORTIA +PRECIOUS +PRICILLA +PRINCESS +PRISCILA +PRISCILLA +PROVIDENCIA +PRUDENCE +PURA +QIANA +QUEEN +QUEENIE +QUIANA +QUINN +QUYEN +RACHAEL +RACHAL +RACHEAL +RACHEL +RACHELE +RACHELL +RACHELLE +RACQUEL +RAE +RAEANN +RAELENE +RAFAELA +RAGUEL +RAINA +RAISA +RAMONA +RAMONITA +RANA +RANAE +RANDA +RANDEE +RANDI +RANDY +RANEE +RAQUEL +RASHEEDA +RASHIDA +RAVEN +RAY +RAYE +RAYLENE +RAYMOND +RAYNA +REA +REAGAN +REANNA +REATHA +REBA +REBBECA +REBBECCA +REBECA +REBECCA +REBECKA +REBEKAH +REDA +REENA +REFUGIA +REFUGIO +REGAN +REGENA +REGENIA +REGINA +REGINIA +REIKO +REINA +REITA +REMA +REMEDIOS +REMONA +RENA +RENAE +RENATA +RENATE +RENAY +RENDA +RENE +RENEA +RENEE +RENETTA +RENITA +RENNA +RESSIE +RETA +RETHA +RETTA +REVA +REYNA +REYNALDA +RHEA +RHEBA +RHIANNON +RHODA +RHONA +RHONDA +RIA +RICARDA +RICHARD +RICHELLE +RICKI +RICKIE +RIKKI +RIMA +RINA +RISA +RITA +RIVA +RIVKA +ROBBI +ROBBIE +ROBBIN +ROBBYN +ROBERT +ROBERTA +ROBERTO +ROBIN +ROBYN +ROCHEL +ROCHELL +ROCHELLE +ROCIO +ROLANDA +ROMA +ROMAINE +ROMANA +ROMELIA +ROMONA +RONA +RONALD +RONDA +RONI +RONNA +RONNI +RONNIE +RORY +ROSA +ROSALBA +ROSALEE +ROSALIA +ROSALIE +ROSALINA +ROSALIND +ROSALINDA +ROSALINE +ROSALVA +ROSALYN +ROSAMARIA +ROSAMOND +ROSANA +ROSANN +ROSANNA +ROSANNE +ROSARIA +ROSARIO +ROSAURA +ROSE +ROSEANN +ROSEANNA +ROSEANNE +ROSELEE +ROSELIA +ROSELINE +ROSELLA +ROSELLE +ROSELYN +ROSEMARIE +ROSEMARY +ROSENA +ROSETTA +ROSIA +ROSIE +ROSINA +ROSIO +ROSITA +ROSLYN +ROSSANA +ROSSIE +ROSY +ROWENA +ROXANA +ROXANE +ROXANN +ROXANNA +ROXANNE +ROXIE +ROXY +ROY +ROYCE +ROZANNE +ROZELLA +RUBI +RUBIE +RUBY +RUBYE +RUDY +RUFINA +RUTH +RUTHA +RUTHANN +RUTHANNE +RUTHE +RUTHIE +RYAN +RYANN +SABINA +SABINE +SABRA +SABRINA +SACHA +SACHIKO +SADE +SADIE +SADYE +SAGE +SALENA +SALINA +SALLIE +SALLY +SALOME +SAM +SAMANTHA +SAMARA +SAMATHA +SAMELLA +SAMIRA +SAMMIE +SAMMY +SANDA +SANDEE +SANDI +SANDIE +SANDRA +SANDY +SANG +SANJUANA +SANJUANITA +SANORA +SANTA +SANTANA +SANTINA +SANTOS +SARA +SARAH +SARI +SARINA +SARITA +SASHA +SATURNINA +SAU +SAUNDRA +SAVANNA +SAVANNAH +SCARLET +SCARLETT +SCOTT +SCOTTIE +SEAN +SEASON +SEBRINA +SEE +SELENA +SELENE +SELINA +SELMA +SENA +SENAIDA +SERAFINA +SERENA +SERINA +SERITA +SETSUKO +SHA +SHAE +SHAINA +SHAKIA +SHAKIRA +SHAKITA +SHALA +SHALANDA +SHALON +SHALONDA +SHAMEKA +SHAMIKA +SHAN +SHANA +SHANAE +SHANDA +SHANDRA +SHANE +SHANEKA +SHANEL +SHANELL +SHANELLE +SHANI +SHANICE +SHANIKA +SHANIQUA +SHANITA +SHANNA +SHANNAN +SHANNON +SHANON +SHANTA +SHANTAY +SHANTE +SHANTEL +SHANTELL +SHANTELLE +SHANTI +SHAQUANA +SHAQUITA +SHARA +SHARAN +SHARDA +SHAREE +SHAREN +SHARI +SHARICE +SHARIE +SHARIKA +SHARILYN +SHARITA +SHARLA +SHARLEEN +SHARLENE +SHAROLYN +SHARON +SHARONDA +SHARRI +SHARRON +SHARYL +SHARYN +SHASTA +SHAUN +SHAUNA +SHAUNDA +SHAUNNA +SHAUNTA +SHAUNTE +SHAVON +SHAVONDA +SHAVONNE +SHAWANA +SHAWANDA +SHAWANNA +SHAWN +SHAWNA +SHAWNDA +SHAWNEE +SHAWNNA +SHAWNTA +SHAY +SHAYLA +SHAYNA +SHAYNE +SHEA +SHEBA +SHEENA +SHEILA +SHEILAH +SHELA +SHELBA +SHELBY +SHELIA +SHELLA +SHELLEY +SHELLI +SHELLIE +SHELLY +SHEMEKA +SHEMIKA +SHENA +SHENIKA +SHENITA +SHERA +SHEREE +SHERELL +SHERI +SHERICE +SHERIDAN +SHERIE +SHERIKA +SHERILL +SHERILYN +SHERISE +SHERITA +SHERLENE +SHERLEY +SHERLY +SHERLYN +SHERON +SHERRELL +SHERRI +SHERRIE +SHERRIL +SHERRILL +SHERRON +SHERRY +SHERRYL +SHERY +SHERYL +SHERYLL +SHIELA +SHILA +SHIN +SHIRA +SHIRELY +SHIRL +SHIRLEE +SHIRLEEN +SHIRLENE +SHIRLEY +SHIRLY +SHIZUE +SHIZUKO +SHONA +SHONDA +SHONDRA +SHONNA +SHONTA +SHOSHANA +SHU +SHYLA +SIBYL +SIDNEY +SIERRA +SIGNE +SIGRID +SILVA +SILVANA +SILVIA +SIMA +SIMONA +SIMONE +SIMONNE +SINA +SINDY +SIOBHAN +SIRENA +SIU +SKYE +SLYVIA +SO +SOCORRO +SOFIA +SOL +SOLANGE +SOLEDAD +SOMER +SOMMER +SON +SONA +SONDRA +SONG +SONIA +SONJA +SONYA +SOO +SOOK +SOON +SOPHIA +SOPHIE +SORAYA +SPARKLE +SPRING +STACEE +STACEY +STACI +STACIA +STACIE +STACY +STAR +STARLA +STARR +STASIA +STEFANI +STEFANIA +STEFANIE +STEFANY +STEFFANIE +STELLA +STEPANIE +STEPHAINE +STEPHANE +STEPHANI +STEPHANIA +STEPHANIE +STEPHANY +STEPHEN +STEPHENIE +STEPHINE +STEPHNIE +STEVEN +STEVIE +STORMY +SU +SUDIE +SUE +SUEANN +SUELLEN +SUK +SULEMA +SUMIKO +SUMMER +SUN +SUNDAY +SUNG +SUNNY +SUNSHINE +SUSAN +SUSANA +SUSANN +SUSANNA +SUSANNAH +SUSANNE +SUSIE +SUSY +SUZAN +SUZANN +SUZANNA +SUZANNE +SUZETTE +SUZI +SUZIE +SUZY +SVETLANA +SYBIL +SYBLE +SYDNEY +SYLVIA +SYLVIE +SYNTHIA +SYREETA +TA +TABATHA +TABETHA +TABITHA +TAI +TAINA +TAISHA +TAJUANA +TAKISHA +TALIA +TALISHA +TALITHA +TAM +TAMA +TAMALA +TAMAR +TAMARA +TAMATHA +TAMBRA +TAMEIKA +TAMEKA +TAMEKIA +TAMELA +TAMERA +TAMESHA +TAMI +TAMICA +TAMIE +TAMIKA +TAMIKO +TAMISHA +TAMMARA +TAMMERA +TAMMI +TAMMIE +TAMMY +TAMRA +TANA +TANDY +TANEKA +TANESHA +TANGELA +TANIA +TANIKA +TANISHA +TANJA +TANNA +TANYA +TARA +TARAH +TAREN +TARI +TARRA +TARSHA +TARYN +TASHA +TASHIA +TASHINA +TASIA +TATIANA +TATUM +TATYANA +TAWANA +TAWANDA +TAWANNA +TAWNA +TAWNY +TAWNYA +TAYLOR +TEENA +TEISHA +TELMA +TEMEKA +TEMIKA +TEMPIE +TEMPLE +TENA +TENESHA +TENISHA +TENNIE +TENNILLE +TEODORA +TEQUILA +TERA +TEREASA +TERESA +TERESE +TERESIA +TERESITA +TERESSA +TERI +TERICA +TERINA +TERISA +TERRA +TERRELL +TERRESA +TERRI +TERRIE +TERRILYN +TERRY +TESHA +TESS +TESSA +TESSIE +THALIA +THANH +THAO +THEA +THEDA +THELMA +THEO +THEODORA +THEOLA +THERESA +THERESE +THERESIA +THERESSA +THERSA +THI +THOMAS +THOMASINA +THOMASINE +THORA +THRESA +THU +THUY +TIA +TIANA +TIANNA +TIARA +TIEN +TIERA +TIERRA +TIESHA +TIFANY +TIFFANEY +TIFFANI +TIFFANIE +TIFFANY +TIFFINY +TIJUANA +TILDA +TILLIE +TIMIKA +TIMOTHY +TINA +TINISHA +TINY +TISHA +TOBI +TOBIE +TOBY +TOI +TOMASA +TOMEKA +TOMI +TOMIKA +TOMIKO +TOMMIE +TOMMY +TOMMYE +TOMOKO +TONA +TONDA +TONETTE +TONI +TONIA +TONIE +TONISHA +TONJA +TONY +TONYA +TORA +TORI +TORIE +TORRI +TORRIE +TORY +TOSHA +TOSHIA +TOSHIKO +TOVA +TOWANDA +TOYA +TRACEE +TRACEY +TRACI +TRACIE +TRACY +TRAN +TRANG +TRAVIS +TREASA +TRENA +TRESA +TRESSA +TRESSIE +TREVA +TRICIA +TRINA +TRINH +TRINIDAD +TRINITY +TRISH +TRISHA +TRISTA +TRISTAN +TROY +TRUDI +TRUDIE +TRUDY +TRULA +TU +TULA +TUYET +TWANA +TWANDA +TWANNA +TWILA +TWYLA +TYESHA +TYISHA +TYLER +TYRA +ULA +ULRIKE +UN +UNA +URSULA +USHA +UTE +VADA +VAL +VALARIE +VALDA +VALENCIA +VALENE +VALENTINA +VALENTINE +VALERI +VALERIA +VALERIE +VALERY +VALLIE +VALORIE +VALRIE +VAN +VANDA +VANESA +VANESSA +VANETTA +VANIA +VANITA +VANNA +VANNESA +VANNESSA +VASHTI +VEDA +VELDA +VELIA +VELLA +VELMA +VELVA +VELVET +VENA +VENESSA +VENETTA +VENICE +VENITA +VENNIE +VENUS +VEOLA +VERA +VERDA +VERDELL +VERDIE +VERENA +VERGIE +VERLA +VERLENE +VERLIE +VERNA +VERNELL +VERNETTA +VERNIA +VERNICE +VERNIE +VERNITA +VERONA +VERONICA +VERONIQUE +VERSIE +VERTIE +VESTA +VETA +VICENTA +VICKEY +VICKI +VICKIE +VICKY +VICTOR +VICTORIA +VIDA +VIKI +VIKKI +VILMA +VINA +VINCENZA +VINITA +VINNIE +VIOLA +VIOLET +VIOLETA +VIOLETTE +VIRGEN +VIRGIE +VIRGINA +VIRGINIA +VITA +VIVA +VIVAN +VIVIAN +VIVIANA +VIVIEN +VIVIENNE +VONCILE +VONDA +VONNIE +WAI +WALTER +WALTRAUD +WAN +WANDA +WANETA +WANITA +WAVA +WEI +WEN +WENDI +WENDIE +WENDOLYN +WENDY +WENONA +WESLEY +WHITLEY +WHITNEY +WILDA +WILHELMINA +WILLA +WILLENA +WILLENE +WILLETTA +WILLETTE +WILLIA +WILLIAM +WILLIE +WILLIEMAE +WILLODEAN +WILLOW +WILMA +WINDY +WINIFRED +WINNIE +WINNIFRED +WINONA +WINTER +WONDA +WYNELL +WYNONA +XENIA +XIAO +XIOMARA +XOCHITL +XUAN +YADIRA +YAEKO +YAEL +YAHAIRA +YAJAIRA +YAN +YANG +YANIRA +YASMIN +YASMINE +YASUKO +YEE +YELENA +YEN +YER +YESENIA +YESSENIA +YETTA +YEVETTE +YI +YING +YOKO +YOLANDA +YOLANDE +YOLANDO +YOLONDA +YON +YONG +YOSHIE +YOSHIKO +YOULANDA +YOUNG +YU +YUETTE +YUK +YUKI +YUKIKO +YUKO +YULANDA +YUN +YUNG +YUONNE +YURI +YURIKO +YVETTE +YVONE +YVONNE +ZADA +ZAIDA +ZANDRA +ZELDA +ZELLA +ZELMA +ZENA +ZENAIDA +ZENIA +ZENOBIA +ZETTA +ZINA +ZITA +ZOE +ZOFIA +ZOILA +ZOLA +ZONA +ZONIA +ZORA +ZORAIDA +ZULA +ZULEMA +ZULMA diff --git a/jrx/popup.html b/jrx/popup.html index 2b506af..db6b933 100644 --- a/jrx/popup.html +++ b/jrx/popup.html @@ -35,12 +35,42 @@ - +

You have no keypairs yet. Either generate a new one or + recover one you already have.

+ + +
+ +
+ +
+ + + +
+ -
-
+

+
+
 
 
 
diff --git a/jrx/src/b_lib.ts b/jrx/src/b_lib.ts
new file mode 100644
index 0000000..6035996
--- /dev/null
+++ b/jrx/src/b_lib.ts
@@ -0,0 +1,270 @@
+/**
+ * JR Controller
+ *
+ * Note that this is a *thread*.  We put our business and storage logic within
+ * this thread.  The reason we do that is we don't want to deal with the
+ * problem of conflicting concurrent writes..
+ *
+ * # Naming Conventions
+ *
+ * - `b_...` -> internal to background thread
+ * - `c_...` -> meant to be called/used from content script
+ * - `p_...` -> meant to be called/used from popup script
+ *
+ * @module
+ */
+
+//import * as awcp from './jex_include/local-awcp-0.2.1/dist/awcp.js';
+
+
+export type {
+    // content script call/return data
+    // popup script call/return data
+};
+
+
+export {
+    // bg calling code
+    b_main
+    // content script api
+    // popup script api
+};
+
+//
+//
+////=============================================================================
+//// TYPES
+////=============================================================================
+//
+//
+///**
+// * @example
+// * ```json
+// * {
+// *     // EventData_A2w
+// *     "type": "to_waellet",
+// *     "data": {
+// *         // RpcCall
+// *         "jsonrpc": "2.0",
+// *         "id": "ske-connect-1",
+// *         "method": "connection.open",
+// *         "params": {
+// *             // Params_A2W_connection_open
+// *             "name": "sidekick examples",
+// *             "version": 1
+// *         }
+// *     }
+// * }
+// * ```
+// *
+// * @internal
+// */
+//type a2w_calldata
+//    = awcp.EventData_A2W>;
+//                                   // method  params
+//
+//
+//
+///**
+// * Return data
+// */
+//type w2a_return_data
+//    = awcp.EventData_W2A>;
+//
+//
+//
+///**
+// * Type from NaCL
+// */
+//type nacl_keypair
+//    = {secretKey : Uint8Array,
+//       publicKey : Uint8Array};
+//
+//
+//
+///**
+// * JR state
+// */
+//type jr_state = {keypairs: Array};
+//
+//
+/**
+ * main function for background thread
+ */
+async function
+b_main
+    ()
+    : Promise
+{
+    console.log('b_main');
+
+    //// get state
+    //let state: jr_state = await get_state();
+    //console.log(state);
+
+    //// handle messages from content or popup scripts
+    //browser.runtime.onMessage.addListener(bg_runtime_msg_handler);
+
+}
+//
+//
+//
+//
+///**
+// * fetch the state from local storage
+// *
+// * if there is no state make an initial state and store it
+// */
+//async function
+//b_get_state
+//    ()
+//    : Promise
+//{
+//    console.log('jr bg get_state');
+//    // this may or may not have the keyword "jr_state"
+//    let gotten_state : object = await browser.storage.local.get();
+//
+//    console.log('jr bg gotten_state', gotten_state);
+//
+//    // if there is such a state, get it
+//    // @ts-ignore ts doesn't understand querying if a key exists
+//    if (!!(gotten_state.jr_state)) {
+//        // @ts-ignore ts doesn't understand that we have proved that the key exists
+//        return gotten_state.jr_state;
+//    }
+//    // otherwise return default state
+//    else {
+//        return jr_state_default();
+//    }
+//}
+//
+//
+//
+///**
+// * default state for JR
+// */
+//function
+//jr_state_default
+//    ()
+//    : jr_state
+//{
+//    console.log('jr_state_default');
+//    // if no key, generate one
+//    // @ts-ignore ts doesn't like that nacl is dumb. i don't like it either
+//    let init_keypair : nacl_keypair = nacl.sign.keyPair() as nacl_keypair;
+//    let default_state = { keypairs: [init_keypair] };
+//    console.log('jr_state_default default_state', default_state);
+//    return default_state;
+//}
+//
+//
+//
+///**
+// * wrap up bs for w2a message
+// */
+//function
+//mk_w2a_msg_ok
+//    
+//    (method : string,
+//     id     : string | number,
+//     result : result_t)
+//    : awcp.EventData_W2A>
+//{
+//    return {type : "to_aepp",
+//            data : {jsonrpc : "2.0",
+//                    method  : method,
+//                    id      : id,
+//                    result  : result}};
+//}
+//
+//
+//
+///**
+// * Handle messages from either content or popup script
+// *
+// * Note to self: `sendResponse` is fake. Doesn't work. Instead just return the
+// * response
+// */
+//async function
+//bg_runtime_msg_handler
+//    (msg          : {frum: 'content' | 'popup',
+//                     data: any},
+//     sender       : any,
+//     sendResponse : any)
+//    : Promise
+//{
+//    //console.log('msg', msg);
+//    //console.log('sender', sender);
+//    //console.log('sendResponse', sendResponse);
+//
+//    switch (msg.frum) {
+//        case 'content':
+//            return await bg_a2w_handler_content(msg.data as a2w_calldata, sender, sendResponse);
+//        case 'popup':
+//            return await bg_msg_handler_popup(msg.data as popup_calldata, sender, sendResponse);
+//    }
+//}
+//
+//
+///**
+// * Handle messages from the content script
+// *
+// * Note to self: `sendResponse` is fake. Doesn't work. Instead just return the
+// * response
+// */
+//async function
+//bg_a2w_handler_content
+//    (msg          : a2w_calldata,
+//     sender       : any,
+//     sendResponse : any)
+//    : Promise
+//{
+//    //console.log('msg', msg);
+//    //console.log('sender', sender);
+//    //console.log('sendResponse', sendResponse);
+//
+//    let msg_method : string          = msg.data.method;
+//    let msg_id     : string | number = msg.data.id;
+//
+//    function w2a_ok(result_for_content_script: any) {
+//        return mk_w2a_msg_ok(msg_method, msg_id, result_for_content_script);
+//    }
+//
+//    switch (msg.data.method) {
+//        case "connection.open":
+//            return w2a_ok({id        : "jr",
+//                           name      : "JR",
+//                           networkId : "ae_uat",
+//                           origin    : "foobar",
+//                           type      : "extension"});
+//        case "address.subscribe":
+//            return w2a_ok({subscription : ["connected"],
+//                           address      : {current   : {"boobs": {}},
+//                                           connected : {}}});
+//    }
+//}
+//
+//
+//
+//
+//type popup_calldata
+//    = 'init';
+//
+//
+//type popup_return_data
+//    = 'die';
+//
+//
+///**
+// * Handle messages from the popup
+// */
+//async function
+//bg_msg_handler_popup
+//    (msg          : popup_calldata,
+//     sender       : any,
+//     sendResponse : any)
+//    : Promise
+//{
+//    console.log('jr bg_msg_handler_popup msg', msg);
+//    return 'die';
+//}
diff --git a/jrx/src/background.ts b/jrx/src/background.ts
index aa6877a..201a853 100644
--- a/jrx/src/background.ts
+++ b/jrx/src/background.ts
@@ -1,119 +1,13 @@
 /**
- * JR Controller
+ * This is the "background script", which just calls b_lib:main/0
  *
- * Note that this is a *thread*.  We put our business and storage logic within
- * this thread.  The reason we do that is we don't want to deal with the
- * problem of conflicting concurrent writes..
- *
- * @module
+ * b_lib is the background "library". I want the popup and content script to be
+ * able to "call" the background script (really there's a rewrite layer there
+ * so the entire IPC messaging protocol is in one file). I don't want to fire the
+ * missiles whenever say the popup script loads the "background library", so
+ * the background "script" is a separate file.
  */
 
-export {
-};
+import {b_main} from './b_lib.js';
 
-import * as awcp from './jex_include/local-awcp-0.2.1/dist/awcp.js';
-
-/**
- * @example
- * ```json
- * {
- *     // EventData_A2w
- *     "type": "to_waellet",
- *     "data": {
- *         // RpcCall
- *         "jsonrpc": "2.0",
- *         "id": "ske-connect-1",
- *         "method": "connection.open",
- *         "params": {
- *             // Params_A2W_connection_open
- *             "name": "sidekick examples",
- *             "version": 1
- *         }
- *     }
- * }
- * ```
- */
-                                                 // method  params
-type a2w_calldata = awcp.EventData_A2W>;
-
-
-/**
- * wrap up bs for w2a message
- */
-function
-mk_w2a_msg_ok
-    
-    (method : string,
-     id     : string | number,
-     result : result_t)
-    : awcp.EventData_W2A>
-{
-    return {type : "to_aepp",
-            data : {jsonrpc : "2.0",
-                    method  : method,
-                    id      : id,
-                    result  : result}};
-}
-
-
-
-/**
- * Handle messages from the content script
- *
- * Note to self: `sendResponse` is fake. Doesn't work. Instead just return the
- * response
- */
-async function
-bg_a2w_handler
-    (msg: a2w_calldata, sender: any, sendResponse: any)
-    : Promise
-{
-    //console.log('msg', msg);
-    //console.log('sender', sender);
-    //console.log('sendResponse', sendResponse);
-
-    let msg_method : string          = msg.data.method;
-    let msg_id     : string | number = msg.data.id;
-
-    function w2a_ok(result_for_content_script: any) {
-        return mk_w2a_msg_ok(msg_method, msg_id, result_for_content_script);
-    }
-
-    switch (msg.data.method) {
-        case "connection.open":
-            return w2a_ok({id        : "jr",
-                           name      : "JR",
-                           networkId : "ae_uat",
-                           origin    : "foobar",
-                           type      : "extension"});
-        case "address.subscribe":
-            return w2a_ok({subscription : ["connected"],
-                           address      : {current   : {"boobs": {}},
-                                           connected : {}}});
-    }
-}
-
-
-
-/**
- * main function for background thread
- */
-async function
-jr_bg_main
-    ()
-    : Promise
-{
-    console.log('jr_bg_main line 106 hello');
-
-    // handle messages from content script
-    browser.runtime.onMessage.addListener(bg_a2w_handler);
-
-    // TODO: ok so next step is to have startup hook
-    // try to fetch keys from storage
-    // if no key, generate one
-    let keypair = nacl.sign.keyPair();
-    console.log('jr_bg_main 112 keypair', keypair);
-}
-
-
-jr_bg_main();
+b_main();
diff --git a/jrx/src/c_lib.ts b/jrx/src/c_lib.ts
new file mode 100644
index 0000000..f38685c
--- /dev/null
+++ b/jrx/src/c_lib.ts
@@ -0,0 +1,118 @@
+/**
+ * JR Content Script Library
+ *
+ * Notes:
+ *
+ * 1. This is a module.
+ * 2. All this does is relay messages between here and the background script
+ *    (i.e. application controller).
+ *
+ * @module
+ */
+
+
+export {
+    c_main
+};
+
+/**
+ * Main function
+ */
+async function
+c_main
+    ()
+{
+    console.log('c_main');
+
+    //// relay page messages back to the controller
+    //window.addEventListener('message', a2w_handler);
+
+    //// spam detect
+    //spam_detect();
+}
+//
+//
+//
+//let detect_msg = {type : "to_aepp",
+//                  data : {jsonrpc : "2.0",
+//                          method  : "connection.announcePresence",
+//                          params  : {id        : "jr",
+//                                     name      : "JR",
+//                                     networkId : "ae_uat",
+//                                     origin    : "foobar",
+//                                     type      : "extension"}}};
+//
+///**
+// * Spam the "connection.announcePresence" (awcp terminology: "detect") message
+// */
+//async function
+//spam_detect
+//    ()
+//{
+//    while (true) {
+//        window.postMessage(detect_msg);
+//        await sleep(3000);
+//    }
+//}
+//
+//
+//
+///**
+// * Hack from stack overflow somewhere to sleep for the given number of ms
+// */
+//async function
+//sleep
+//    (ms: number)
+//    : Promise
+//{
+//    return new Promise(resolve => setTimeout(resolve, ms));
+//}
+//
+//
+//
+///**
+// * Relays messages from page scripts to the background script
+// */
+//async function
+//a2w_handler
+//    (msg: {data: {type? : "to_aepp" | "to_waellet"}})
+//{
+//
+//    //console.error('JR: a2w_handler', {msg: msg});
+//    function onSuccessCase(response_from_bg: any) {
+//        console.error('JR A2w success case', response_from_bg);
+//        window.postMessage(response_from_bg);
+//    }
+//    function onErrorCase(error: any) {
+//        console.error('JR: error from controller', error);
+//    }
+//
+//    // branch
+//    // all messages are visible to us
+//    // if the message is for the wallet
+//    // send it to the wallet
+//    // otherwise ignore it
+//    if ("to_waellet" === msg.data.type) {
+//        console.error('JR: WAEEEEEEE');
+//        browser.runtime
+//            .sendMessage({frum: 'content',
+//                          data: msg.data})
+//            .then(onSuccessCase,
+//                  onErrorCase);
+//        //window.postMessage(response);
+//    }
+//    // otherwise ignore
+//}
+//
+//
+//
+/////**
+//// * Relays messages from background scripts to the page script
+//// */
+////function
+////w2a_handler
+////    (msg: any)
+////{
+////    window.postMessage(msg);
+////}
+//
diff --git a/jrx/src/content.ts b/jrx/src/content.ts
index d52d1b4..974843d 100644
--- a/jrx/src/content.ts
+++ b/jrx/src/content.ts
@@ -3,16 +3,18 @@
  *
  * Notes:
  *
- * 1. This is not loaded as a module, which means it has limited permissions.
- *    In particular, asynchronous calls are 1000x more annoying.
+ * 1. This is not a module, so calling async code is super annoying and
+ *    everything has to be in script order.
  * 2. All this does is relay messages between here and the background script
  *    (i.e. application controller).
  *
+ * This is more or less a finished script. Doesn't need the "api call" idiom
+ * that the popup <-> controller IPC needs.
+ *
  * @module
  */
 
 
-
 let detect_msg = {type : "to_aepp",
                   data : {jsonrpc : "2.0",
                           method  : "connection.announcePresence",
@@ -26,12 +28,12 @@ let detect_msg = {type : "to_aepp",
  * Spam the "connection.announcePresence" (awcp terminology: "detect") message
  */
 async function
-spam_detect
+c_spam_detect
     ()
 {
     while (true) {
         window.postMessage(detect_msg);
-        await sleep(3000);
+        await c_sleep(3000);
     }
 }
 
@@ -41,7 +43,7 @@ spam_detect
  * Hack from stack overflow somewhere to sleep for the given number of ms
  */
 async function
-sleep
+c_sleep
     (ms: number)
     : Promise
 {
@@ -51,20 +53,21 @@ sleep
 
 
 /**
- * Relays messages from page scripts to the background script
+ * Relays messages between page scripts and the background script
  */
 async function
-a2w_handler
+c_a2w_handler
     (msg: {data: {type? : "to_aepp" | "to_waellet"}})
+    : Promise
 {
 
     //console.error('JR: a2w_handler', {msg: msg});
     function onSuccessCase(response_from_bg: any) {
-        console.error('JR A2w success case', response_from_bg);
+        console.log('jr: c_a2w_handler success ', response_from_bg);
         window.postMessage(response_from_bg);
     }
     function onErrorCase(error: any) {
-        console.error('JR: error from controller', error);
+        console.error('jr: c_a2w_handler: error from controller', error);
     }
 
     // branch
@@ -73,47 +76,31 @@ a2w_handler
     // send it to the wallet
     // otherwise ignore it
     if ("to_waellet" === msg.data.type) {
-        console.error('JR: WAEEEEEEE');
-        browser.runtime.sendMessage(msg.data).then(
-            onSuccessCase,
-            onErrorCase
-        );
-        //window.postMessage(response);
+        console.log('jr: c_a2w_handler relaying message', msg.data);
+        browser.runtime
+            .sendMessage({frum: 'content',
+                          data: msg.data})
+            .then(onSuccessCase,
+                  onErrorCase);
     }
     // otherwise ignore
 }
 
 
-
-///**
-// * Relays messages from background scripts to the page script
-// */
-//function
-//w2a_handler
-//    (msg: any)
-//{
-//    window.postMessage(msg);
-//}
-
-
-
 /**
  * Main function
  */
 async function
-jr_content_main
+c_main
     ()
 {
+    console.log('c_main');
 
-   // relay page messages back to the controller
-   window.addEventListener('message', a2w_handler);
+    // relay messages back and forth between page script and controller
+    window.addEventListener('message', c_a2w_handler);
 
-   //// relay controller messages back to page
-   //browser.runtime.onMessage.addListener(w2a_handler);
-
-   // spam detect
-   spam_detect();
+    // spam the detect message
+    c_spam_detect();
 }
 
-
-jr_content_main();
+c_main()
diff --git a/jrx/src/jr_ipc.ts b/jrx/src/jr_ipc.ts
deleted file mode 100644
index 9def49f..0000000
--- a/jrx/src/jr_ipc.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * Definitions of messages that are passed between process A and process B in
- * JR. Example: how the content script talks to the background script.
- *
- * @module
- */
-
-/**
- * this is the message sent from the content script to the background script
- * when a page script requests
- */
-type c2b_addr_subscribe = "address_subscribe";
diff --git a/jrx/src/popup.ts b/jrx/src/popup.ts
index da3085b..bb8fd22 100644
--- a/jrx/src/popup.ts
+++ b/jrx/src/popup.ts
@@ -2,17 +2,88 @@
  * This is the script for the popup window
  */
 
-main();
+p_main();
 
 /**
  * runs whenever the popup opens
+ *
+ * also whenever a button is clicked it appears the page re-renders which
+ * re-runs this
+ *
+ * suggests the following structure:
+ *
+ * 1. Contact the background script and say "I'm a popup".
+ * 2. Get all relevant data.
+ * 3. Render
+ *
+ * On click:
+ *
+ * 1. Send relevant information back to background script
+ * 2. Epstein
  */
 async function
-main
+p_main
     ()
     : Promise
 {
-    let scratch = document.getElementById('scratch')!;
-    scratch.innerText += 'line 17 hello\n';
+    //let scratch = document.getElementById('scratch')!;
+    //scratch.innerText += 'line 17 hello\n';
+
+    console.log('popup main');
+
+    //function onSuccessCase(response_from_bg: any) {
+    //    console.log('jr popup response from background script success', response_from_bg);
+    //}
+    //function onErrorCase(error_from_bg: any) {
+    //    console.log('jr popup response from background script error', error_from_bg);
+    //}
+
+    //browser.runtime
+    //    .sendMessage({frum: 'popup',
+    //                  data: 'init'})
+    //    .then(onSuccessCase,
+    //          onErrorCase);
+
+    //// add hooks for each button
+    //document.getElementById('generate-btn')!.addEventListener('click', onclick_generate);
+    //document.getElementById('faert-btn')!.addEventListener('click', onclick_faert);
+    ////document.getElementById('seed-btn')!.addEventListener('click', onclick_seed);
 }
 
+
+
+///**
+// * Runs when the user clicks the "generate" button
+// */
+//async function
+//onclick_generate
+//    ()
+//    : Promise
+//{
+//    console.log('onclick_generate');
+//}
+//
+//
+//
+///**
+// * Runs when the user clicks the "recover from faert phrase" button
+// */
+//async function
+//onclick_faert
+//    ()
+//    : Promise
+//{
+//    console.log('onclick_faert');
+//}
+//
+//
+//
+/////**
+//// * Runs when the user clicks the "recover from seed phrase" button
+//// */
+////async function
+////onclick_seed
+////    ()
+////{
+////    console.log('onclick_seed');
+////}
diff --git a/jrx/tsconfig.json b/jrx/tsconfig.json
index f240cdc..1c64b70 100644
--- a/jrx/tsconfig.json
+++ b/jrx/tsconfig.json
@@ -1,4 +1,5 @@
 {"compilerOptions" : {"target"                           : "es2022",
+                      "module"                           : "es2022",
                       "strict"                           : true,
                       "esModuleInterop"                  : true,
                       "skipLibCheck"                     : true,