Please helpout.

Hi All
I am expecting some tips from you regarding small design issue. We are implementing an object hierarchy which will contains methods like Store which will store this object into the database, Load loads data from database into the object, Write writes that object into XML file, Parse which parse the xml file and gets the data into object. In this there is four issues
1)     The Object can have only the primitive data type attributes
2)     The Object may have array of primitive data type attributes.
3)     The Object may have objects of some other class.(Aggregation)
4)     The Object can have object array of some other class.
At present the table name convention and structure i am following is the Class name of the object and the fields of the table are the attributes of the object, if there is any array of objects I am keeping some foreign key relation ships between the tables. But this is not attaining my requirements this solution is not adequate to do the best. And the database can be anything like Oracle, MS-Access, SQL, DB2..So please give me the solution just like thumb rules to deign these issues properly.
Thanking you in anticipation

To be honest this sounds a lot like you've bitten off more than you can chew. I would recommend one of two approaches:
1. Use an existing library
2. Hire a consultant (I'm a consultant :)
If you're determined to roll it yourself, then you'll need to break this down into smaller bite sized problems and solve those individually. I don't think that "rules of thumb" are going to be adequate here.

Similar Messages

  • How do I download my Microsoft office on to my MacBook Air using airdrop from my iMac? Please help

    How do I download my Microsoft office on to my MacBook Air using airdrop from my iMac? Please help

    Out of curiosity, does Microsoft's licensing allow for such an install and/or more than one install? I just did a cursory check on their licensing and found that most are only licensed for one computer unless you buy a special key card.
    I had a different app once that was only allowed on one computer; it would not install on the other Mac. You may therefore encounter problems - since you must have an install CD, why not use that if you have the key card allowing you to install it on more than one?

  • Controlfile has corrupted and not able to open up the database. Very urgent

    Hi All,
    I am working on 11gR1 database on linux environment and suddenly the DB went down. I look at the alert log and i am following that guidelines, but i am not able to put the database in mount state and it is thronging error message. Please suggest me in correct way. This is very high priority for me.
    I have done below steps.
    1.set the environment through . oraenv
    2. export ORACLE_SID
    3. SQL>startup nomount
    ORACLE instance started.
    Total System Global Area 4943876096 bytes
    Fixed Size 2143944 bytes
    Variable Size 2617248056 bytes
    Database Buffers 2281701376 bytes
    Redo Buffers 42782720 bytes
    SQL>alter database mount;
    alter database mount
    ERROR at line 1:
    ORA-00214: control file '/u02/oradata/beacondp/control02.ctl' version 390158 inconsistent with file '/u01/oradata/beacondp/control01.ctl' version 390097
    4. SQL>alter system set control_files='/u02/oradata/beacondp/control03.ctl' scope=spfile;
    System altered.
    SQL>startup restrict
    ORA-01081: cannot start already-running ORACLE - shut it down first
    5. SQL>alter database mount;
    alter database mount
    ERROR at line 1:
    ORA-00214: control file '/u02/oradata/beacondp/control02.ctl' version 390158 inconsistent with file '/u01/oradata/beacondp/control01.ctl' version 390097
    alert log Information:
    Thread 1 advanced to log sequence 9261
    Current log# 3 seq# 9261 mem# 0: /u02/oradata/beacondp/redo03.log
    Tue Sep 13 15:00:14 2011
    ********************* ATTENTION: ********************
    The controlfile header block returned by the OS
    has a sequence number that is too old.
    The controlfile might be corrupted.
    PLEASE DO NOT ATTEMPT TO START UP THE INSTANCE
    without following the steps below.
    RE-STARTING THE INSTANCE CAN CAUSE SERIOUS DAMAGE
    TO THE DATABASE, if the controlfile is truly corrupted.
    In order to re-start the instance safely,
    please do the following:
    (1) Save all copies of the controlfile for later
    analysis and contact your OS vendor and Oracle support.
    (2) Mount the instance and issue:
    ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
    (3) Unmount the instance.
    (4) Use the script in the trace file to
    RE-CREATE THE CONTROLFILE and open the database.
    Please let me know, how i need to proceed. Major problem is i am not able to put the db in mount state. I have both spfile and pfile.
    Thanks in advance.

    user13162661 wrote:
    Thanks Pavan for yoour response, but how can i find, which is good copy of the controlfile?
    Now i have 3 controlfiles in spfile or in pfile, Can i directly remove the 1 and 2 controlfiles from pfile and put the 3rd there itself and start the db.
    startup pfile='file_path';
    Is there any thing i am missing?
    Please helpout.
    control file '/u02/oradata/beacondp/control02.ctl' version 390158 inconsistent with file '/u01/oradata/beacondp/control01.ctl' version 390097I suspect that control02.ctl is the good one since it has the higher SCN

  • How to handle multiple records in BPMN process

    Hi All,
    We are using Oracle BPM 11g.In my requirement,I am using the database adapter to get the data from table and I need to validate the each record and update the status of that record from the BPM Process.But I dont know how to handle if multiple records come at a time.Can anybody please helpout from this problem.
    Thanks in advanced.
    Narasimha Rao.

    Can you have a look at this post: http://redstack.wordpress.com/2010/09/30/iteratingtraversing-arrays-in-bpm/
    It's solving a different problem, but the key is that it's using a multi-instance subprocess to iterate over an array of "things" that need to be acted in. In your case it's the set of results from the db query rather than the set of tests in the example. But the principle is the same. You'd take collection of rows from the DB and process them in a multi-instance subprocess. The text that begins with the following would be good place to start:
    "Now let’s implement the body of our process. We will use the Subprocess object to handle the traversal of the array of tests. Drag a Subprocess from the component palette on the right into the process and drop it on the line between the Start and End nodes."
    In the loop characteristics you'd define whether you want to execute serially or in parallel.

  • Load FI data only for open items

    Hi all
    I want to load FI data only for open items.
    We started off with FI_GL_4 which has STATUSPS(status of FI line item)based on which we have written a start routine to filter out the closed items.
    But for other FI-GL datasources we dont have STATUSPS field.
    Then can we load data directly without applying any restriction on it as we dont have STATUSPS field in it?
    Or is there an other way to find all open items ?
    Please helpout.
    Awaiting replies.
    Harika.

    Hi Harikag,
    when you are loading delta data in 0FI_GL_4, it is NOT the right approach to load only the open items.
    Say for example, you have loaded a record with open status.
    If the status of the record gets changed to 'Closed' in SAP, then this will not flow to BW, because of the filter that you are trying to apply in the data load.
    So the item will continue to remain open in BW, though it is closed in R3.
    hence it is highly recommended to do this filtering at report level.
    Otherwise, you are looking at full load option by dropping data everyday, which will have performance issues in loading.
    Thanks,
    Krishnan

  • Am running itunes 11.0.4 and not able to open either wav file or mp3 ?

    Ok, so as someone who has been using Macs for a very long time and making music and the rest, I have suddenly found that I can't open a file for a backing track that has been sent to me using .wav format and now .mp3 - the files wont open in itunes (or show up in itunes) after I have tried adding to library and have even tried adding to my drop box and listening but NOTHING! Have checked settings and preferences and have mp3 decoder in drop down menu and have also turned off 'itunes match' incase that caused a conflict of some sort.
    Am totally bemused.
    Any advice from anyone?

    user13162661 wrote:
    Thanks Pavan for yoour response, but how can i find, which is good copy of the controlfile?
    Now i have 3 controlfiles in spfile or in pfile, Can i directly remove the 1 and 2 controlfiles from pfile and put the 3rd there itself and start the db.
    startup pfile='file_path';
    Is there any thing i am missing?
    Please helpout.
    control file '/u02/oradata/beacondp/control02.ctl' version 390158 inconsistent with file '/u01/oradata/beacondp/control01.ctl' version 390097I suspect that control02.ctl is the good one since it has the higher SCN

  • Related to EP & CRM Collaboration

    There is problem with EP-CRM Collaboration.
    When any end user access the CRM related report through EP, it asks for the username and password.
    As the backend mapping is correct.
    Please helpout to resolve this issue.

    Hi Preeti,
    Log into portal using the Fully qualified domain name.
    Check if the EP and the CRM are in the same domain.
    Regards
    Arun

  • Set-Cursor In TableControl Help Help Help

    Hello Friends
    Please HelpOut for Sure
    i had an table control which is filled by internal Table itab_emp
    i m applying condition on that internal table
    its giving error message
    i want that cursor should be placed to that position that gives errormessage
    i m sending u code
    Just tell me changes
    LOOP AT ITAB_EMP WHERE MARK = 'X' .
        IF SY-SUBRC = 0.
          ITAB_TEST[] = ITAB_EMP[].
          DELETE ADJACENT DUPLICATES FROM ITAB_TEST.
          LOOP AT ITAB_TEST.
            CLEAR SUM .
            LOOP AT ITAB_EMP WHERE PERID = ITAB_TEST-PERID.
              SUM = SUM + ITAB_EMP-OTIME.
            IF SUM > '100000'.
              MESSAGE E018.
            <b>ELSEIF ITAB_EMP-OTIME > '010000'.
              MESSAGE E017.
            SET CURSOR FIELD ITAB_EMP-OTIME .</b>        ELSE.
              MOVE-CORRESPONDING ITAB_EMP TO ITAB_OTAPP .
              ITAB_OTAPP-OBJID = 1.
              ITAB_OTAPP-INACT = 'X'.
              ITAB_OTAPP-TODTE = ZHR_PR_M_OTAPP-TODTE.
              ITAB_OTAPP-FRDTE = ZHR_PR_M_OTAPP-FRDTE.
              ITAB_OTAPP-IMMHD = ZHR_PR_M_OTAPP-IMMHD.
              ITAB_OTAPP-CRETM = SY-UZEIT.
              ITAB_OTAPP-CREON = SY-DATUM.
              ITAB_OTAPP-CREBY = SY-UNAME.
              APPEND ITAB_OTAPP.
            ENDIF.
          ENDLOOP.
    ENDLOOP.
          endif.
    endloop.
        LOOP AT ITAB_OTAPP INTO WA_ITAB_OTAPP.
          MODIFY ZHR_PR_M_OTAPP FROM WA_ITAB_OTAPP.
        ENDLOOP.
    BOLD lines are the condition checking
    if check all the lines and then if any of the line gives error it reflects now i want to place cursor on that field which is giving error
    sy-tabix will work
    BUT HOW?????
    Hope this time any of the genius gotmy problem
    With Best Regards
    Ruby

    Some of the logic is a bit confusing (would be easier to read if you used the "Code" button in the SDN message editor)... for example:
    LOOP AT ITAB_EMP WHERE MARK = 'X' .
      IF SY-SUBRC = 0.
    ... the "IF SY-SUBRC" won't be reached unless there is at least one row where "mark = 'X'.''...
    Anyhow, where is this code implemented currently?... the usual approach to validating a table control is to have a module called inside the "loop at table control" in the PAI of the screen flow... then the contents of each row on the screen will get passed into your logic a row at a time automatically and the "set cursor field" + "message e999(zz)" type code should work as it will refer to the current row being checked.
    Jonathan

  • Authentication Failed error message on browser while login to author instance

    Hi,
    I ran backup on author and publish instance after datastore garbage collector.
    It went fine on publish instance and created backup file succesfully.
    But at some point of time backup failed on author instance and we tried to login on author instance we got cq5 console on browser.
    After that we checked replication agent on author and wheni clicked to publish we got error page saying Class not found exception.
    after some time we just bounced the author instance we got startup completed message ver quickly and not started all the bundles(started only 121 bundles).
    Tried to login author instance on browser it was showing Authentication Failed message.
    Please helpout in resolving this issue.
    Thanks in Advance.
    Mahesh

    I did not really understand what the problem with the domain/hostname or so is you mentioned but lets set it aside and assume that it doesnt cause any further problems for now.
    About your questions:
    1) With which user do you try to login?
    "amadmin" is default name for the administrative user.
    Did you rename him or do you try to log in with another user?
    "amadmin" is probably the only user which "works" just after installing.
    When you go to portal/dt, are you logged in or are you on the anonymous desktop? If you did not make any changes you shold get either a login channel or a Userinfo channel.
    This way you should be able to see if you are logged in.
    Also important for you:
    Logfiles for access manager and portal are by default placed in the folder /var/opt/SUNWam/. There is a debug and logs folder.
    These loggings are most of the time more helpfull than the directory server logs.
    To get a finer logging edit the file /etc/opt/SUNWam/AMConfig.properties
    There is a line "...=error". Replace error with message and restart the webserver/appserver-domain.
    hth Chris

  • Export Custom List into Excel through custom Ribbon

    Hi i have a requirement, in that i need to export custom list into EXCEL through custom Ribbon. For Example in my list, i have Col1, Col2, Col3. Col3 has multiple values (allow mutiple values) and when export this into excel all values in Col3 should
    come as new rows and rest of the column values should duplicate. please helpout from this requirement.
    List View
    Col1   Col2      Col3
    v1        v2    v31,v32,v33
    Excel View
    Col1  Col2  Col3
    v1      v2      v31
    v1      v2      v32
    v1      v2      v33
    Nihath

    Hello Nihath,
    As per your description, you have to read each and every items in list with column value then only you can generate excel. There is direct way to export datatable to excel but in your case you will also need to iterate Col3 value to create new row in excel.
    I would suggest to use CAML query to get all items then check Col3 value. If there are multiple value then add them as new datatable row and finally export full datatable to excel.
    Here is link for CAML:
    http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spquery.listitemcollectionposition.aspx
    Export datatable to excel:
    http://stackoverflow.com/questions/12533626/export-datatable-to-excel
    Finally add this feature in ribbon:
    http://ankurmadaan.blogspot.in/2012/10/custom-ribbon-action-for-specific-list.html
    Hope it could help
    Hemendra:Yesterday is just a memory,Tomorrow we may never see
    Please remember to mark the replies as answers if they help and unmark them if they provide no help

  • Code group & selected sets

    Can anybody please tell me,
    Why & when it is necessary to maintain code group & selected sets. Where it is then use. What is releation between them.Will appreciate if explain with suitable example from industry. Please helpout.Newcomer in QM.

    HI
    code groups are used in Notifications and quality result parameters.
    Code groups are used to combine and structure codes within a catalog type
    code groups at client level to group codes that have the same contents or relate to one another, within a catalog type. Codes, that are assigned to a code group are also known as group codes.
    When you maintain the code group index, the system locks the required catalog type for other users. However, if you use the individual maintenance function, only the required code group is locked.
    these are can ot create by plant wise.
    1.when you have material which measures by means of color then you canhave code group color and codes of red ,black etc..
    2.if you have defect codes then you can mention them
    3.if you have problems of perticular part, then in notification by use of codegroups and codes you can enter the data.
    A selected set contains a combination of different codes at plant level, for example, coded descriptions of characteristic attributes (such as color, shape, surface characteristics), defect causes or usage decisions from different code groups.
    selected sets to combine codes from several code groups for processing that are allowed or useful for a particular application.
    Codes that are copied into a selected set are known as set codes.
    When you maintain the selected set index, the system locks the required catalog type for other users. However, if you use the individual maintenance function, only the required selected set is locked.
    4.with combinationof code and code groups you can create the selected sets , canbe used in Usage decission.(ex:aprroved, no approved,ok, not ok etc)
    Code groups are createsd by Qs41
    Logistics ® Quality management ® Quality planning ® Basic data ® Catalog ® Code group ® Edit
    Selected sets  are created by QS51
    Logistics ® Quality management ® Quality planning ® Basic data ® Catalog ® Selected set ® Edit
    -ashok

  • Problem in sorting the records

    Hi All,
    I have to sort some records based on a key. If the key field is optional then how to sort the records. For example consider the follwing records.
    <row>
          <name>jaya</name>
          <address>hyd</address>
          <material>d</material>
          <units>4</units>
          <price>6</price>
    </row>
      <row>
          <address>ss</address>
          <material>wd</material>
          <units>7</units>
          <price>9</price>
       </row>
    <row>
          <name>radha</name>
          <address>pune</address>
          <material>g</material>
          <units>9</units>
          <price>3</price>
    </row>
    Here name field is used as a key in sorting the records. in the second record name field does'nt exists. All the records that doesnt have the name field shud come on the top and the rest with name field shud come sorted.
    Can anyone please helpout how to solve this problem??

    Jhansi,
    Did u solved the issue? The scenario is lil bit complicated, please consider my below suggestion, if you haven't achieved your results.
    I must really thankful to Michal and all my SDN friends,who guided me to use the logic-using multiple Mapping program in one Interface mapping.
    /people/michal.krawczyk2/blog/2005/11/01/xi-xml-node-into-a-string-with-graphical-mapping
    Ok, let us come to the logic.
    For your problem we need to use two mapping programs.
    <b>Mapping Program 1</b>
    http://www.flickr.com/photo_zoom.gne?id=897495319&size=o
    <b>Mapping Program 2</b>
    http://www.flickr.com/photo_zoom.gne?id=897495327&size=o
    http://www.flickr.com/photo_zoom.gne?id=897495341&size=o
    <b>UDF1 - Testing</b>
    http://www.flickr.com/photo_zoom.gne?id=897495429&size=o
    String temp;
    for(int i=0;i<Name.length;i++)
    for(int j=i1;j<Name.length;j+)
    if(Name<b>[</b>i<b>]</b>.compareToIgnoreCase(Name[j])>0)
               temp = Name<b>[</b>i<b>]</b>;
                Name<b>[</b>i<b>]</b>= Name[j];
                Name[j]=temp;
    for(int i=0;i<Name.length;i++)
    if(Name<b>[</b>i<b>]</b>.equals("0"))
    result.addSuppress();
    result.addContextChange();
    else
    result.addValue(""Name<b>[</b>i<b>]</b>"");
    result.addContextChange();
    <b>UDF 2 - Testin1</b>
    http://www.flickr.com/photo_zoom.gne?id=897495437&size=o
    String temp,temp1;
    for(int i=0;i<Name.length;i++)
    for(int j=i1;j<Name.length;j+)
    if(Name<b>[</b>i<b>]</b>.compareToIgnoreCase(Name[j])>0)
               temp = Name<b>[</b>i<b>]</b>;
                Name<b>[</b>i<b>]</b>= Name[j];
                Name[j]=temp;
          temp = Values<b>[</b>i<b>]</b>;
                Values<b>[</b>i<b>]</b>= Values[j];
                Values[j]=temp;
    for(int i=0;i<Values.length;i++)
    result.addValue(""Values<b>[</b>i<b>]</b>"");
    result.addContextChange();
    <b>Interface Mapping</b>
    http://www.flickr.com/photo_zoom.gne?id=897495361&size=o
    <b>Finally -Results:</b>
    http://www.flickr.com/photo_zoom.gne?id=897498639&size=o (My Data)
    http://www.flickr.com/photo_zoom.gne?id=897498659&size=o (Your Data)
    I hope it helps you!!!!
    I don't know whether this is the correct way or any other simplest way to do so. Also I request our friends to feedback their inpute regarding this logic.
    Jhansi,if you have any doubts in achieving the same, kindly reply back.
    Best regards,
    raj.

  • Not linked tot he Event

    Hi friends,
    I am facing a problem in triggering the event.
    My problem is " When a form is created in the EP and when the SUBMIT button is clicked i am calling a RFC in which i am using the function module "SWE_EVENT_CREATE" where the exporting parameter are the business object 'YBUS1065' objectkey 'EMPPERNR' and the event 'POSITION CHANGED'.
    Using this RFC call only my event is going to get triggered. I have done my worflow setting in "SWE2" and i execute the workflow but i cant see the even log in my "SWEL".
    When i diagonis the workflow in "SWUD" it says that "NOT LINKED TO THE EVENT".
    i dont know where i made the error. Please helpout it is very urgent issue.
    regrds
    Balaji

    hi Gareth,
    i send you the code what i written in the RFC, and give me some suggestions.
    MY CODE
    FUNCTION Z_WF_TRIGGER_SEVERANCE1.
    ""Local Interface:
    *"  IMPORTING
    *"     VALUE(EMPPERNR) TYPE  RP50G-PERNR
    TABLES ZSEVERANCE.
    TYPES: BEGIN OF ITSEVERANCE,
            MANDT TYPE MANDT,
            EMPPERNR TYPE PERSNO,
            MESP TYPE ZNUMC,
            MEBC TYPE ZNUMC,
            OUTPLALEVEL TYPE ZNUMC,
            CSD TYPE ZCSD,
            COMMENTS TYPE ZCOMM,
            END OF ITSEVERANCE.
    *DATA: SEVERANCE TYPE STANDARD TABLE OF ZSEVERANCE  WITH HEADER LINE.
    DATA : event type SWEDUMEVID-EVTID.
    *DATA: EMPPERNR TYPE  SWEINSTCOU-OBJKEY.
    *SEVERANCE-MANDT = SY-MANDT.
    *SEVERANCE-EMPPERNR = EMPPERNR.
    *SEVERANCE-MESP = MESP.
    *SEVERANCE-MEBC = MEBC.
    *SEVERANCE-OUTPLALEVEL = OUTPLALEVEL.
    *SEVERANCE-CSD = CSD.
    *SEVERANCE-INITIATOR = SY-UNAME.
    *SEVERANCE-COMMENTS = COMMENTS.
    *APPEND SEVERANCE.
    *MODIFY ZSEVERANCE FROM SEVERANCE.
      CALL FUNCTION 'SWE_EVENT_CREATE'
        EXPORTING
          OBJTYPE                       = 'BUS1065'
          OBJKEY                        =  'EMPPERNR'
          EVENT                         = 'POSITIONCHANGED'
       CREATOR                       = ' '
       TAKE_WORKITEM_REQUESTER       = ' '
       START_WITH_DELAY              = ' '
       START_RECFB_SYNCHRON          = ' '
       NO_COMMIT_FOR_QUEUE           = ' '
       DEBUG_FLAG                    = ' '
       NO_LOGGING                    = ' '
       IDENT                         =
    IMPORTING
       EVENT_ID                       =
    TABLES
       EVENT_CONTAINER               =
    EXCEPTIONS
       OBJTYPE_NOT_FOUND             = 1
       OTHERS                        = 2
      IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      WAIT          =
    IMPORTING
      RETURN        =
    commit work.
    Regards
    Balaji

  • Why does my ipad say 10.6 gig used and 2.2 available

    Why does my ipad air say 10.6 GB used and 2.2 GIG available when its a 16 Gig ipad. Cant figure it out. please help

    Out of the box, your iPad only had about 13.5GB of available space.
    There are several factors that affect the amount of storage space on an iPad. First is the true amount of space on a hard drive. There is a math difference in how companies spec hard drive size and the true amount of available space. Second the iPad has some pre-installed apps that take up space. My 16GB iPad 2 started out with only 13.5GB of available space.
    Why my new iPad’s storage doesn’t add up
    http://reviews.cnet.com/8301-31747_7-57404587-243/why-my-new-ipads-storage-doesn t-add-up/
    How OS X and iOS report storage capacity
    http://support.apple.com/kb/TS2419
     Cheers, Tom

  • Available capacity

    Hi PP Experts,
    Can anybody please explain me,
    What is difference between Standard Available capacity,Available capacity & Pooled capacity.
    Please explain with giving simple example if possible.Don't define.Please helpout.
    Edited by: Raja S on Oct 17, 2008 8:11 AM

    Dear,
    We assign the Standard available capacity at capacity header (capacity view)of Workcenter (CR02).
    In the work centre - capacity header overview give the following data in std available capacity sub heading
    start :08:00:00
    Finish:12:00:00
    break:00:00:00
    Capacity utlization - 100
    No of ind capacity = 1
    Hence the capacity of 16 hrs is fixed for this WC. This your standard avilable capacity.
    OP37 Maintain Available Capacity Version
    You can use it as Normal available capacity or maxnium avilable capacity. The active version of available capacity is used as a basis for scheduling.
    Pooled capacity is nothing but an available capacity that can be used by several work centers.
    An example of a pooled capacity is a group of setup personnel who perform setups for many work centers.
    Pooled capacity
    A pooled capacity can be assigned to several work centers. It is created and edited independently of the work center. This is useful if, for instance, a group of employees works in several work centers.
    Capacities can be entered and changed in work centers, but also independently. The system distinguishes between.
    For working with CR11 ,I think first the pooled capacity should be included in SPRO.
    Just check out in SPRO-Production -BAsic Data-Work center-Capacity Planning-Define Capacity categories
    Hope clears to you.
    Regards,
    R.Brahmankar

Maybe you are looking for