• Mitch McConnell
  • NEWBIE
  • 60 Points
  • Member since 2014

  • Chatter
    Feed
  • 0
    Best Answers
  • 2
    Likes Received
  • 0
    Likes Given
  • 14
    Questions
  • 12
    Replies

I have an external script in Python that is taking exception to (ahem) an embedded 0xa0 in a Salesforce
custom object text string.

I understand the various ways that I can handle this in the script, but my question is more about "how does
this non-ASCII character get in the string?  I would not expect one to be able to do it via the keyboard (and
I do not think this has been done on purpose.     If you look at the data in a hex editor, it simply looks like 

36 2e 32 20 72 65 6c 65 61 73 65 23 20 a0 41 64       6.2 release.  . Ad

So you cannot "see" the 0xa0 in the GUI.

Any ideas?
 

I am reviewing some code that I inherited  :-)

It uses a "before" trigger as follows.  It is trying to take a variable from the Quote and
copy it to the OpportunityLineItem.

trigger OpportunityProductTrigger on OpportunityLineItem (before insert, before update) {

    if(Trigger.isBefore){
        OpportunityProductServices.addParentSortOrderNumber(trigger.new);
    }
    
}



The method being called is as follows:
 
public class OpportunityProductServices{

    // Populating Base OpportunityLine Item's Sort Order number on Add-on OLI's 
    public static void addParentSortOrderNumber(List<OpportunityLineItem> lst_OLI){
    
        Set<String> set_OpportunityIds = new Set<String>(); // Creating Set of Opportunity Ids for which Opportunity Lineitem is created or updated
        for(OpportunityLineItem var : lst_OLI){
            set_OpportunityIds.add(var.OpportunityId);
        }
        
        Map<Id, Map<Id, QuoteLineItem>> map_Opprtunity2Quote = new Map<Id, Map<Id, QuoteLineItem>>();
        // Getting List of QLI for Opportunity ids which has Quote Quote Synced
        for(QuoteLineItem var : [Select Id, SortOrder, Base_OLI_Id__c, Quote.OpportunityId 
                                from QuoteLineItem WHERE Quote.isSyncing=true and 
                                Quote.OpportunityId IN : set_OpportunityIds]){
            if(map_Opprtunity2Quote.containsKey(var.Quote.OpportunityId)){
                map_Opprtunity2Quote.get(var.Quote.OpportunityId).put(var.Id, var);
            }else{
                Map<Id, QuoteLineItem> map_QuoteLine = new Map<Id, QuoteLineItem>();
                map_QuoteLine.put(var.Id, var);
                map_Opprtunity2Quote.put(var.Quote.OpportunityId, map_QuoteLine);
            }
        }
        for(OpportunityLineItem var : lst_OLI){
            Map<Id, QuoteLineItem> map_QuoteLine = map_Opprtunity2Quote.get(var.OpportunityId);
            for(QuoteLineItem QLI : map_QuoteLine.values()){
                // Putting Sort Number on Custom Field of OLI
                if(var.SortOrder == QLI.SortOrder && QLI.Base_OLI_Id__c != null){
                    var.Base_OLI_Sort_Number__c =  map_QuoteLine.get(QLI.Base_OLI_Id__c).sortOrder;  
                }
            }            
        }
    }

}


My question is this:

Since there are no DML operations being performed in the called method, does this
code *do* anything?

Is the "trigger.new" that is passed in directly from the trigger to the method passed by reference, and 
therefore setting Base_OLI_Sort_Number__c actually sets it somehow?

Thanks,

Mitch
 

I have a validation rule for Quote Line Items that says they cannot be edited if the Quote is synced..  If I edit one individually,
I get the error message at the top of the page, as expected.  But if I hit the "Edit All" button and make a change, the Save
button does not accept the change, i.e., it appears the rule is firing, but the error message does not display on the screen
anywhere.  I tried this in both Chome and IE, so it is not obviously a browser issue.  

Has anyone seen this before, and can you give me any advice?

Thanks,

Mitch

Hello all,

I have a batch job using SOA that calls out to an internal (in-house) application.  It has been working
for quite a long time, but recently we started seeing some batches (not all) get a System.CalloutException
as follows:

06:06:00.443 (14443246995)|EXCEPTION_THROWN|[107]|System.CalloutException: Web service callout failed: WebService returned a SOAP Fault: [WliSbTransports:381304]Exception in HttpOutboundMessageContext.RetrieveHttpResponseWork.run: java.net.SocketTimeoutException
java.net.SocketTimeoutException
    at weblogic.net.http.AsyncResponseHandler$MuxableSocketHTTPAsyncResponse$SocketTimeoutNotification.<clinit>(AsyncResponseHandler.java:551)
    at weblogic.net.http.AsyncResponseHandler$MuxableSocketHTTPAsyncResponse.handleTimeout(AsyncResponseHandler.java:396)
    at weblogic.net.http.AsyncResponseHandler$MuxableSocketHTTPAsyncResponse.timeout(AsyncResponseHandler.java:502)
    at weblogic.socket.SSLFilterImpl.timeout(SSLFilterImpl.java:282)
    at weblogic.socket.SocketMuxer$TimerListenerImpl.timerExpired(SocketMuxer.java:985)
    at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:273)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
 faultcode=BEA-380000 faultactor=

Here are the relevant debug log entries:
>>>> this shows the configured (via a custom setting) max timeout of 2 minutes (right?)
06:05:46.0 (197739069)|USER_DEBUG|[252]|DEBUG|(doCallout) endpoint: https://soa-app.tpa.bhn.net:8110/ConstInt/CarlInfo?wsdl, timeout: 120000
>>>> this is the last entry before the synchronous callout
06:05:46.0 (439200493)|CALLOUT_REQUEST|[107]|getCarlInfo:[apex_schema_type_info=(carl.bhntampa.com, false, false), carlIds=307141, 308773, 309197, 308791, 326971, 294926, 316435, 326760, 327228, 314680, 314489, 317260, 299892, 312385, 309598, 301140, 283894, 316860, 327205, 306558, 315239, 187167, 283499, 366190, 314846, 314204, 314218, 298740, 317291, 314966, 367312, 317912, 366192, 366885, 285552, 309794, 313714, 285551, 309799, 285556, 335527, 282875, 367483, 309792, 285555, 367206, 307672, 309793, 313710, 318240, 301444, 310414, 317464, 291091, 305452, 316534, 369654, 317681, 367509, 316826, 363161, 318429, 308501, 315622, 357571, 318474, 318445, 276556, 316827, 367554, 317563, 367617, 367639, 361574, 304283, 367622, 367684, 318688, 367635, 316824, 367620, 305672, 318690, 363247, 316680, 318839, 367338, 318272, 318635, 304198, 318943, 311999, 286633, 313896, 313898, 338556, 316599, 307264, 318066, 326252, 359683, 318040, 318488, 319218, 315600, 319380, 319216, 334011, 318720, 318877, 327051, 318686, 314722, 274227, 316562, 318408, 319368, 315057, 319425, 316158, 290370, 318412, 310072, 313894, 309139, 343561, 318838, 380595, 319627, 313901, 313893, 313897, 327385, 313892, 305756, 311043, 315546, 298078, 327341, 294253, 319733, 318522, 314642, 318990, 274475, 307625, 294247, 294662, 282970, 294242, 294249, 314551, 288192, 275062, 318989, 319863, 311041, 318991, 300342, 319962, 319864, 318911, 319822, 318144, 33333, 362321, 358863, 320091, 298431, 321948, 320118, 351615, 359145, 317533, 327439, 362110, 321945, 316868, 360864, 364416, 321947, 327486, 373387, 327507, 319135, 286913, 319805, 339553, 320244, 317938, 318977, 368429, 368203, 364806, 313374, 318067, 327363, 320301, 319945, carlIds_type_info=(carlIds, carl.bhntampa.com, null, 1, 1, false), field_order_type_info=(carlIds)]::SOAPAction="" Accept=text/xml User-Agent=SFDC-Callout/36.0 SFDC_STACK_DEPTH=1 Content-Type=text/xml; charset=UTF-8 

>>>> here is the next entry, which occurs not 2 minutes later, but about 14 seconds later
06:06:00.443 (14443246995)|EXCEPTION_THROWN|[107]|System.CalloutException: Web service callout failed: WebService returned a SOAP Fault: [WliSbTransports:381304]Exception in HttpOutboundMessageContext.RetrieveHttpResponseWork.run: java.net.SocketTimeoutException

What am I missing here?   I started with the assumption that the server I am calling is not keeping up, and that that is the reason for the timeout.  But the developer tells me he sees these being responded to in at most 10-12 seconds... s

So my real question is:
1.  Is it possible that something in our SOA middleware is throwing this exception, and not Salesforce?

Thanks,

Mitch
 

I am at my wit's end.  I am trying to increase our code coverage for a custom controller extension, and cannot seem to get it to work at all.   The controller class contains several internal classes that are used to manage its data representation.   What I mean is that although my test class clearly instantiates the controller (and passes), when I look at what that does, it shows the internal class as not being covered at all, even when by inspection you can see that it would be.

Also, the developer console (yes, I know it is awful, but that is the tool we have) doesn't update even when I add a line of code to the test that clearly executes a statement (in this case, just an assignment).

Has anyone else seen this type of behavior?  

I had generated code from my wsdl file, but subsequently refreshed my sandbox and 
lost it (!).  I have the original generated code.  My question is, can I simply bring over
that class as a new Apex class, or is there some reason I need to re-generated it
from scratch from the actual wsdl file on the refreshed sandbox?

Thanks,

mitch
 

We have a button on the Opportunity page that does some Javascript validation, mostly pretty
basic stuff, like which profiles have access, no duplicates, etc.  The Javascript simply puts
up an Alert box if one of the errors is detected.

I would still like to be able to automate tests for these conditions, but the normal way I have done
this in the past was to catch an exception and test the error message.

Clearly, this will not work for this type of Javascript validation.  

Is there any way I can call something like 'addError' from Javascript?  I Googled and have not
been able to find a way to set an error that my Apex test class could detect.

Thanks,

Mitch

Is there any way to 

I know there are many answers to the "too many" part of this question, and I understand the reason and the normally suggested solutions.  
But I believe I see this behavior change even running the same test on different occasions, i.e., with no code changes sometimes it will get this error, and sometimes not.

Does this seem possible?  Has anyone else experienced this?

And yes, I have (many times) tried most of the suggested solutions....  so this is more of a "is this really possible?" question.​
 

We have two batch jobs that run just after midnight. When I run it manually via the Developer Console Anonymous window, they run fine. But last night, the "Apex Jobs" window showed that they failed. The Status states:
               Completed First error: Attempt to de-reference a null object
Now I know what that means, but I have no information to debug it. As I said, when I run it manually I can turn on the debug logs, but it does not fail.

It seems odd that there is no "master error log" where I can see more about what happened... or is there?scheduled-apex
We are struggling with setting up our development environment.  We have SF Enterprise Edition, with on Full Sandbox.  Most of our development has been done by outside contractors, but we are going to be doing more in-house going forward.  That being said, however, we still have several big projects that are planned to be done externally.

We are using BigMachines (BMX Basic, Config, and Pricing), and , and find that we cannot do any real work in a Developer Sandbox because we need that data for our application.   I am familiar with the general concept of copying data by using a combination of Apex DataLoader and external IDs.  But it seems way more complicated than it should be to simply get this data copied over to another sandbox... normally I would not want to have to create custom fields throughout BMX's objects just to do this.

So my question is really about Partial Data sandboxes and SF Sandbox templates.  I have not been able to find many, if any, examples online where people seem to be using the Partial Data ones.

First, Is this because most big companies just purchase extra Full Data sandboxes for this type of multi-developer setup?

Second, am I correct that a Partial Data sandbox created via a template *would* allow us to select all of the BMX objects plus their data to be part of a new (say) Developer Pro sandbox?

Thanks,

Mitch
I get how SVN can be used to share and merge files that developers in a team are working on.  But I would like to hear how people manage forced updates to a developer sandbox when some other change has been made to production.

For example, I have my Dev1 sandbox that I am working on, with many changes.

A 3rd party consulting company pushes a bunch of new features to production, some of which may impact my changes.

What do people do in this case?  In Eclipse, I can clearly have two projects, one that is my Dev1 and the other production.  How do they use Eclipse and SVN to manage merging these two code bases?



I am just starting to work on our SF implementation that already contains quite a bit of Apex code,

and I need to add some more.

I was getting errors on my test cases for my trigger, and I noticed that the existing

Opportunity Trigger tests, although they have 100% coverage, 50% of them fail!

Will SF allow code to be pushed as long as it meets the 75% metric, even though

the tests fail?

Thanks,

Mitch

I am running Eclipse Kepler with the Force.com IDE installed.  When I try and create a new SF project for a sandbox, it bypasses the "Choose Initial Project Components" screen, and all I can do is hit "Finish".  When this is done, it shows me *some* things, but not all of the classes and objects I need.  We are running Enterprise version 31.

I have done this before, but I think it was an older version of Eclipse. 

Can anyone explain why I am not getting to choose to load all components in my sandbox project?

Thanks,

Mitch
I am running the Force.com IDE in Eclipse (Kepler).

When I try and create a SOQL query, it is not resolving the relationships correctly.

For example, when I run this simple query:

      select Id, Account.Name from Opportunity

It returns rows like this

Id                                                      Name                                              Account
003i000000IugISAAZ                   Fred Roberts                                 Account
003i000000Iug04AAJ                  Bob Smith                                      Account

In other words, it does not show the Account name, but just the word "Account".

When I run this in the developer console, it is correct.

Is there some type of misconfiguration in my IDE setup?

Thanks,

Mitch

Hello all,

I have a batch job using SOA that calls out to an internal (in-house) application.  It has been working
for quite a long time, but recently we started seeing some batches (not all) get a System.CalloutException
as follows:

06:06:00.443 (14443246995)|EXCEPTION_THROWN|[107]|System.CalloutException: Web service callout failed: WebService returned a SOAP Fault: [WliSbTransports:381304]Exception in HttpOutboundMessageContext.RetrieveHttpResponseWork.run: java.net.SocketTimeoutException
java.net.SocketTimeoutException
    at weblogic.net.http.AsyncResponseHandler$MuxableSocketHTTPAsyncResponse$SocketTimeoutNotification.<clinit>(AsyncResponseHandler.java:551)
    at weblogic.net.http.AsyncResponseHandler$MuxableSocketHTTPAsyncResponse.handleTimeout(AsyncResponseHandler.java:396)
    at weblogic.net.http.AsyncResponseHandler$MuxableSocketHTTPAsyncResponse.timeout(AsyncResponseHandler.java:502)
    at weblogic.socket.SSLFilterImpl.timeout(SSLFilterImpl.java:282)
    at weblogic.socket.SocketMuxer$TimerListenerImpl.timerExpired(SocketMuxer.java:985)
    at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:273)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
 faultcode=BEA-380000 faultactor=

Here are the relevant debug log entries:
>>>> this shows the configured (via a custom setting) max timeout of 2 minutes (right?)
06:05:46.0 (197739069)|USER_DEBUG|[252]|DEBUG|(doCallout) endpoint: https://soa-app.tpa.bhn.net:8110/ConstInt/CarlInfo?wsdl, timeout: 120000
>>>> this is the last entry before the synchronous callout
06:05:46.0 (439200493)|CALLOUT_REQUEST|[107]|getCarlInfo:[apex_schema_type_info=(carl.bhntampa.com, false, false), carlIds=307141, 308773, 309197, 308791, 326971, 294926, 316435, 326760, 327228, 314680, 314489, 317260, 299892, 312385, 309598, 301140, 283894, 316860, 327205, 306558, 315239, 187167, 283499, 366190, 314846, 314204, 314218, 298740, 317291, 314966, 367312, 317912, 366192, 366885, 285552, 309794, 313714, 285551, 309799, 285556, 335527, 282875, 367483, 309792, 285555, 367206, 307672, 309793, 313710, 318240, 301444, 310414, 317464, 291091, 305452, 316534, 369654, 317681, 367509, 316826, 363161, 318429, 308501, 315622, 357571, 318474, 318445, 276556, 316827, 367554, 317563, 367617, 367639, 361574, 304283, 367622, 367684, 318688, 367635, 316824, 367620, 305672, 318690, 363247, 316680, 318839, 367338, 318272, 318635, 304198, 318943, 311999, 286633, 313896, 313898, 338556, 316599, 307264, 318066, 326252, 359683, 318040, 318488, 319218, 315600, 319380, 319216, 334011, 318720, 318877, 327051, 318686, 314722, 274227, 316562, 318408, 319368, 315057, 319425, 316158, 290370, 318412, 310072, 313894, 309139, 343561, 318838, 380595, 319627, 313901, 313893, 313897, 327385, 313892, 305756, 311043, 315546, 298078, 327341, 294253, 319733, 318522, 314642, 318990, 274475, 307625, 294247, 294662, 282970, 294242, 294249, 314551, 288192, 275062, 318989, 319863, 311041, 318991, 300342, 319962, 319864, 318911, 319822, 318144, 33333, 362321, 358863, 320091, 298431, 321948, 320118, 351615, 359145, 317533, 327439, 362110, 321945, 316868, 360864, 364416, 321947, 327486, 373387, 327507, 319135, 286913, 319805, 339553, 320244, 317938, 318977, 368429, 368203, 364806, 313374, 318067, 327363, 320301, 319945, carlIds_type_info=(carlIds, carl.bhntampa.com, null, 1, 1, false), field_order_type_info=(carlIds)]::SOAPAction="" Accept=text/xml User-Agent=SFDC-Callout/36.0 SFDC_STACK_DEPTH=1 Content-Type=text/xml; charset=UTF-8 

>>>> here is the next entry, which occurs not 2 minutes later, but about 14 seconds later
06:06:00.443 (14443246995)|EXCEPTION_THROWN|[107]|System.CalloutException: Web service callout failed: WebService returned a SOAP Fault: [WliSbTransports:381304]Exception in HttpOutboundMessageContext.RetrieveHttpResponseWork.run: java.net.SocketTimeoutException

What am I missing here?   I started with the assumption that the server I am calling is not keeping up, and that that is the reason for the timeout.  But the developer tells me he sees these being responded to in at most 10-12 seconds... s

So my real question is:
1.  Is it possible that something in our SOA middleware is throwing this exception, and not Salesforce?

Thanks,

Mitch
 

I am reviewing some code that I inherited  :-)

It uses a "before" trigger as follows.  It is trying to take a variable from the Quote and
copy it to the OpportunityLineItem.

trigger OpportunityProductTrigger on OpportunityLineItem (before insert, before update) {

    if(Trigger.isBefore){
        OpportunityProductServices.addParentSortOrderNumber(trigger.new);
    }
    
}



The method being called is as follows:
 
public class OpportunityProductServices{

    // Populating Base OpportunityLine Item's Sort Order number on Add-on OLI's 
    public static void addParentSortOrderNumber(List<OpportunityLineItem> lst_OLI){
    
        Set<String> set_OpportunityIds = new Set<String>(); // Creating Set of Opportunity Ids for which Opportunity Lineitem is created or updated
        for(OpportunityLineItem var : lst_OLI){
            set_OpportunityIds.add(var.OpportunityId);
        }
        
        Map<Id, Map<Id, QuoteLineItem>> map_Opprtunity2Quote = new Map<Id, Map<Id, QuoteLineItem>>();
        // Getting List of QLI for Opportunity ids which has Quote Quote Synced
        for(QuoteLineItem var : [Select Id, SortOrder, Base_OLI_Id__c, Quote.OpportunityId 
                                from QuoteLineItem WHERE Quote.isSyncing=true and 
                                Quote.OpportunityId IN : set_OpportunityIds]){
            if(map_Opprtunity2Quote.containsKey(var.Quote.OpportunityId)){
                map_Opprtunity2Quote.get(var.Quote.OpportunityId).put(var.Id, var);
            }else{
                Map<Id, QuoteLineItem> map_QuoteLine = new Map<Id, QuoteLineItem>();
                map_QuoteLine.put(var.Id, var);
                map_Opprtunity2Quote.put(var.Quote.OpportunityId, map_QuoteLine);
            }
        }
        for(OpportunityLineItem var : lst_OLI){
            Map<Id, QuoteLineItem> map_QuoteLine = map_Opprtunity2Quote.get(var.OpportunityId);
            for(QuoteLineItem QLI : map_QuoteLine.values()){
                // Putting Sort Number on Custom Field of OLI
                if(var.SortOrder == QLI.SortOrder && QLI.Base_OLI_Id__c != null){
                    var.Base_OLI_Sort_Number__c =  map_QuoteLine.get(QLI.Base_OLI_Id__c).sortOrder;  
                }
            }            
        }
    }

}


My question is this:

Since there are no DML operations being performed in the called method, does this
code *do* anything?

Is the "trigger.new" that is passed in directly from the trigger to the method passed by reference, and 
therefore setting Base_OLI_Sort_Number__c actually sets it somehow?

Thanks,

Mitch
 

I have a validation rule for Quote Line Items that says they cannot be edited if the Quote is synced..  If I edit one individually,
I get the error message at the top of the page, as expected.  But if I hit the "Edit All" button and make a change, the Save
button does not accept the change, i.e., it appears the rule is firing, but the error message does not display on the screen
anywhere.  I tried this in both Chome and IE, so it is not obviously a browser issue.  

Has anyone seen this before, and can you give me any advice?

Thanks,

Mitch

I am at my wit's end.  I am trying to increase our code coverage for a custom controller extension, and cannot seem to get it to work at all.   The controller class contains several internal classes that are used to manage its data representation.   What I mean is that although my test class clearly instantiates the controller (and passes), when I look at what that does, it shows the internal class as not being covered at all, even when by inspection you can see that it would be.

Also, the developer console (yes, I know it is awful, but that is the tool we have) doesn't update even when I add a line of code to the test that clearly executes a statement (in this case, just an assignment).

Has anyone else seen this type of behavior?  

I know there are many answers to the "too many" part of this question, and I understand the reason and the normally suggested solutions.  
But I believe I see this behavior change even running the same test on different occasions, i.e., with no code changes sometimes it will get this error, and sometimes not.

Does this seem possible?  Has anyone else experienced this?

And yes, I have (many times) tried most of the suggested solutions....  so this is more of a "is this really possible?" question.​
 

Hi EveryOne,
Are there any certain things where we will not be allowed to use @Future methods such as test classes,schedulable classes or some complex triggers and any situations that will not allow us to use @future method?  
I get how SVN can be used to share and merge files that developers in a team are working on.  But I would like to hear how people manage forced updates to a developer sandbox when some other change has been made to production.

For example, I have my Dev1 sandbox that I am working on, with many changes.

A 3rd party consulting company pushes a bunch of new features to production, some of which may impact my changes.

What do people do in this case?  In Eclipse, I can clearly have two projects, one that is my Dev1 and the other production.  How do they use Eclipse and SVN to manage merging these two code bases?



I am just starting to work on our SF implementation that already contains quite a bit of Apex code,

and I need to add some more.

I was getting errors on my test cases for my trigger, and I noticed that the existing

Opportunity Trigger tests, although they have 100% coverage, 50% of them fail!

Will SF allow code to be pushed as long as it meets the 75% metric, even though

the tests fail?

Thanks,

Mitch

I am running Eclipse Kepler with the Force.com IDE installed.  When I try and create a new SF project for a sandbox, it bypasses the "Choose Initial Project Components" screen, and all I can do is hit "Finish".  When this is done, it shows me *some* things, but not all of the classes and objects I need.  We are running Enterprise version 31.

I have done this before, but I think it was an older version of Eclipse. 

Can anyone explain why I am not getting to choose to load all components in my sandbox project?

Thanks,

Mitch
I am running the Force.com IDE in Eclipse (Kepler).

When I try and create a SOQL query, it is not resolving the relationships correctly.

For example, when I run this simple query:

      select Id, Account.Name from Opportunity

It returns rows like this

Id                                                      Name                                              Account
003i000000IugISAAZ                   Fred Roberts                                 Account
003i000000Iug04AAJ                  Bob Smith                                      Account

In other words, it does not show the Account name, but just the word "Account".

When I run this in the developer console, it is correct.

Is there some type of misconfiguration in my IDE setup?

Thanks,

Mitch